Dans quelle période le token de l'application firebase change-t-il et comment le gérer?

je suis nouveau à firebase Je l'apprends comme un enfant apprenant à marcher. Jusqu'à présent j'ai réussi à envoyer un message à mon propre téléphone à l'aide d'un jeton généré pour mon téléphone par firebase cadre. Maintenant voici où cela devient délicat (à mon avis). Il existe une méthode appelée onTokenRefresh() dans le FirebaseInstanceIdService service prolongé. Depuis, il est appelé actualiser, alors je suppose que cela va changer. Je veux savoir quand ce jeton est créé et quand doit-il être changé?

Et si il modifications, supposons que j'envoie un message à un périphérique avec le token 'A' qui est hors ligne pour le moment, donc il sera mis en file d'attente. Maintenant que l'appareil est en ligne, il va" rafraîchir " le token en 'B'. Maintenant que le message était censé être livré à jeton 'A', le message ne sera jamais livré. Comment puis-je gérer cette situation?

33
demandé sur yaxe 2016-06-07 14:33:45

2 réponses

le token est généré, après le lancement de L'application, dès que le téléphone peut se connecter aux serveurs Google. En raison de la connectivité nécessaire cela n'arrive pas immédiatement, mais dans la plupart des cas, il va arriver dans quelques secondes après que l'utilisateur ouvre l'application. Dès que le token est généré la méthode onTokenRefresh() est appelée.

Comme vous l'avez souligné le jeton peut changer, dans ce cas, le onTokenRefresh() méthode sera appelée de nouveau.

L'événement de rafraîchissement est en quelque sorte rares, ne vous attendez pas à le voir souvent.

lorsque le jeton refresh arrive, tous les messages qui ont été envoyés "avec succès" (L'API vous a renvoyé un message-id) à l'ancien jeton seront délivrés.

enfin, même après le rafraîchissement, le vieux jeton fonctionnera encore pendant une courte période, pour permettre à l'application de communiquer le nouveau jeton à sa fin.

46
répondu Diego Giorgini 2016-06-07 17:51:06

au démarrage initial de votre application, le sdk de FCM génère le token d'enregistrement pour l'instance de l'application client. Comme dit ci-dessus, Il est un événement rare. Pour être précis, le jeton d'enregistrement peut changer quand:

  • l'app supprime L'identifiant de L'Instance.
  • L'application est restauré sur un nouvel appareil
  • L'utilisateur de désinstaller/réinstaller l'application
  • L'utilisateur efface les données de l'application.

L'ID D'Instance fournit un ID unique par instance de votre des apps.Instance ID fournit une API simple pour générer des jetons de sécurité qui autorisent des tiers à accéder aux ressources gérées côté serveur de votre application.Le serveur D'ID D'Instance peut même vous dire quand le périphérique sur lequel votre application est installée a été utilisé pour la dernière fois.Nous pouvons l'utiliser pour décider s'il faut conserver les données de l'application ou envoyer un message push pour renouer avec les utilisateurs.

chaque fois que le jeton de périphérique est modifié, il se reflète dans onTokenRefresh () méthode.Pour obtenir le jeton de périphérique quand il est modifié, Nous pouvons appeler cette méthode pour obtenir le jeton rafraîchi.

et pour obtenir le dispositif de jeton à tout moment, nous pouvons utiliser FirebaseInstanceId.getInstance().getToken () méthode pour obtenir le jeton de périphérique courant.Il faut un peu de temps pour obtenir le jeton de l'appareil.

Cliquez sur ici pour en savoir plus sur l'accès du périphérique d'enregistrement jeton.

19
répondu Prakhar Anand 2016-12-23 11:30:59