Musisz to sprawdzić na swoim serwerze. Nie można tego zrobić z poziomu kodu aplikacji, ponieważ nie ma możliwości dowiedzenia się, kiedy użytkownik odinstalowuje aplikację.
Zobacz: Implementacja identyfikatorów Canonical. Odwołanie: https://developers.google.com/cloud-messaging/http#request
Kanoniczny identyfikator rejestracyjny jest identyfikatorem ostatniej rejestracji wymaganej przez aplikację. Jest to identyfikator, którego powinien używać serwer podczas wysyłania wiadomości do urządzenia.
Jeśli później spróbujesz wysłać wiadomość używając innego identyfikatora rejestracji, GCM rozpatrzy wniosek jak zwykle, ale będzie zawierać kanoniczną ID rejestracyjnego w polu registration_id odpowiedzi. Pamiętaj, aby zastąpić identyfikator rejestracji przechowywany na serwerze tym identyfikatorem kanonicznym, ponieważ w końcu identyfikator, którego używasz, przestanie działać.
referencyjny: https://stuff.mit.edu/afs/sipb/project/android/docs/google/gcm/adv.html#canonical
Jeśli Canonical ID nie jest równa 0, to masz duplikat rejestracji.
powiedzieć na przykład, masz 2 rejestracje w bazie danych:
registration_A
registration_B
Po wysłaniu powiadomienia push, serwer będzie reagować z czymś, co wygląda tak:
{"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:################"}]}
Zapisz te dane w tablicy. Zauważ, że pierwszy ma "canonical_ids": 1. Oznacza to, że był duplikat. Aby wiedzieć, który rekord w bazie danych jest stary. Po prostu wyszukaj "registration_id" w powyższym i zapisz wartość indeksu. Ta wartość indeksu wskazuje na stary rekord w bazie danych.
W powyższym przykładzie parametr registration_A byłby starym numerem rejestracyjnym.
Uzyskaj wszystkie rekordy z bazy danych. Następnie usuń go w oparciu o pobraną wartość indeksu. LUB możesz go zaktualizować. To zależy od konfiguracji bazy danych.
Powodzenia!
uzyskałem więcej informacji od: [jak wyrejestrować się z GCM] (http://developer.android.com/guide/google/gcm/adv.html # unreg) –
Dziękuję. Jest to niesamowita informacja. – Sakthimuthiah
Więcej informacji w odpowiedzi na to pytanie: http://stackoverflow.com/a/28057615/3913366. –