Firebase Cloud Messaging nicht aufrufen FirebaseInstanceId

Ich habe gerade GCM zu FCM nach diesem Leitfaden hier aktualisiert. Die Website sagt, dass mein Service, der FirebaseInstanceIdService erweitert, aufgerufen wird, sobald das Token generiert wird. Aus irgendeinem Grund wird mein Service nie aufgerufen und onTokenRefresh wird nie ausgeführt.

Meine Dienste sind so registriert, nach dem Leitfaden:

  • Android GCM erhalten Original-ID der kanonischen ID
  • Mischen von Cordova und native Aktivitäten in Android
  • Was ist das Äquivalent von "android: windowSoftInputMode" für eine Website?
  • Implementieren von Aktionsleisten mit Fragmenten
  • Kann ich den Screenshot im Emulator im Android Studio testen?
  • Verwenden Sie SyncAdapter, ohne ein Konto zu erstellen
  •  <service android:name=".fcm.FcmService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name=".fcm.InstanceIdService"> <intent-filter> <action android:name="com.google.firebase.INSTANCEID_EVENT"/> </intent-filter> </service> 

    Mein service:

     public class InstanceIdService extends FirebaseInstanceIdService { private static final String TAG = "InstanceIdService"; @Override public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); Log.e(TAG, "Got token: " + token); } } 

    Die LogCat sagt nichts über fehlende Konfigurationsdateien oder sonst, und ich kann Logs über FirebaseApp und einen Log-Eintrag sehen, der das Token erwähnte, aber trotzdem wird mein Service niemals aufgerufen.

    Muss ich diesen Service irgendwo in meiner Tätigkeit starten? Mache ich etwas falsch? Kann jemand mich in die richtige Richtung führen?

    Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken()); : mit Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken()); Korrekt druckt mein Token, also bedeutet das, dass es erfolgreich generiert wurde. Der Service wird immer noch nicht angerufen …

    EDIT 2: Ändern von INSTANCEID_EVENT zu INSTANCE_ID_EVENT behoben das Problem, obwohl ich die App neu installieren musste. Da ich bereits eine Beta-Version mit dem neuen FCM veröffentlicht habe, können meine Beta-Tester die Themen nicht abonnieren, um eingehende Nachrichten zu veröffentlichen. Also, wie soll ich das lösen?

  • So platzieren Sie die Schaltfläche innerhalb von Text bearbeiten
  • Wie benutzt man textview.getLayout ()? Es gibt null zurück
  • Wie man die verstrichene Zeit mißt
  • Lautstärke ändern Listener: Ist registerMediaButtonEventReceiver vorzuziehen auf onKeyDown?
  • Wie kann man überprüfen, ob eine bekannte uri-Datei im Android-Speicher vorhanden ist?
  • Wie kann ich den Firebase-Cache umgehen, um Daten zu aktualisieren (in Android App)?
  • 7 Solutions collect form web for “Firebase Cloud Messaging nicht aufrufen FirebaseInstanceId”

    Danke Endanke, um das herauszufinden mit mir. Es scheint, dass die Firebase-Dokumentation inkonsistent ist. Eine Seite sagt, dass Ihr Absichtsfilter in Ihrer Manifestdatei INSTANCE_ID_EVENT , und ein anderer sagt INSTANCEID_EVENT .

    Sie sollten INSTANCE_ID_EVENT , und sobald Sie die Änderung vornehmen, müssen Sie Ihre App vollständig deinstallieren und neu installieren, damit die Änderungen INSTANCE_ID_EVENT können.

    FCM sollte als Ersatz für GCM verwendet werden. In deinem Fall sieht es so aus, als hättest du Dienste für FCM und GCM in deinem Manifest. Versuchen Sie, den gcm.GcmService zu entfernen, und verwenden Sie nur den, der FirebaseInstanceId erweitert.

    Ich hatte das gleiche Problem und durch die Deinstallation und Neuinstallation der App auf dem Gerät onTokenRefresh() einmal angerufen. Also ich denke, es hat sich von GCM geändert, wo es oft angerufen wurde, nur einmal angerufen zu werden, wenn es eigentlich kein Zeichen gibt.

    Ich habe verschiedene Build-Varianten in meinem Projekt und ich habe folgendes Problem:

    Von: https://firebase.google.com/docs/android/setup#prerequisites

    Hinweis: Wenn Sie mehrere Buildvarianten mit unterschiedlichen Paketnamen definiert haben, muss jede App Ihrem Projekt in der Firebase-Konsole hinzugefügt werden.

    Ändere einfach das INSTANCE_ID_EVENT zu INSTANCEID_EVENT. Ich habe für mich gearbeitet

    Überprüfen Sie auch das Datum Ihres Telefons! Ich hatte einmal einen Unterschied von 5-7 Tagen! Fixierung des Tages und Neuinstallation der App behoben!

    Stellen Sie sicher, dass Ihre Firebase "MyFirebaseInstanceIDService.java" Datei direkt unter dem Paketnamenbaum "com.company"

    Legen Sie sie nicht in das separate Unterpaket wie "com.company.services". Dies liegt daran, dass Ihr google-services.json die Dateien direkt unter dem Verzeichnis "com.company" sucht.

    Fügen Sie in Ihrem Manifest-Anwendungs-Tag unterhalb des Meta-Tags (falls vorhanden)

     <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> 

    Sie erhalten Ihre TOKEN auf die öffentliche void onTokenRefresh () Methode

    PS: Laden Sie die neueste google-services.json von Ihrer Projektkonsole herunter und ersetzen Sie sie.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.