Android GCM : GCMRegistrar donne à vide de l'enregistrement de l'ID
J'ai suivi http://developer.android.com/guide/google/gcm/gs.html#server-app à mettre en œuvre GCM, dans mon application
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if (GCMRegistrar.isRegistered(this)) {
Log.d(TAG, GCMRegistrar.getRegistrationId(this));
}
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, sender_id);
Log.d(TAG, "Registration id : "+GCMRegistrar.getRegistrationId(this));
}
else {
Log.d("info", "already registered as" + regId);
}
qui renvoie une chaîne vide comme IDENTIFIANT d'inscription
quoi d'autre est nécessaire pour obtenir l'enregistrement de l'ID??
OriginalL'auteur techieWings | 2012-07-05
Vous devez vous connecter pour publier un commentaire.
Chaîne vide vient lorsque l'appareil n'est pas enregistré avec succès. Il peut y avoir des raisons suivantes
-
Je ne savais pas jusqu'à ce que j'ai trouvé ce que le GCM code doit être dans le package de l'application.
Oui, Vous avez raison. GCM code doit être dans le paquet Principal. Alors seulement il fonctionne.
ce que vous entendez exactement par
GCM code
?OriginalL'auteur Mani
J'ai également obtenu le vide ID d'enregistrement et enfin le fixer. Voici mes solutions:
1) vérifier l'identité du projet. Il devrait être le 12 char depuis longtemps montré dans le lien hypertexte de l'API de Google de la console (pas l'ID de Projet, vous avez nommé dans le projet sommaire)
2) essayez de changer le final String id à String id. Je ne sais pas pourquoi mais ça fonctionne pour moi.
Espère que cela aide.
Retrait
final
à partir de l'enregistrement de l'id de la variable résolu le problème pour moi. Merci!J'ai abusé de l'ID de projet et de la clé du serveur. merci pour la 1ère solution.
Ne peut pas se référer à un non-final variable d'id d'enregistrement à l'intérieur d'un intérieur classe définie dans un autre méthode ALORS????
je ne peux pas trouver toutes les id de Projet avec un lien hypertexte, d'où je peux le faire?? - moi aussi de se vider l'enregistrement de l'id
OriginalL'auteur Nick Wong
J'ai eu le même problème, la solution était:
Vous avez besoin pour mettre en œuvre un GCMIntentService (s'étendant à partir de GCMBaseIntentService).
Et NE le font PAS !!! renommer GCMIntentService par quelque chose d'autre, c'était une raison dans mon cas.
-1 parce que
GCMIntentService
est juste le nom par défaut (prévu dans le paquet principal), Mais vous pouvez hae tout IntentService vous voulez tant que vous l'avez fait à droite, avecgetGCMIntentServiceClassName()
correctement remplacéOriginalL'auteur Zakharov Roman
La création d'un nouveau projet à l'aide de google console avec le même nom en tant que nom de l'application dans eclipse m'a aidé à résoudre ce problème.
OriginalL'auteur techieWings
puis attendez l'appel de retour dans votre récepteur qui s'étendent GCMBaseIntentService dans le onRegistered ovverride, vous y trouverez votre ID d'enregistrement.
De toute façon j'ai plein de créer une application qui utilisent GCM suite à ce post: http://developer.android.com/guide/google/gcm/gs.html
avez-vous de mettre en œuvre la BrodcastReceiver ?
OriginalL'auteur Giuseppe
J'ai aussi eu la chaîne vide comme un id d'enregistrement et résolu comme suit :
OriginalL'auteur Parvin Gasimzade
Assurez-vous que vous avez défini le service dans le "app_package" que cet esprit de service sera appelé par le GCMBroadcastReceiver
Par exemple
ou
Ne parviennent pas à définir le service correctement, il n'y aura pas de rappel pour onRegister, et votre Enregistrer l'Id est toujours vide
OriginalL'auteur Ethan
J'ai eu le même problème avec mon application.
Première chose qui a été mal, été avec ma GCMIntentService. Il doit être à la racine de votre colis.
Je vais l'inclure ici un court extrait de mon GCMIntentService. Veuillez garder à l'esprit que, vous recevrez votre registrationID sur GCMIntentService méthode register
//ici appel à vos méthodes pour envoyer le registrationId à votre serveur
CloudMessagingUtility.registre(contexte, registrationId);
}
}
vous avez à prendre la bonne configuration dans l'Android
OriginalL'auteur qgicup
Appel getRegistrationId() tout de suite après register() est risqué, parce que registre peut ne pas retourner l'id de suite.
Pour mon cas, j'ai fait un chèque plus tard dans mon script (lors de l'appui sur une touche) à l'aide de:
s'inscrit alors appel GCMRegistrar.getRegistrationId(this)); pour obtenir l'ID de l'enregistrement.
OriginalL'auteur dionkta
J'ai essayé la deuxième solution de Nick Wong et j'ai changé =>
public static final String PROPERTY_REG_ID = "registration_id";
=>
public static String PROPERTY_REG_ID = "registration_id";
et simplement, il a travaillé.
OriginalL'auteur Mohammed_AlRawhani
Depuis GCMRegistrar.getRegistrationId est asynchrone, j'ai ajouté un compteur pour vérifier si l'id est réellement vide ou pas. Si vide, le compteur serait tout simplement incrémenter et essayer d'obtenir le numéro d'enregistrement de nouveau. Un assez grand nombre comme 100 devrait suffire.
OriginalL'auteur readerind
Je l'ai résolu en changeant le projet a utilisé pour l'enregistrement avec GCMRegistrar.vous inscrire à partir du nom de projet pour le projet google nombre
OriginalL'auteur Flavio Bianchi