24

Sono nuovo a Firebase Lo sto imparando come un bambino che impara a camminare. Finora sono riuscito a inviare un messaggio al mio telefono utilizzando un token generato per il mio telefono dal framework Firebase. Ora qui è dove diventa complicato (secondo me). C'è un metodo chiamato onTokenRefresh() nel servizio esteso FirebaseInstanceIdService. Dal momento che si chiama aggiorna, Allora suppongo che cambierà. Voglio sapere quando viene creato questo token e quando verrà modificato?In quale periodo cambia il token dell'app di Firebase e come gestirlo?

E se cambia, supponiamo di inviare un messaggio a un dispositivo con token 'A' che è offline per ora, quindi verrà messo in coda. Ora quando il dispositivo diventa online, "aggiorna" il token a "B". Ora che il messaggio doveva essere consegnato al token "A", il messaggio non verrà mai consegnato. Come posso gestire questa situazione?

risposta

35

Il token viene generato, dopo che l'app viene avviata, non appena il telefono riesce a connettersi ai server di Google. A causa della connettività richiesta, ciò potrebbe non avvenire immediatamente, ma nella maggior parte dei casi avverrà in pochi secondi dopo che l'utente ha aperto l'app. Non appena viene generato il token, viene chiamato il metodo onTokenRefresh().

Come indicato il token può cambiare, nel qual caso verrà richiamato il metodo onTokenRefresh().
L'evento di aggiornamento è in qualche modo raro, non aspettatevi di vederlo spesso.

Quando si verifica il token di aggiornamento, tutti i messaggi che sono stati inviati "correttamente" (l'API ha restituito un ID messaggio) al vecchio token verranno consegnati.

Infine, anche dopo l'aggiornamento, il vecchio token funzionerà ancora per un breve periodo, per consentire all'app di comunicare il nuovo token al suo back-end.

+0

Grazie per la risposta completa – roostaamir

+3

Desidero memorizzare il token FCM nella mia tabella utente dell'app Android nel database quando l'utente si registra all'app. Quando voglio inviare una notifica a un utente specifico, recupererò Token dalla riga corrispondente e invierò notifica push. Ma sono confuso che ogni volta che l'utente app disconnette dalla sua app e registra un nuovo account dallo stesso dispositivo, allora ci saranno due righe e quindi due token per lo stesso dispositivo sul database. Come gestire questo caso? Che cosa succede al vecchio token nel dispositivo? per favore qualcuno può aiutarmi ?? –

+0

la risposta breve è che è necessaria una certa logica per gestire questa situazione e probabilmente è necessario progettare il database per supportare tale logica in modo efficiente. Scusa se non vado nei dettagli, ma la risposta completa sarebbe davvero lunga qui. –

15

All'avvio iniziale della tua app, il sdk di FCM genera il token di registrazione per l'istanza dell'app client. Come detto sopra, è un evento raro. Per essere specifico, il token di registrazione può cambiare quando:

  • L'app elimina l'ID di istanza.
  • L'applicazione viene ripristinato su un nuovo dispositivo
  • La disinstallazione utente/reinstallare l'app
  • L'utente cancella i dati delle app.

ID istanza fornisce un ID univoco per ogni istanza del vostro ID apps.Instance fornisce una semplice API per generare token di sicurezza che autorizzano a terzi di accedere al lato server della tua applicazione server gestito resources.The ID istanza può anche dirvi quando L'ultimo dispositivo utilizzato è stato installato sul dispositivo su cui è stata installata l'app. Possiamo decidere se mantenere i dati dall'app o inviare un messaggio push per coinvolgere nuovamente gli utenti.

Ogni volta che il token dispositivo viene modificata, si riflette nel onTokenRefresh() metodo.Per ottenere il token dispositivo quando è cambiata, possiamo chiamare questo metodo per ottenere il token rinfrescato.

e per ottenere il token dispositivo in qualsiasi momento possiamo utilizzare FirebaseInstanceId.getInstance(). ControllaToken() metodo per ottenere il dispositivo corrente token.It prende un po 'di tempo per ottenere il token dispositivo.

Fare clic su here per ulteriori informazioni sull'accesso al token di registrazione del dispositivo.