Firebase Cloud Messaging: gestione dei token di registrazione

Sto cercando di implementare la messaggistica tra app mobili e browser utilizzando la messaggistica cloud Firebase e ho alcune domande, a cui i documenti non sembrano rispondere.

Per poter ricevere messaggi, è necessario un token di registrazione (RT). I messaggi possono essere inviati a un RT, a un argomento o a un gruppo di notification_key tasto_di notification_key . Il RT può anche essere utilizzato:

  • direttamente
  • per iscriversi a un argomento
  • da aggiungere a un gruppo di dispositivi

La RT può anche scadere / cambiare.

Nella mia app, sto mantenendo un elenco di RT per utente. Ora, quando la RT cambia:

  1. Devo annullare l’iscrizione al vecchio token e iscrivere il nuovo token agli argomenti?
  2. Devo rimuovere il vecchio token e aggiungere il nuovo token ai gruppi di dispositivi?
  3. È ansible ottenere informazioni sui gruppi di dispositivi / argomenti per un token?
  4. Posso aggiungere un token a un gruppo di dispositivi più di una volta?
  5. Posso sottoscrivere un token su un argomento più di una volta?
  6. Più abbonamenti / aggiunte dello stesso token avranno come risultato la ricezione di messaggi duplicati

Scusate, ci sono un sacco di domande, ma suppongo che per qualcuno che l’ha superata dovrebbe essere una torta;)

  1. Devo annullare l’iscrizione al vecchio token e iscrivere il nuovo token agli argomenti?

AFAIK, non è necessario annullare l’iscrizione al vecchio token, poiché verrà scartato da FCM stesso. Per il nuovo token, sì, dovrai iscriverlo all’argomento che ti serve. La solita cosa è fatta (in Android) avendo subscribeToTopic() in onTokenRefreshed() .


  1. Devo rimuovere il vecchio token e aggiungere il nuovo token ai gruppi di dispositivi?

Sì. È necessario gestire la mapping / le relazioni per Device Group Messaging. Vedi la mia risposta qui . Questo è diverso dagli argomenti. Il token verrà invalidato, ma verrà mantenuto come parte dell’elenco dei token di registrazione per la chiave di registrazione corrispondente.

È il motivo per cui esiste la possibilità di ricevere un errore NotRegistred su uno dei token se si invia a Device Group. 🙂


  1. È ansible ottenere informazioni sui gruppi di dispositivi / argomenti per un token?

Per Device Group Messaging (lo stesso con # 2), lo sviluppatore (tu) deve gestire da solo questi dettagli. Per gli argomenti, è ansible utilizzare l’ API InstanceID . In particolare, imposta details parametri su true :

[facoltativo] details booleani: imposta questo parametro di query su true per ottenere i dettagli del token IID disponibili, comprese le informazioni sulla connessione e le informazioni sulla sottoscrizione dell’argomento FCM o GCM (se presenti) per il dispositivo associato a questo token. Se non specificato, il valore predefinito è false .


  1. Posso aggiungere un token a un gruppo di dispositivi più di una volta?

Ahmm. Sì. Intendi lo stesso token? Se è così, non l’ho ancora provato. Potrebbe anche fare qualche controllo sul lato client prima di aggiungere.


  1. Posso sottoscrivere un token su un argomento più di una volta?

Se intendi ri-sottoscrivere, allora si. Se intendi una richiesta doppia di iscrizione, penso che il risultato sarebbe comunque un successo. Nessun cambiamento nel comportamento però.


  1. Più abbonamenti / aggiunte dello stesso token avranno come risultato la ricezione di messaggi duplicati?

Testato. Non riceverai messaggi duplicati per entrambe le sottoscrizioni duplicate degli argomenti e aggiungendo lo stesso token a un gruppo di dispositivi. Sembra che FCM ignori la richiesta di sottoscrizione / aggiunta di un token di registrazione se è già stato sottoscritto / aggiunto a un gruppo di dispositivi.