9
votes

Expiration de l'enregistrement de messagerie de la messagerie cloud Google

J'utilise la messagerie de Google Cloud pour mon application Android et j'essaie de comprendre lorsque l'identifiant d'enregistrement expire. De Ceci Post, j'ai pu comprendre que Google a tendance à rafraîchir l'ID à un moment donné . Je suis curieux de savoir comment ma demande saura quand l'ID est rafraîchi? Si Google décide d'actualiser l'ID et que mon serveur est jusqu'à l'envoi du message à l'ancien identifiant, je ne pense pas que le message sera envoyé. Donc, je devrais devoir essayer d'enregistrer à chaque fois et voir si les identifiants sont les mêmes?

Le même message indique également que l'ID serait rafraîchi lorsque la version de l'application change, mais sur la modification de la version via le manifeste, l'ID d'enregistrement n'a pas changé. Alors, quel est le point sur essayer de vous inscrire à nouveau des modifications de la version?

edit Voici le côté serveur. Où serait exactement l'identifiant canonique être stocké?

code côté serveur: xxx


0 commentaires

4 Réponses :



8
votes

J'essaie de comprendre lorsque l'identifiant d'enregistrement expire

Le serveur GCM actualise généralement (votre ancien identifiant d'enregistrement est donc expiré) les ID d'enregistrement. Quand cela se produit exactement n'est documenté nulle part. Mais vous serez averti lorsque cela se produit.

Comment sommes-nous informés?

Lorsque vous envoyez une notification à un ID d'enregistrement qui est expiré, pour la 1ère fois, le message (notification) sera livré mais vous obtiendra un nouvel identifiant d'enregistrement avec le nom CANONICAL ID . qui signifie, L'ID d'enregistrement que vous avez envoyé le message a été modifié à cette ID canonique, alors changez-le sur votre serveur aussi bien .


Si Google décide d'actualiser l'ID et que mon serveur est jusqu'à l'envoi du message à l'ancien identifiant, je ne pense pas que le message sera envoyé

Comme je l'ai dit, il sera envoyé pour la 1ère fois, même après l'expiration.


aussi le même message dit que l'ID serait rafraîchi lorsque l'application Version change

Je ne pense pas que cela arrive à coup sûr. Mais même si cela se produit (changements d'identification d'enregistrement), c'est le même scénario que celui que vous avez expliqué ci-dessus, il vous suffit donc de prendre soin de l'identifiant canonique .

EDIT < / strong> xxx


4 commentaires

Merci beaucoup! Alors, où va exactement l'identifiant canonique? Est-il envoyé à l'appareil Android? Si oui, comment puis-je l'obtenir?


Non, vous obtiendrez cela sur votre serveur. Lorsque vous envoyez la notification à un ID d'enregistrement à l'aide de CURL. Obtenez la réponse du curl_exec et recherchez-la pour canonique_ids .


@RagHavShankar J'ai modifié la réponse en ajoutant un certain code sur la manière d'obtenir les identifiants canoniques.


En fait, votre code donnera simplement le nombre d'identifiants qui doivent être remplacés. Si vous souhaitez les remplacer réellement, vous devriez analyser le résultat JSON et rechercher des éléments contenant «enregistrement_id», qui sera la clé de la valeur mise à jour. Si vous ne cherchez pas à trouver le nombre d'utilisateurs avec des valeurs d'enregistrement remplacées, votre fonction est triviale.



0
votes

Selon http://developer.android.com/google/ gcm / client.html # échantillon-registre , contrairement aux versions précédentes de GCM et de C2DM, Google elle-même ne rafraîchit pas l'enregistrement. Une fois que vous avez l'identifiant d'enregistrement à partir de l'enregistrement initial, vous êtes prêt à partir, sauf pour un cas: vous devez toujours vous réinscrire lorsque l'utilisateur mises à niveau vers une nouvelle version (ce cas est également traité dans l'exemple du lien ci-dessus. ).

Lorsqu'une application est mise à jour, elle doit invalider son identifiant d'enregistrement existant, car il n'est pas garanti de fonctionner avec la nouvelle version. Parce qu'il n'y a pas de méthode de cycle de vie appelé lorsque l'application est mise à jour, la meilleure façon d'atteindre cette validation consiste à stocker la version actuelle de l'application lorsqu'un ID d'enregistrement est stocké.


0 commentaires

0
votes

Pour obtenir le Dernier ID GCM STRY> Voici mon travail autour de moi. XXX PRE>

Dans le code ci-dessus, je vérifie si le canonique_ids code > existe dans le résultat. p>

si le canonique_ids code> existe alors je reçois le nouveau enregistrement_id_id code> p>

donc, maintenant, le système se mettra à jour automatiquement le nouveau GCM ID chaque fois que cela est changé. P>

mise à jour: strong> p>

Le code ci-dessous peut être utilisé si l'ID GCM est modifié plusieurs fois P>

$GCMIDChanged = $result['canonical_ids'];
if($GCMIDChanged)
{
    $NewGCMIdList = end($result['results']);
    $NewGCMId =  $NewGCMIdList['registration_id'];
}


0 commentaires