La mia app utilizza gcm. Ogni volta che l'utente effettua l'accesso, il nuovo token gcm viene registrato e inviato al mio server di terze parti. Ogni volta che l'utente si disconnette, il token gcm non è registrato. Questo wok senza problemi.Invalidate tutti i token gcm
Il problema è che quando si tratta di test, tester può disinstallare l'app senza effettuare il logout, quindi installarla di nuovo e accedere a un altro account. Quindi riceverà due gcms da due account diversi. Ciò significa che riceverà gcms privati per account non attualmente registrati. Questo può accadere anche a volte con utenti live.
La documentazione GCM indica che i token gcm possono scadere a volte se l'applicazione viene disinstallata. In pratica, questo non succede mai.
http://developer.android.com/google/gcm/gcm.html
documentazione GCM afferma inoltre che è possibile annullare la registrazione di gettoni GCM eseguendo
Intent unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER");
unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
startService(unregIntent);
Ma questo metodo non sembra funzionare se lo provate dopo la reinstallazione. Ricevo callback che mi dice che il token non è registrato, ma il token gcm funziona ancora correttamente.
La mia domanda è: puoi assicurarti che non ci siano token gcm validi per la tua applicazione? Mi piacerebbe davvero annullare la registrazione di tutti i token esistenti durante l'avvio della prima applicazione o almeno ripristinarli dalle impostazioni del telefono.
Hey Alexey, che soluzione hai fatto per –
Ho fatto quello che ha suggerito Mohamed Hafez. Ho una tabella con ID utente e token gcm. Entrambi i campi sono unici. Quando ricevo un ID utente esistente con un nuovo token gcm, aggiorno il token gcm. Quando ricevo il token gcm esistente con un nuovo ID utente, aggiorno l'ID utente. Questo sembra coprire tutti i possibili casi d'angolo. – Alexey
Cosa succede se un utente ha effettuato l'accesso su due dispositivi. Temo che i due dispositivi non riceverebbero i messaggi gcm con questa soluzione. O mi sta sfuggendo qualcosa. –