Wie behandeln FirebaseInstanceId.getInstance().getToken() = null
Ich habe gerade migriert FCM. Ich habe meine Klasse, die Sie erweitert aus FirebaseInstanceIdService zu erhalten refreshedToken als und bei Bedarf.
Meine Frage speziell zu dem Fall, wenn Benutzer installiert meine app erste mal, und aus irgendeinem Grund, nicht in der Lage, um zu erhalten eine Registrierungs-Id von onTokenRefresh. Wie sollen wir damit umgehen? Kann ich eine broadcast-receiver von meinem FirebaseInstanceIdService Klasse, die benachrichtigt die Haupt-Aktivität, wenn die Registrierungs-Id empfangen wird?
- Ich denke,
FirebaseInstanceId.getInstance().getToken()
null zurück nur wenn Internet nicht verfügbar ist. - Ja, also wie damit umgehen?
- So, setzen Sie einfach
LocalBroadcastReceiver
. Senden von Broadcast-MethodeonTokenRefresh()
und innenMainActivity
fangen, die Sendung durch Einstellung BroadcastReceiver. - Danke @ChintanSoni. Ich werde versuchen, diese!
- Sieht aus wie FCM nicht voll funktionsfähig auf Geräte wie Xiaomi mit Chinise OS-version ( es kommt ohne GooglePlay-Dienste, aber es noch nicht voll funktionsfähig auch nach der Installation GPServices)
- Gleiche Problem auf Nexus 5x... NICHT Chinise OS-version.... -_-
- Gleiche Problem. Registrierung token nicht abgerufen auf Xiaomi-Handys, aber es funktioniert auf dem emulator,motorola und Samsung. Haben Sie herauszufinden, etwas für diese ?
- Die einzige Lösung, die ich gefunden ist, um SyanogemMOD ROM. youtube.com/watch?v=K-d-Bq_Ui5k
- nicht genannt
onTokenRefresh
Methode aufYU
, ` Xiaomi` Gerät mit kitkat
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie folgende codes:
in Ihre Haupttätigkeit:
splashscreen -> if(noToken){ continue with splashscreen until token and then remove splashscreen for main activity }
jegliche Hilfe würde sehr geschätzt werdenÄndern Sie dies in manifest.xml Datei
Extras: - Knoten="ersetzen"
zu
Extras: - Knoten="merge".
Soweit ich weiß, token, null nur, wenn Sie versuchen zum ausführen Ihrer app auf dem emulator, auf dem google-play-Dienst ist nicht da, und wenn Sie mit dual-E-Mail-id auf, die Sie im google play store(auf Sie eigentliche Gerät), aber nur eine E-Mail-id ist verifiziert für die Nutzung. Das sind die Fälle, die Ihnen null token und das habe ich schon realisiert FCM in mein neues Projekt. So für den rest auf alle Fälle , token nicht null sein.
onTokenRefresh
- Methode aufgerufen werden und werden aktualisiert token und wenn internet ist nicht da, dann zunächst Griffinternet connectivity
in Ihrer appIch Stand vor dem gleichen problem. Ich schaute durch die Menge, SO dass Beiträge und in anderen Foren und ich fand eine Lösung, die für mich gearbeitet. FCM-Dokumentation steht, dass diese Methode verwenden, um ein token.
Fand ich ein post online (ich entschuldige mich, ich erinnere mich nicht, welcher das ist. Ich fand es eine Weile her), dass diese Methode statt:
FCM Dokumentation beschreibt die erste Methode, wie:
Während der zweite wird beschrieben als:
Bin ich auf der Suche, warum der erste Aufruf der Methode nimmt eine längere Zeit, um wieder ein token, aber ich habe nicht gefunden, eine Antwort noch. Hoffe, das hilft.
je nach Ihrer Anwendung-Logik können Sie den code schreiben, der zur Verarbeitung des "neuen" token direkt in die
FirebaseInstanceIdService.onTokenRefresh()
Methode, oder Sie können eine LocalBroadcast senden Sie diese Informationen an Ihre Tätigkeit, wenn Sie müssen, ändern Sie die Benutzeroberfläche, wenn dieses Ereignis geschieht.Beachten Sie, dass, wenn
onTokenRefresh()
ist aufgerufen, Ihre Tätigkeit geschlossen werden könnte.Eine mögliche Umsetzung könnte eine Mischung der beiden Optionen:
onTokenRefresh()
senden Sie das token an Ihren serverVerwenden Sie diese Klasse erweitert mit..
Wenn Sie es läuft auf den emulator, überprüfen Sie, dass Sie Google play-Dienste aktiviert, unter Extras -> Android -> SDK-Manager -> SDK-Tools -> Google-play-services
Einmal installiert, reboot, Android Studio und den emulator
War für mich