GCM "erreur: non enregistré"
Je réussis à tester mon code GCM.
Mais exactement le même code, je n'ai pas pu obtenir GCM push et j'ai:
Erreur GCM: non enregistré.
8 réponses
Réponse GCM Not Registered
signifie suivant " si elle est NotRegistered
, vous devez supprimer L'ID d'enregistrement de votre base de données du serveur parce que l'application a été désinstallée de l'appareil ou il ne dispose pas d'un récepteur de diffusion configuré pour recevoir com.Google.Android.c2dm.intention.Recevoir des intentions."à partir de documentation. Vérifiez dans quel cas vous obtenez cette erreur, lorsque l'application est désinstallée de l'appareil ou que vous décrivez un récepteur de diffusion incorrect dans AndroidManifest. Vous pouvez tester votre GCM fonctionnalité avec Mon serveur GCM de test . L'espoir, cela vous aide.
Si vous utilisez un périphérique pour tester, vous devez supprimer L'InstanceID avant d'obtenir le jeton et de re-tester car une fois que vous écrasez votre APK, il désenregistrera cet InstanceId et vous obtiendrez cette erreur NotRegistered. Donc, dans votre classe RegisterIntentService, dans la fonction onHandleIntent, procédez comme suit:
InstanceID instanceID = InstanceID.getInstance(this);
try
{
instanceID.deleteInstanceID();
} catch(IOException e)
{
e.printStackTrace();
}
instanceID = InstanceID.getInstance(this);
Le Not Registered
se produit lorsque GCM pense que le périphérique n'a pas pu gérer le message. Cela se produit si l'application est désinstallée ou mal configurée pour gérer le message:
Basé sur les réponses @ Samik et @ O'Rilla, je suggère les étapes suivantes:
- désinstallez l'installation actuelle de L'appareil Android
- assurez-vous que vous avez
<receiver>
et<sender>
sont définis dans<application>
nœudAndroidManifest.xml
. - assurez-vous que vous avez le bon
<category android:name="COM.COMPANY.YOURAPP" />
dans votre<receiver>
- assurez-vous que L'implémentation de Receiver est correcte
Si vous pensez vraiment que votre code est correct et que vous obtenez toujours une erreur
{"error": "NotRegistered"}
Essayez de désinstaller l'application manuellement à partir du téléphone et exécutez-la à nouveau (votre appareil obtiendra un nouvel identifiant d'enregistrement).
, Au moins dans mon cas, le problème a été résolu!
J'ai eu cette erreur quand j'ai eu la gcm récepteur en dehors de l'application dans le fichier manifeste. Déplacé le récepteur dans le champ d'application et tout a fonctionné. Un lapin très heureux maintenant.
<application>
...
<receiver>
...
</receiver>
...
</application>
J'utilisais l'ancien code obsolète pour GCM:
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(this);
}
String regId = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regId;
Et lorsque vous essayez de passer à la nouvelle façon:
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Je recevais la même erreur et cela me rendait fou pendant deux jours solides.
Après avoir tout essayé dans le livre, ce qui a corrigé c'était de désactiver GCM dans la console des développeurs, de le réactiver, puis d'aller ici: https://developers.google.com/mobile/add {[12] } pour générer un nouveau fichier google-services.json
pour mon application Android.
Notez également que le RegistrationIntentService
doit être au racine de votre paquet ou cela ne fonctionnera pas! (voir cet exemple pour l'implémentation de gcm dans Android: https://github.com/google/gcm )
J'espère que cela aide quelqu'un parce que j'ai perdu des jours à ce sujet!!!! >
Un compte Google est une exigence sur les appareils fonctionnant sous Android 4.0.4 ou inférieur. http://developer.android.com/google/gcm/gcm.html
Vous devez également ajouter <uses-permission android:name="android.permission.GET_ACCOUNTS" />
dans votre fichier manifeste.
Cela signifie simplement que vous donnez un mauvais identifiant d'enregistrement. Donc, pour cela, exécutez d'abord votre application mobile et votre identifiant d'enregistrement viendra comme jeton. Mettez ce jeton dans le code de votre serveur d'applications en tant qu'ID d'enregistrement. Pour L'ID D'application, indiquez l'ID du serveur, que vous pouvez obtenir de Google developer console, de votre projet et des informations d'identification. Pour sender Id, définissez votre ID de projet qui pourrait provenir de project, settings dans developer console.