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? P>
edit strong>
Voici le côté serveur. Où serait exactement l'identifiant canonique être stocké? P> code côté serveur: p>
4 Réponses :
Je ne suis pas exactement sûr que GCM Regid est rafraîchi mais, Documentation client GCM A > State que "Vérifiez si l'application a été mise à jour; Si tel est le cas, il doit effacer l'ID d'enregistrement, car le régime existant n'est pas garanti de travailler avec la nouvelle version de l'application." Donc, oui, il pourrait toujours utiliser de vieux régides mais, ce n'est pas grave que cela n'aura pas de nouveau regid. P>
Donc, je devrais vérifier l'ID d'enregistrement à chaque fois et voir si elle a changé?
Yeh, c'est juste l'échec en sécurité.
J'essaie de comprendre lorsque l'identifiant d'enregistrement expire p>
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. P>
Comment sommes-nous informés? Strong> p> 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 STRUT>. 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 fort>. p> blockQuote>
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é p> blockQuote>
Comme je l'ai dit, il sera envoyé pour la 1ère fois, même après l'expiration. P>
aussi le même message dit que l'ID serait rafraîchi lorsque l'application Version change p> BlockQuote>
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
fort>. P>
EDIT < / strong> p> xxx pré> blockquote>
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 code> à l'aide de CURL. Obtenez la réponse du
curl_exec code> et recherchez-la pour
canonique_ids code>.
@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.
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. ). p>
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é. P>
Pour obtenir le Dans le code ci-dessus, je vérifie si le si le donc, maintenant, le système se mettra à jour automatiquement le nouveau GCM ID chaque fois que cela est changé. P> Le code ci-dessous peut être utilisé si l'ID GCM est modifié plusieurs fois P> canonique_ids code > existe dans le résultat. p>
canonique_ids code> existe alors je reçois le nouveau
enregistrement_id_id code> p>
$GCMIDChanged = $result['canonical_ids'];
if($GCMIDChanged)
{
$NewGCMIdList = end($result['results']);
$NewGCMId = $NewGCMIdList['registration_id'];
}