web-dev-qa-db-fra.com

Les identifiants d'enregistrement GCM expirent-ils?

Je sais que les enregistrements C2DM expirent et vous êtes censé actualiser périodiquement l'ID d'enregistrement. Est-ce le cas avec GCM? en regardant le code suivant dans le Android GCM (illustré ci-dessous), il semble que vous ne le fassiez qu'une seule fois et que vous n'ayez pas besoin de le rafraîchir, mais je ne vois cela explicitement écrit nulle part, donc je voulais juste vérifier.

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}
43
Mohamed Hafez

MODIFIER: CETTE RÉPONSE IS SORTIE HORS DATE, JE N'AI PAS IDEA QUEL EST LE COMPORTEMENT ACTUEL EST


J'ai trouvé la réponse moi-même. Vous n'avez pas explicitement besoin de vous réinscrire tout le temps, juste une fois selon l'exemple dans la documentation .

En outre, contrairement aux versions précédentes de GCM et C2DM, Google lui-même ne rafraîchit pas l'enregistrement lui-même maintenant: une fois que vous avez l'identifiant d'enregistrement de l'enregistrement initial, vous êtes prêt à partir, sauf pour un cas: vous devez toujours vous réinscrire lorsque l'utilisateur passe à un nouvelle version (ce cas est également traité dans l'exemple du lien ci-dessus):

Lorsqu'une application est mise à jour, elle doit invalider son ID d'enregistrement existant, car il n'est pas garanti de fonctionner avec la nouvelle version. Étant donné qu'aucune méthode de cycle de vie n'est appelée lors de la mise à jour de l'application, la meilleure façon de réaliser cette validation est de stocker la version actuelle de l'application lorsqu'un ID d'enregistrement est stocké.

41
Mohamed Hafez

Je pense qu'il est éventuellement rafraîchi, oui. De la documentation officielle:

Un ID d'enregistrement existant peut cesser d'être valide dans un certain nombre de scénarios, notamment: Si l'application se désinscrit manuellement en émettant une intention com.google.Android.c2dm.intent.UNREGISTER. Si l'application n'est pas automatiquement enregistrée, cela peut se produire (mais n'est pas garanti) si l'utilisateur désinstalle l'application. Si l'ID d'enregistrement expire. Google peut décider de rafraîchir les ID d'enregistrement. Dans tous ces cas, vous devez supprimer cet ID d'enregistrement du serveur tiers et cesser de l'utiliser pour envoyer des messages. Se produit lorsque le code d'erreur n'est pas enregistré.

Cela peut se produire dans une demande à GCM de votre serveur tiers, qui renvoie une réponse json avec l'erreur Périphérique non enregistré .

Une fois que cela se produit, ce sera à vous de rafraîchir les identifiants correspondants.

http://developer.Android.com/guide/google/gcm/gcm.html

10
Iñigo