Ich hoffe, Sie alle kennen diese Klasse, die verwendet wird, um Benachrichtigungstoken zu erhalten, wenn das Firebase-Benachrichtigungstoken aktualisiert wurde. Wir erhalten das aktualisierte Token von dieser Klasse. Von der folgenden Methode.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Um dies zu verwenden, wenn ich FCM implementieren möchte, habe ich MyClass von erweitert FirebaseInstanceIdService
Es wird jedoch angezeigt, dass FirebaseInstanceIdService veraltet ist
Weiß jemand das? Welche Methode oder Klasse sollte ich stattdessen verwenden, um ein aktualisiertes Token zu erhalten, da dies veraltet ist?
Ich benutze : implementation 'com.google.firebase:firebase-messaging:17.1.0'
Ich habe das Dokument auf dasselbe überprüft, es wird nichts darüber erwähnt. : FCM-SETUP-DOKUMENT
AKTUALISIEREN
Dieses Problem wurde behoben.
Da Google das ablehnte FirebaseInstanceService
,
Ich habe die Frage gestellt, um den Weg zu finden, und ich erfahre, dass wir das Token von FirebaseMessagingService erhalten können.
Wie zuvor, als ich die Frage stellte, wurden die Dokumente nicht aktualisiert, aber jetzt wurden die Google-Dokumente aktualisiert. Weitere Informationen finden Sie in diesem Google-Dokument: FirebaseMessagingService
ALT von: FirebaseInstanceService (veraltet)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NEU Von: FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
Vielen Dank.
quelle
super.onNewToken(s);
? (Ich sehe es nicht aufgerufen werden firebase.google.com/docs/cloud-messaging/android/client .)Antworten:
Firebaser hier
Überprüfen Sie die Referenzdokumentation auf
FirebaseInstanceIdService
:Seltsamerweise
FirebaseMessagingService
erwähnt JavaDoc dieonNewToken
Methode noch nicht. Es sieht so aus, als ob noch nicht alle aktualisierten Dokumentationen veröffentlicht wurden. Ich habe ein internes Problem eingereicht, um die Aktualisierungen der Referenzdokumente zu veröffentlichen und um die Beispiele im Handbuch ebenfalls zu aktualisieren.In der Zwischenzeit sollten sowohl die alten / veralteten als auch die neuen Anrufe funktionieren. Wenn Sie Probleme damit haben, geben Sie den Code ein und ich werde einen Blick darauf werfen.
quelle
Ja
FirebaseInstanceIdService
ist veraltetSie müssen keinen
FirebaseInstanceIdService
Dienst verwenden, um das FCM-Token zu erhalten. Sie können es sicher entfernenFirebaseInstanceIdService
DienstJetzt müssen wir
@Override onNewToken
erhaltenToken
inFirebaseMessagingService
BEISPIELCODE
BEARBEITEN
wie Sie Token in Ihrer Aktivität erhalten
Jetzt müssen wir verwenden
getInstanceId ()
, um Token zu generierengetInstanceId ()
Gibt dasID
automatisch generierte Token für diesesFirebase
Projekt zurück.Dadurch wird eine Instanz-ID generiert, falls diese noch nicht vorhanden ist. Diese sendet regelmäßig Informationen an das Firebase-Backend.
Kehrt zurück
InstanceIdResult
dasID
und enthälttoken
.BEISPIELCODE
BEARBEITEN 2
Hier ist der Arbeitscode für Kotlin
quelle
Und das:
Angenommen, es handelt sich um eine veraltete Lösung:
BEARBEITEN
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
kann eine Ausnahme erzeugen, wenn die Aufgabe noch nicht abgeschlossen ist. Daher ist die Methode, die Nilesh Rathod (mit.addOnSuccessListener
) beschrieben hat, der richtige Weg, dies zu tun.Kotlin:
quelle
Kotlin ermöglicht noch einfacheren Code als in anderen Antworten gezeigt.
So erhalten Sie das neue Token, wenn es aktualisiert wird:
So erhalten Sie das Token zur Laufzeit von überall:
quelle
FirebaseinstanceIdService
ist veraltet. Also muss "FirebaseMessagingService" verwendet werdenMeer das Bild bitte:
quelle
In KOTLIN: - Wenn Sie Token in der Datenbank oder in freigegebenen Einstellungen speichern möchten, überschreiben Sie onNewToken in FirebaseMessagingService
Holen Sie sich Token zur Laufzeit, verwenden Sie
quelle
override fun onNewToken(token: String)
(ohne das Fragezeichen).FCM-Implementierungsklasse:
Und rufen Sie die Initialisierung in Aktivität oder APP auf:
AndroidManifest.xml:
** Wenn Sie "INSTANCE_ID_EVENT" hinzugefügt haben, denken Sie nicht daran, es zu deaktivieren.
quelle
Sie müssen
FirebaseMessagingService()
anstelle von verwendenFirebaseInstanceIdService
quelle