GCM Registrierung mit zwei unterschiedlichen Registrierungs-ids
Ich habe da ein kleines Problem mit den Geräte-Registrierung-management auf meinem client/server für push-Benachrichtigungen.
Problem
Das problem, dass ich habe ist, dass wenn ich die Anwendung deinstallieren und neu installieren Sie die Anwendung eine leere Zeichenfolge zurück, die für die Registrierungs-id ( GCMRegistrar.getRegistrationId(this)
), die ich re-registrieren Sie das Gerät mit meinem server. Das problem ist, dass ich einen neuen, verschiedenen Registrierungs-id (manchmal), und BEIDE ARBEITEN! Also ich weiß nicht, wie die server-Seite an, um zu wissen, ob es für das gleiche Gerät. Ich sollte auch beachten ich bin nicht ändern Sie die version der Anwendung. Müssen änderungen an der manifest-trigger eine neue Registrierungs-id ausgestellt werden?
Auf der Android-Seite, ich Tue das folgende:
/** * Register, die diese android-Gerät mit GCM */ private void registerDeviceWithGCM() { GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); String Registrierungs-id = GCMRegistrar.getRegistrationId(this); wenn (Registrierungs-id.equals("")) { log.debug("Registrieren der Anwendung mit GCM"); GCMRegistrar.register(this, ApplicationData.SENDER_ID); } else { log.debug("Bereits registriert:" + Registrierungs-id); deviceRegistrationService.updateServerRegistrationData(dieser, Registrierungs-id); } }
In meinem GCMIntentService.java
ich Folgendes tun:
/** * Bedingung für die Auslösung neuer Geräte-Registrierung und-updates die Registrierung info mit dem server * * @param context Kontext erhielt von * @param spiegeladapter Gerät die Registrierungs-id */ @Override protected void onRegistered(Context context, String Registrierungs-id) { Log.d(TAG, "Registrierung:" + Registrierungs-id); Intent intent = new Intent(RegistrationReceiver.REGISTRATION_INTENT); Absicht.putExtra(RegistrationReceiver.REGISTRATION_ID, Registrierungs-id); Kontext.sendBroadcast(intent); }
In meinem RegistrationReceiver.java
habe ich Folgendes:
/** * Löst das Gerät die Registrierung mit cirrus * * @param context unbenutzt * @param Absicht verwendet, um Registrierungs-id */ @Override public void handleReceive(Context context, Intent intent) { log.debug("Empfangen, die Registrierung mit der Absicht der Aktion:" + Vorsatz.getAction()); if (intent.getAction().equals(REGISTRATION_INTENT)) { String Registrierungs-id = Vorsatz.getStringExtra(REGISTRATION_ID); log.debug("Empfangen der Registrierung Vorsatz mit Registrierungs-id:" + Registrierungs-id); deviceRegistrationService.updateServerRegistrationData(loginActivity, Registrierungs-id); } else if (intent.getAction().equals(REGISTRATION_FAILED_INTENT)) { log.debug("Received Registrierung fehlgeschlagen Absicht, die Anzeige von Fehler-Nachricht"); showRegistrationFailedMessage(Vorsatz); } }
Wieder, das problem hier ist, dass ich zwei oder mehrere Registrierungs-id ist, dass alle arbeiten (es wäre kein problem, wenn ich die alte einfach nicht funktioniert, wenn Sie versuchen, eine Nachricht vom server, da kann ich einfach sauber,).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manchmal Google ändert die Registrierungs-ID ein, und Sie haben mehrere IDs verbunden. Der server sendet die Meldung (Ihre server) zu aktualisieren, die Datenbank mit der neuen ID.
Für weitere Informationen überprüfen Sie das Dokument:
http://developer.android.com/google/gcm/adv.html
Sagt: