Sie müssen dies auf Ihrem Server überprüfen. Sie können dies nicht über den Anwendungscode tun, da Sie nicht wissen können, wann der Benutzer die Anwendung deinstalliert.
Siehe: Implementieren von kanonischen IDs. Referenz: https://developers.google.com/cloud-messaging/http#request
Eine kanonische Registrierungs-ID ist die ID der letzten von Ihrer Anwendung angeforderten Registrierung. Dies ist die ID, die der Server beim Senden von Nachrichten an das Gerät verwenden soll.
Wenn Sie später versuchen, eine Nachricht mit einer anderen Registrierungs-ID zu senden, wird GCM die Anfrage wie gewohnt bearbeiten, jedoch die kanonische Registrierungs-ID in das Feld registration_id der Antwort aufnehmen. Stellen Sie sicher, dass Sie die Registrierungs-ID, die auf Ihrem Server gespeichert ist, durch diese kanonische ID ersetzen, da die von Ihnen verwendete ID schließlich nicht mehr funktioniert.
Referenz: https://stuff.mit.edu/afs/sipb/project/android/docs/google/gcm/adv.html#canonical
Wenn die Canonical-ID nicht 0 ist, dann haben Sie eine doppelte Registrierung.
Sagen Sie zum Beispiel, haben Sie 2 Eintragungen in Ihrer Datenbank:
registration_A
registration_B
Wenn Sie eine Push-Benachrichtigung, Ihr Server senden wird mit etwas bekommen reagieren, die wie folgt aussieht:
{"multicast_id":########,"success":1,"failure":0,"canonical_ids":1,"results":
[{"registration_id":"new_id_registration_id","message_id":"0:########"}]}
{"multicast_id":######### ,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:################"}]}
Speichern Sie diese Daten in einem Array. Beachten Sie, dass der erste eine "canonical_ids" hat: 1. Dies bedeutet, dass es ein Duplikat gab. Um zu wissen, welcher Datensatz in Ihrer Datenbank der alte ist. Suchen Sie einfach nach "registration_id" und speichern Sie den Indexwert. Dieser Indexwert verweist auf den alten Datensatz in Ihrer Datenbank.
Im obigen Beispiel wäre registration_A die alte Registrierungs-ID.
Holen Sie sich alle Datensätze aus Ihrer Datenbank. Löschen Sie es dann basierend auf dem Indexwert, den Sie abgerufen haben. ODER Sie können es aktualisieren. Das hängt davon ab, wie Sie Ihre Datenbank einrichten.
Viel Glück!
habe mehr Informationen von: [wie man die Registrierung von GCM abbricht] (http://developer.android.com/guide/google/gcm/adv.html # unreg) –
Vielen Dank. Es ist eine tolle Information – Sakthimuthiah
Mehr Infos bei dieser SO Antwort: http://StackOverflow.com/A/28057615/3913366. –