Firebase Cloud Messaging - comment valider des Tokens?
J'utilise Firebase Cloud Messaging (FCM) et selon le code abrégé ci-dessous chaque fois qu'un nouveau Token est généré sur le périphérique client... J'envoie ce nouveau TOKEN à mon serveur DB (Cloud) où je l'enregistre afin de pouvoir envoyer future Notification Push du serveur au périphérique à l'aide de L'API CFM.
//public class CFMInstanceIDService extends FirebaseInstanceIdService ...
public void onTokenRefresh() {
...
String cfmToken = FirebaseInstanceId.getInstance().getToken();
...
sendRegistrationToServer(customerGuid, cfmToken);
}
en faisant cela j'ai sur le serveur une liste de tous les périphériques (multiples) où un client est connecté. (Tablette, téléphone, iPhone, Android, etc)
Est-il possible de vérifier/valider un Jeton à tout moment?
je voudrais savoir/s'assurer que tous les jetons que j'ai associé à un Client appartiennent à des Périphériques réels. Je ne veux pas envoyer de notification Push à des Tokens non existants.
4 réponses
rien de tel n'existe, la seule information que vous pouvez obtenir à partir d'un token est l'information app et pas si elle est valide ou pas
https://developers.google.com/instance-id/reference/server#get_information_about_app_instances
ce que vous devez faire est de surveiller la réponse lorsque vous allez envoyer des push et si les clés ne sont plus valides la réponse vous dira quelles clés doivent être supprimées NotRegistered
voici un exemple de requête curl qui montre comment valider un token sans avoir à envoyer de message:
curl -H "Content-Type: application/json" -H "Authorization: key=$FCM_API_KEY" https://fcm.googleapis.com/fcm/send -d '{"registration_ids":["$FCMTOKEN"]}'
Exemple de réponse non valide:
{"multicast_id":7452350602151058088,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
Exemple de réponse valide:
{"multicast_id":9133870199216310277,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1502817580237626%f590ddc2f9fd7ecd"}]}
j'ai eu cette réponse de l'équipe de support de la base de feu de google.
Il n'y a aucun moyen de valider si un jeton est toujours valide avant d'envoyer l'aval message. Ce que vous devez faire est de vérifier la réponse après avoir envoyé le message et ensuite vérifier si la réponse contient une erreur.
Par exemple, si le serveur renvoie un 200 + error:NotRegistered
code http, cela signifie qu'un enregistrement existant jeton peut cesser d'être valide.
Dans la section "messages en aval codes d'erreur de réponse de la CGF", vous trouverez documenté chaque réponse possible du statut.
en fait il y a une solution, vous pouvez utiliser dry_run = true
ce paramètre, lorsqu'il est défini à true, permet aux développeurs de tester une requête sans envoyer de message.
si l'utilisateur se désabonner, vous avez une réponse NotRegistered
mais réel de l'envoi ne sera pas exécuté