2012-07-21 6 views
43

Ich weiß, dass C2DM-Registrierungen ablaufen, und Sie sollten die Registrierungs-ID regelmäßig aktualisieren. Ist das bei GCM der Fall? Wenn man sich den folgenden Code auf dem Android GCM Guide anschaut (siehe unten), sieht es so aus, als ob man es nur einmal macht und nicht auffrischen muss, aber ich sehe das nirgends explizit geschrieben, also wollte ich das nur überprüfen.Verfallen die GCM-Registrierungs-IDs?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

Ähnliche: http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

Antwort

41

EDIT: Diese Antwort DATUM WAY OUT ist, habe ich keine Ahnung, was das aktuelle Verhalten IST


ich die Antwort selbst gefunden. Sie müssen nicht immer die ganze Zeit neu registrieren, just once according to the example in the docs.

Auch im Gegensatz zu früheren Versionen von GCM und C2DM, Google selbst nicht aktualisieren Sie die Registrierung selbst jetzt: sobald Sie die Registrierungs-ID aus der erstmaligen Registrierung haben Sie gut zu gehen, außer für einen Fall : Sie müssen die Benutzer-Upgrades Sie noch neu registrieren, wenn auf eine neue Version (dieser Fall auch in dem Beispiel in dem obigen Link gehandhabt wird):

wenn eine Anwendung aktualisiert wird, soll es seine bestehende ungültig Registrierungs-ID, da mit der neuen Version nicht garantiert wird. Da keine Lebenszyklusmethode aufgerufen wird, wenn die Anwendung aktualisiert wird, ist die beste Möglichkeit, diese Validierung zu erreichen, indem die aktuelle Anwendungsversion gespeichert wird, wenn eine Registrierungs-ID gespeichert wird.

+0

Aber wie man Registrierung ID Mannn ????? –

+1

@AndroidKiller: Lesen Sie die Dokumentation: http://developer.android.com/google/gcm/index.html –

+0

hey @MohamedHafez.Ihr erster Absatz stammt von C2DM und nicht von GCM-Dokumentation, was (glaube ich) bedeutet, dass er nicht für GCM gilt. Dies macht Ihre Antwort ein wenig irreführend. Thx – AndroidGecko

10

Ich denke, dass es schließlich aktualisiert wird, ja. Aus den offiziellen Dokumenten:

Ein bestehendes Registrierungs-ID kann nicht mehr in einer Reihe von Szenarien gültig sein, einschließlich: Wenn der Antrag durch die Erteilung einer com.google.android.c2dm.intent.UNREGISTER Absicht manuell deregistriert. Wenn die Anwendung automatisch nicht registriert wird, kann dies passieren (ist aber nicht garantiert), wenn der Benutzer die Anwendung deinstalliert. Wenn die Registrierungs-ID abläuft. Google könnte die Registrierungs-IDs aktualisieren. In allen diesen Fällen sollten Sie diese Registrierungs-ID vom Server des Drittanbieters entfernen und sie nicht mehr zum Senden von Nachrichten verwenden. Tritt auf, wenn der Fehlercode NotRegistered lautet.

Dies in einer Anfrage an GCM von Ihrem 3rd-Party-Server passieren könnte, die eine JSON-Antwort mit dem Fehler nicht angemeldetes Gerät zurückgibt.

Sobald dies der Fall ist, liegt es an Ihnen, die entsprechenden IDs zu aktualisieren.

http://developer.android.com/guide/google/gcm/gcm.html

+0

So ist es zu speichern, nur zu prüfen, ob das Token hat geändert in meinem 'RegistrationIntentService'? Ich kann das Token in gemeinsamen Einstellungen speichern und jedes Mal prüfen, ob es sich geändert hat. – Zapnologica

Verwandte Themen