Ich habe GCM in mein Projekt mit den Richtlinien von https://developers.google.com implementiert.Keine Benachrichtigung, wenn das Geräte-Token im Hintergrund aktualisiert wird
Schritte, die ich nehmen muss, sind:
Für Geräte Token Empfang:
-> Klasse
GCMRegistrationIntentService
dieIntentService
und es beginnt von meinem mainActivity erstreckt.-> In diesem Dienst habe ich verwendet:
InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); token = instanceID.getToken(AppConstants.SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
ich das Token erfolgreich erhalten haben.
LocalBroadcastListener in meiner Haupttätigkeit, um das Token zu erhalten, das in Schritt 1 erzeugt wurde, und es in geteilter Präferenz zu speichern (auch an meine Nachricht Server senden).
Klasse
GCMTokenRefreshListenerService
, dieInstanceIDListenerService
erweitert, um das Token zu erhalten, falls alte abgelaufen ist.-> In dieser machte ich einen Aufruf an
GCMRegistrationIntentService
inonTokenRefresh()
Nun meine Fragen sind:
- In diesem Fall GCMTokenRefreshListenerService genannt werden?
- Was ist instanceID? Was ist der Lebenszyklus von instanceID?
lief ich den Dienst von Terminal:
./adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n package.name/service.name.
die jedes Mal gab mir neues Token. Wie speichere ich dieses neu generierte Token in meiner gemeinsamen Einstellung?
Wenn ich ein neues Token von diesem Dienst erhalte, erhalte ich keine Benachrichtigung, da mein Token geändert wird. Ich werde meine App öffnen müssen, um das Token zu aktualisieren. Wie aktualisiere ich dieses Token?
- Muss ich GCM jedes Mal anrufen, wenn meine App geöffnet wird, um das Token zu erhalten?
Jede behandelt werden Warum implementieren Sie nicht stattdessen die neuere Version ([FCM] (https://firebase.google.com/docs/cloud-messaging/))? –