2016-08-22 4 views
14

Ich folgte den Anweisungen auf firebase.google.com, um FCM in meinem Projekt hinzuzufügen.
Alles war gut, ich habe die Meldung "FirebaseApp Initialisierung erfolgreich" und frisches Token in meinen Protokollen. Aber es funktioniert nicht ... Nur die erste Push-Benachrichtigung, die ich an den Token sende, bekomme ich Erfolg. Der zweite Push and Rest erhält den Fehler "NotRegistered".
Dokumentation sagtFCM gibt Fehler zurück: NotRegistered nach der ersten Nachricht

Wenn es NotRegistered ist, sollten Sie die Registrierungs-ID von Ihrer Server-Datenbank zu entfernen, da die Anwendung von dem Gerät oder die Client-Anwendung konfiguriert wird nicht um Nachrichten zu empfangen deinstalliert wurde.

aber die Anwendung wurde nicht entfernt und Client-Anwendung konfiguriert, um Nachrichten zu empfangen, weil die erste Nachricht

+0

Überprüfen Sie, ob die Methode 'onTokenRefresh()' aufgerufen wird. Dies bedeutet, dass das Token aktualisiert wird und Sie das neue Token verwenden müssen. Verwenden Sie die Firebase-Konsole, um die Benachrichtigung zu senden? oder Sie verwenden Ihre eigene Serverimplementierung. – GeorgeLBA

+0

GeorgeLBA, onTokenRefresh in meinem Fall wird nur einmal beim ersten Programmstart oder nach dem Bereinigen aller Apps Daten aufgerufen. Ich verwende meine eigene Serverimplementierung –

+0

Nikita, Versuchen Sie, das Token zu drucken, nachdem Sie die erste Benachrichtigung gesendet haben. Nur um sicherzustellen, dass sich das Token nicht ändert. Verwenden Sie 'FirebaseInstanceID.getToken()' und überprüfen Sie, ob das Token nach dem Senden der Benachrichtigung identisch ist. Wenn es NULL ist, weil das Token aus irgendeinem Grund entfernt wurde. – GeorgeLBA

Antwort

4

ich stundenlang gekämpft, um die Kunden kommt, aber ich fand das Problem. Es war wirklich schwer zu finden und zu erklären. Ich werde versuchen:

Mein Projekt hat eine Abhängigkeit mit einer anderen Abhängigkeit im Innern, dass: My project > Dependency > Sub-dependency

Die Unterabhängigkeit enthält eine AndroidManifest.xml Datei mit <application> Tag. So etwas Ähnliches:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.my_sub_library"> 

    <application android:allowBackup="true"> 

    </application> 

</manifest> 

Aufgrund dieser Anwendung Tag, meine Abhängigkeit benötigt, es zu tun:

<manifest package="br.com.ilhasoft.support.databinding" 
    xmlns:tools="http://schemas.android.com/tools"> 
    <application tools:node="replace"/> 
</manifest> 

Meine Lösung durch Entfernen der Anwendung Tag Teil Abhängigkeit zu aktualisieren war und aktualisieren Abhängigkeit Entfernen der ersetzen Aktion.

Irgendwie ignorierte Firebase meine FirebaseMessagingService und widerrief meine FCM Registrierungstoken.

Ich schlage vor, Sie überprüfen Ihre Abhängigkeiten, um zu sehen, welche Application-Tag hat und aktualisieren/ersetzen. Es hat für mich funktioniert!

+0

+100 Sie sparen meinen Tag. –

+0

Ist das nicht 'Sub-Abhängigkeit' in einem NPM-Paket? Wenn ja, wie haben Sie es aktualisiert? – jbarradas

Verwandte Themen