concernant les identifiants canoniques dans le GCM (messagerie en nuage Google)

Nous avons récemment configuré GCM pour une application de notification push. L’API du serveur est dans Node.js, donc j’utilise le module de nœud node-gcm pour envoyer les notifications au serveur gcm.

Nous avons parfois remarqué que les paquets n’étaient pas livrés à l’utilisateur final. Après quelques recherches, j’ai peaufiné certains parameters, ce qui a beaucoup aidé à améliorer la fiabilité.

J’ai remplacé les anciens parameters par les nouveaux parameters suivants:

  • indicateur delayWhileIdle de true à false,

  • collapseClé sur l’heure de la journée au lieu de ‘démo’

  • timeToLive à 7200 au lieu de 3

J’ai aussi lu sur les identifiants canoniques. Page google “Un identifiant d’enregistrement canonique est défini comme l’identifiant du dernier enregistrement demandé par votre application. Il s’agit de l’identifiant que le serveur doit utiliser lors de l’envoi de messages au périphérique.”

J’ai enregistré le résultat lors de l’envoi du message. L’identifiant canonique dans le résultat était 0. Qu’est-ce que cela signifie? Voici le résultat:

{ multicast_id: 9180653668551804000, success: 1, failure: 0, canonical_ids: 0, results: [ { message_id: '0:1415521804106240%0209acc19067cebd' } ] } 

Le message ici sur stackoverflow suggère de remplacer l’identifiant d’enregistrement par l’identifiant canonique. Je ne sais pas quand remplacer ou non.

Dans la firebase database de mon serveur, reg_id est demandé lors de l’installation de l’application et stocké avec l’enregistrement de l’utilisateur dans la firebase database. Aussi, quels sont ces champs comme message_id et multicast_id dans le résultat?

    1. L’identifiant canonique = 0 signifie que l’identifiant d’enregistrement utilisé par votre serveur Push est correct et ne doit pas être remplacé par un identifiant canonique, c’est-à-dire que le serveur GCM aura souvent la réponse canonical_id = 0. Si, pour certaines raisons, votre serveur envoie un push, l’identifiant d’enregistrement actuel n’est pas GCM la réponse du serveur sera:

      Statut HTTP du GCM: 200 Corps de réponse du GCM:

       { "multicast_id": 7036866281258904189, "success": 1, "failure": 0, "canonical_ids": 1, "results": [ { "registration_id": "APA91bH88lV-u5XNdJoF5p0W2d0F_z_7AM6_cjx1e62s83bvDZYcdU_lkmRaFdnkZ5PPUBdYssfpB2QygMW5V0kTqVpV4atCyKpnBEkVnd_YTY0qr4V9oHSyYpv_HIDGNzpfHyGfXz5fWCKnlnACHr37y1zT91JcrHyUMR6DB15WzwjAE1QtloI", "message_id": "0:1415529915241995%64ac3713f9fd7ecd" } ] } 

    Cannonical_ids = 1 et cela signifie que votre serveur doit remplacer l’identifiant d’enregistrement existant pour la nouvelle valeur que vous voyez en réponse. Ce cas est facile à reproduire si l’utilisateur réinstalle votre application client, mais votre serveur Push ne le sait pas et le serveur GCM transmettra en réponse le nouvel ID d’enregistrement. Vous pouvez tester cette situation sur mon serveur test push

    1. @ mandeep_m91 en ce qui concerne message_id et multicast_id, je vous suggère simplement de lire la documentation . Dans une pratique, je n’ai pas encore utilisé ce champ