web-dev-qa-db-fra.com

Firebase Cloud Messaging - Gestion des jetons d'enregistrement

Je cherche à implémenter la messagerie entre les applications mobiles et les navigateurs à l'aide de la messagerie cloud Firebase et j'ai quelques questions auxquelles les documents ne semblent pas répondre.

Pour pouvoir recevoir des messages, vous avez besoin d'un jeton d'enregistrement (RT). Les messages peuvent être envoyés à un RT, à un sujet ou à un groupe d'appareils notification_key. Le RT peut également être utilisé:

  • directement
  • s'abonner à un sujet
  • ajouter à un groupe d'appareils

Le RT peut également expirer/changer.

Dans mon application, je gère une liste de RT par utilisateur. Maintenant, lorsque le RT change:

  1. Dois-je désinscrire l'ancien token et abonner le nouveau token aux rubriques?
  2. Dois-je supprimer l'ancien jeton et ajouter le nouveau jeton aux groupes d'appareils?
  3. Est-il possible d'obtenir des informations sur les groupes/sujets d'appareils pour un jeton?
  4. Puis-je ajouter un jeton à un groupe d'appareils plus d'une fois?
  5. Puis-je souscrire un jeton à un sujet plus d'une fois?
  6. Plusieurs abonnements/ajouts du même jeton entraîneront-ils la réception de messages en double

Désolé, c'est beaucoup de questions, mais je suppose que pour quelqu'un qui a traversé ça, ça devrait être tarte;)

22
Ralf Bokelberg
  1. Dois-je désinscrire l'ancien token et abonner le nouveau token aux rubriques?

AFAIK, vous n'avez pas à vous désabonner de l'ancien jeton, car il sera rejeté par FCM lui-même. Pour le nouveau jeton, oui, vous devrez vous abonner au sujet dont vous avez besoin. La chose habituelle se fait (sous Android) en ayant subscribeToTopic() dans onTokenRefreshed().


  1. Dois-je supprimer l'ancien jeton et ajouter le nouveau jeton aux groupes d'appareils?

Oui. Vous devez gérer le mappage/les relations pour la messagerie de groupe de périphériques. Voir ma réponse ici . C'est différent des sujets. Le jeton sera invalidé, mais sera conservé dans la liste des jetons d'enregistrement pour la clé d'enregistrement correspondante.

C'est pourquoi il est possible de recevoir une erreur NotRegistred sur l'un des jetons si vous envoyez au groupe de périphériques. :)


  1. Est-il possible d'obtenir des informations sur les groupes/sujets d'appareils pour un jeton?

Pour la messagerie de groupe d'appareils (idem avec # 2), le développeur (vous) devez gérer vous-même ces détails. Pour les sujets, vous pouvez utiliser InstanceID API . Plus précisément, définissez le paramètre details sur true:

[facultatif] booléen details: définissez ce paramètre de requête sur true pour obtenir les détails du jeton IID disponibles, y compris les informations de connexion et les informations d'abonnement aux rubriques FCM ou GCM (le cas échéant) pour le périphérique associé à ce jeton . Lorsqu'il n'est pas spécifié, la valeur par défaut est false.


  1. Puis-je ajouter un jeton à un groupe d'appareils plus d'une fois?

Ahmm. Oui. Voulez-vous dire le même jeton? Si oui, je ne l'ai pas encore essayé. Autant faire une vérification côté client avant d'ajouter.


  1. Puis-je souscrire un jeton à un sujet plus d'une fois?

Si vous voulez vous réinscrire, alors oui. Si vous voulez dire une demande d'abonnement en double, je pense que le résultat serait toujours un succès. Aucun changement de comportement cependant.


  1. Est-ce que plusieurs abonnements/ajouts du même jeton entraîneront la réception de messages en double?

Je l'ai testé. Vous ne recevrez pas de messages en double pour les deux abonnements à des sujets en double et pour ajouter le même jeton à un groupe d'appareils. Il semble que FCM ignore la demande d'abonnement/d'ajout d'un jeton d'enregistrement s'il est déjà abonné/ajouté à un groupe de périphériques.

24
AL.