0

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:

  1. Für Geräte Token Empfang:

    -> Klasse GCMRegistrationIntentService die IntentService 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.

  2. 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).

  3. Klasse GCMTokenRefreshListenerService, die InstanceIDListenerService erweitert, um das Token zu erhalten, falls alte abgelaufen ist.

    -> In dieser machte ich einen Aufruf an GCMRegistrationIntentService in onTokenRefresh()

Nun meine Fragen sind:

  1. In diesem Fall GCMTokenRefreshListenerService genannt werden?
  2. Was ist instanceID? Was ist der Lebenszyklus von instanceID?
  3. 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?

  4. 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?

  5. Muss ich GCM jedes Mal anrufen, wenn meine App geöffnet wird, um das Token zu erhalten?
+0

Jede behandelt werden Warum implementieren Sie nicht stattdessen die neuere Version ([FCM] (https://firebase.google.com/docs/cloud-messaging/))? –

Antwort

3
  1. Sie müssen nicht nennen Ihre GCMTokenRefreshListenerService es automatisch von Android-System aufgerufen wird, wenn Ihr Token aktualisiert wird.

  2. Instanz-ID bietet eine eindeutige ID pro Instanz Ihrer Apps. Sie können mehr darüber finden here.

  3. Zuerst müssen Sie Ihren Dienst nicht ausführen, wie ich bereits sagte, er wird jedes Mal automatisch aufgerufen, wenn Ihr Token aktualisiert wird. Um das Token an Ihren Server zu senden, rufen Sie einen separaten Dienst an, z. B. RegistrationService. Um das Token in Ihrem SharedPreference zu speichern, können Sie das von Ihrem RegistrationService tun, sobald Sie Ihr Token erhalten haben.

  4. Sie erhalten keine Benachrichtigung in Ihrem GcmListenerService Dieser Dienst wird nur aufgerufen, wenn Ihr Server einige Daten über die Push-Benachrichtigung an Sie gesendet hat. Immer wenn Ihr Token geändert/aktualisiert wird, erhalten Sie einen Anruf in Ihrer onTokenRefresh() Methode. Sie sollten dann Ihren Server auf dieses neue Token aufmerksam machen, um Benachrichtigungen ordnungsgemäß unter Verwendung der RegistrationService zu empfangen. Und Sie müssen Ihre App nicht öffnen, um das aktualisierte Token zu erhalten.

  5. Nein, Sie müssen für Push-Benachrichtigung benötigt nicht aufrufen oder einen der Dienst starten Sie einfach den Dienst ordnungsgemäß in Ihrem Manifest Rest angeben müssen werden alle Dinge von Android-System

+0

Ordentlich erklärt. Gut gemacht. : D –

Verwandte Themen