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é.

38
demandé sur halfer 2014-11-03 19:05:01

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.

49
répondu Samik 2018-03-02 15:07:14

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);
18
répondu Rhodesie 2016-12-18 22:11:55

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:

entrez la description de l'image ici

Basé sur les réponses @ Samik et @ O'Rilla, je suggère les étapes suivantes:

  1. désinstallez l'installation actuelle de L'appareil Android
  2. assurez-vous que vous avez <receiver> et <sender> sont définis dans <application> nœud AndroidManifest.xml.
  3. assurez-vous que vous avez le bon <category android:name="COM.COMPANY.YOURAPP" /> dans votre <receiver>
  4. assurez-vous que L'implémentation de Receiver est correcte
8
répondu Roozbeh Zabihollahi 2016-07-10 18:51:26

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!

5
répondu naren 2016-12-18 21:45:42

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>
2
répondu G O'Rilla 2015-10-07 15:38:51

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.jsonpour 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!!!! >

2
répondu Micro 2016-03-09 23:43:09

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.

1
répondu ztan 2014-11-03 18:00:19

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.

0
répondu ireshika piyumalie 2016-09-24 20:38:51