it-swarm.com.de

GCM 'Fehler: Nicht registriert'

Mein GCM-Code kann erfolgreich getestet werden.

Aber genau der gleiche Code, ich konnte GCM Push nicht bekommen und bekam:

GCM-Fehler: Nicht registriert.

39
LKM

GCM-Antwort Not Registered bedeutet "Wenn es sich um NotRegistered handelt, sollten Sie die Registrierungs-ID aus der Serverdatenbank entfernen, da die Anwendung vom Gerät deinstalliert wurde oder kein Broadcast-Empfänger für den Empfang von com.google.Android.c2dm.intent konfiguriert ist. RECEIVE Absichten. " aus Dokumentation . Prüfen Sie, in welchem ​​Fall Sie diesen Fehler erhalten, wenn die App vom Gerät deinstalliert wird oder Sie einen falschen Broadcast-Empfänger in AndroidManifest beschreiben. Sie können Ihre GCM-Funktionalität mit my test GCM server testen. Hoffe, das hilft dir.

51
Samik

Wenn Sie ein Gerät zum Testen verwenden, müssen Sie die InstanceID löschen, bevor Sie das Token abrufen und erneut testen, da Sie Ihre InstanceId abmeldet, sobald Sie Ihr APK überschrieben haben. Führen Sie in Ihrer RegisterIntentService-Klasse in der Funktion onHandleIntent Folgendes aus:

InstanceID instanceID = InstanceID.getInstance(this);
try
{
    instanceID.deleteInstanceID();
} catch(IOException e) 
{
    e.printStackTrace();
}
instanceID = InstanceID.getInstance(this);
18
Rhodesie

Der Not Registered geschieht, wenn GCM der Meinung ist, dass das Gerät die Nachricht nicht verarbeiten kann. Dies geschieht, wenn die App für die Verarbeitung der Nachricht deinstalliert oder falsch konfiguriert wurde:

 enter image description here

Basierend auf den Antworten von @Samik und @ O'Rilla würde ich folgende Schritte vorschlagen:

  1. Deinstallieren Sie die aktuelle Installation vom Android-Gerät
  2. Stellen Sie sicher, dass Sie <receiver> und <sender> im <application>-Knoten in AndroidManifest.xml definiert haben.
  3. Stellen Sie sicher, dass Sie den richtigen <category Android:name="COM.COMPANY.YOURAPP" /> in Ihrem <receiver> haben.
  4. Stellen Sie sicher, dass die Implementierung von Receiver richtig ist
9

Wenn Sie wirklich glauben, dass Ihr Code korrekt ist und immer noch ein Fehler auftritt

{"error": "NotRegistered"} 

deinstallieren Sie die App manuell vom Telefon und führen Sie sie erneut aus (Ihr Gerät erhält eine neue Registrierungs-ID).

Zumindest in meinem Fall wurde das Problem gelöst!

5
naren

Ich habe den alten veralteten Code für GCM verwendet: 

if (gcm == null) {
                gcm = GoogleCloudMessaging.getInstance(this);
            }
            String regId = gcm.register(SENDER_ID);
            msg = "Device registered, registration ID=" + regId;

und wenn Sie versuchen, auf den neuen Weg zu wechseln:

InstanceID instanceID = InstanceID.getInstance(this);
            String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

Ich bekam den gleichen Fehler und es hat mich zwei Tage lang verrückt gemacht. 

Nachdem Sie alles in dem Buch getestet haben, was behoben wurde, wurde GCM in der Entwicklerkonsole deaktiviert, erneut aktiviert und dann hier: https://developers.google.com/mobile/add eine neue google-services.json-Datei für meine erstellt Android App. 

Beachten Sie auch, dass RegistrationIntentService im Stammverzeichnis Ihres Pakets sein muss, sonst funktioniert es nicht! (Dieses Beispiel zeigt die Implementierung von gcm in Android: https://github.com/google/gcm )

Hoffe das hilft jemandem, weil ich hier Tage verloren habe !!!! > <

2
Micro

Ich hatte diesen Fehler, als ich den gcm-Empfänger außerhalb der Anwendung in der Manifestdatei hatte. Der Empfänger wurde in den Anwendungsbereich verschoben und alles hat funktioniert. Ein sehr glücklicher Hase.

<application>
...
<receiver>
...
</receiver>
...
</application>
2
G O'Rilla

Ein Google-Konto ist eine Voraussetzung für Geräte, auf denen Android 4.0.4 oder niedriger ausgeführt wird . http://developer.Android.com/google/gcm/gcm.html

Sie sollten auch <uses-permission Android:name="Android.permission.GET_ACCOUNTS" /> in Ihre Manifestdatei einfügen.

1
ztan

Dies bedeutet, dass Sie einfach eine falsche Registrierungs-ID ..__ angeben. Führen Sie dazu zuerst Ihre mobile Anwendung aus, und Ihre Registrierungs-ID wird als Token ..__ angezeigt. Fügen Sie dieses Token als Registrierungs-ID ..__ Ihrem App-Server-Code hinzu. Geben Sie für die App-ID die Server-ID ein, die Sie von der Google-Entwicklerkonsole erhalten, Ihr Projekt und die Anmeldeinformationen . Legen Sie für die Absender-ID Ihre Projekt-ID fest, die vom Projekt übernommen werden kann, Einstellungen in der Entwicklerkonsole. 

0