Frage

Obwohl ich eine andere Antwort auf dieses Problem versuche, kann es nicht gelöst werden.Die Absender-ID ist korrekt, Berechtigungen wurden hinzugefügt, API-Schlüssel ist wahr.

Ich verwende diesen Beitrag zum Erstellen des Projekts:http://developer.android.com/guide/google/gcm/gs.html#server-app

    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);
    String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals("")) {
      GCMRegistrar.register(this, SENDER_ID);
      regId = GCMRegistrar.getRegistrationId(this);
    } else {
      Log.v(TAG, "Already registered");
    }
    String did = getDeviceID();

es gibt eine leere Zeichenfolge zurück.

War es hilfreich?

Lösung

Haben Sie GCMIntentService definiert korrekt im Root-Paket Ihrer App?

<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >

  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="my_app_package" />
  </intent-filter>
</receiver>

Stelle sicher das "my_app_package" ist mit dem Hauptpaket Ihrer App identisch, andernfalls gibt Ihre ID eine leere Zeichenfolge zurück.

Beachten Sie das auch

    GCMRegistrar.register(this, "...");

ist asynchron.Daher Aufruf GCMRegistrar.getRegistrationId(this) unmittelbar danach ist nicht zuverlässig, daher sollten Sie es vermeiden.

Die ID wird per Broadcast-Rückruf an Sie gesendet GCMIntentService, im Rahmen des Registrierungsverfahrens.Von dort aus können Sie den GCM/FCM-Schlüssel dann an einem beliebigen Ort speichern und in anderen Teilen der Anwendung (normalerweise auf dem Server) verwenden.

Andere Tipps

Wenn Ihre Anwendung das erste Mal einlädt, müssen Sie auf der Datei von gcmintentservice.java warten.

generasacodicetagpre.

gcmintentservice.java:

generasacodicetagpre.

bearbeiten : neuere Version der GCM-Bibliothek (der mit Google Play Services-Bibliothek gebündelt ist) wartet auf Antwort und gibt die Registrierungs-ID zurück.Diese Antwort ist also für ältere GCM-Bibliotheken.

Ich habe das gleiche Problem nach dem 1-tägigen Kampf, ich finde Lösung.Zuerst lege ich meinen GCM-Code in mein Hauptpaket und ändere mich nach meinem Paket in androidmanifest.xml

Ich gebe dir ein einfaches Beispiel.Mein Projektname ist gcmexample und ich habe drei Paket 1. com.examle.gcmexample (Hauptpaket), 2. com.examle.gcmexample.Activity (zweites Paket), 3. com.example.gcmexample.adapter (dritte Paket)

Ich bekomme keine Registrierungs-ID, wenn meine GCM-Klassendatei in mein zweites Paket zusammenhängt

My GCM-Zugehörige Klasse wie 1. GCMINTIMENSERVICE, 2. Serververgnügen, 3. Gewohnheiten 4. Wakelocker in mein Hauptpaket versetzen com.example.gcmexample

auch mein androidmanifest.xml

generasacodicetagpre.

registrieren app com.example.ilkgcm von Sendern "my_sender_id" - Dieser Fehler deuten darauf hin, dass Sie Ihre 'my_sender_id' nicht auf eine gültige Absender-ID geändert haben, die ein 12-Buchstabe-Code wäre.

Wenn Sie nicht von der Registrierung antworten. Einer der Hauptgrund ist Ihre Manifestdatei nicht richtig konfiguriert ... vor allem dem "paket_name" (Ihr App-Paketname wie com.xxx.yy) in der undrichtig.

Zum Beispiel ist der Name Ihrer Empfängerklasse: "mycustomintentsservice.java", ändern Sie diesen Namen einfach als "gcmintentsservice.java", dann versuchen Sie es erneut.Dies ist eine einfache Lösung.Ändern Sie einfach Ihren Dateinamen im SRC-Bereich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top