Devi controllare questo sul tuo server. Non puoi farlo dal codice dell'applicazione poiché non c'è modo di sapere quando l'utente sta disinstallando l'applicazione.
Vedere: Implementare ID Canonical. Riferimento: https://developers.google.com/cloud-messaging/http#request
Un ID di registrazione canonico è definito come l'ID dell'ultima registrazione richiesta dall'applicazione. Questo è l'ID che il server deve utilizzare quando invia messaggi al dispositivo.
Se in seguito si tenta di inviare un messaggio utilizzando un ID di registrazione diverso, GCM elaborerà la richiesta normalmente, ma includerà l'ID di registrazione canonica nel campo registration_id della risposta. Assicurati di sostituire l'ID di registrazione memorizzato nel tuo server con questo ID canonico, in quanto l'ID che stai utilizzando smetterà di funzionare.
Riferimento: https://stuff.mit.edu/afs/sipb/project/android/docs/google/gcm/adv.html#canonical
Se l'ID Canonical non è 0, allora avete una registrazione duplicato.
Dire per esempio, si hanno 2 registrazioni nel database:
registration_A
registration_B
Quando si invia una notifica push, il server otterrà rispondere con qualcosa che assomiglia a questo:
{"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:################"}]}
Archiviare questi dati in un array. Si noti che il primo ha un "canonical_ids": 1. Questo significa che c'era un duplicato. Quindi, per sapere quale record nel database è quello vecchio. Basta cercare "registration_id" nel precedente e salvare il valore dell'indice. Questo valore indice punta al vecchio record nel database.
Nell'esempio precedente, registration_A sarebbe il vecchio registration_id.
Ottieni tutti i record dal tuo database. Quindi eliminalo in base al valore dell'indice che hai recuperato. O puoi aggiornarlo. Dipende da come si imposta il database.
Buona fortuna!
ha ottenuto più informazioni da: [come annullare la registrazione da GCM] (http://developer.android.com/guide/google/gcm/adv.html # unreg) –
Grazie. È una splendida informazione – Sakthimuthiah
Maggiori informazioni a questa risposta SO: http://stackoverflow.com/a/28057615/3913366. –