Mam nadzieję, że wszyscy znacie tę klasę, używaną do uzyskania tokena powiadomień za każdym razem, gdy token powiadomienia bazy ogniowej zostanie odświeżony, otrzymujemy odświeżony token z tej klasy, z następującej metody.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Aby użyć tego, ponieważ chcę zaimplementować FCM, rozszerzyłem MyClass z FirebaseInstanceIdService
Ale Pokazywanie, że FirebaseInstanceIdService jest przestarzałe
Czy ktoś to wie ?, Jakiej metody lub klasy powinienem użyć zamiast tego, aby otrzymać odświeżony token, ponieważ jest on przestarzały.
Używam : implementation 'com.google.firebase:firebase-messaging:17.1.0'
Sprawdziłem dokument pod kątem tego samego, nic o tym nie wspomniano. : DOKUMENT USTAWIEŃ FCM
AKTUALIZACJA
Ten problem został rozwiązany.
Ponieważ Google wycofało FirebaseInstanceService
,
Zadałem pytanie, aby znaleźć drogę, i dowiaduję się, że możemy pobrać Token z FirebaseMessagingService ,
Tak jak poprzednio, kiedy zadałem pytanie Dokumenty pytań nie zostały zaktualizowane, ale Dokumenty Google zostały zaktualizowane, aby uzyskać więcej informacji, zapoznaj się z tym dokumentem Google: FirebaseMessagingService
OLD From: FirebaseInstanceService (Przestarzałe)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NOWOŚĆ Od: FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
Dzięki.
źródło
super.onNewToken(s);
? (Nie widzę, aby był wywoływany na firebase.google.com/docs/cloud-messaging/android/client .)Odpowiedzi:
firebaser tutaj
Sprawdź dokumentację referencyjną
FirebaseInstanceIdService
:Co dziwne, JavaDoc
FirebaseMessagingService
nie wspominaonNewToken
jeszcze o metodzie. Wygląda na to, że nie opublikowano jeszcze całej zaktualizowanej dokumentacji. Złożyłem wewnętrzny problem, aby opublikować aktualizacje dokumentów referencyjnych oraz zaktualizować próbki w przewodniku.W międzyczasie zarówno stare / przestarzałe połączenia, jak i nowe powinny działać. Jeśli masz problem z którymkolwiek z nich, opublikuj kod, a ja zajrzę.
źródło
Tak,
FirebaseInstanceIdService
jest przestarzałeNie trzeba korzystać z
FirebaseInstanceIdService
usługi, aby uzyskać token FCM. Można bezpiecznie usunąćFirebaseInstanceIdService
usługęTeraz musimy
@Override onNewToken
dostaćToken
wFirebaseMessagingService
PRZYKŁADOWY KOD
EDYTOWAĆ
jak zdobyć token w swojej działalności
Teraz musimy użyć
getInstanceId ()
do wygenerowania tokenagetInstanceId ()
ZwracaID
i automatycznie generowany token dla tegoFirebase
projektu.Generuje to identyfikator wystąpienia, jeśli jeszcze nie istnieje, co powoduje okresowe wysyłanie informacji do zaplecza Firebase.
Zwroty
InstanceIdResult
który przechowujeID
itoken
.PRZYKŁADOWY KOD
EDYCJA 2
Oto działający kod dla kotlin
źródło
I to:
załóżmy, że jest to rozwiązanie przestarzałe:
EDYTOWAĆ
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
może wygenerować wyjątek, jeśli zadanie nie zostało jeszcze zakończone, więc metoda, którą opisał (z.addOnSuccessListener
) Nilesh Rathod, jest poprawna.Kotlin:
źródło
Kotlin pozwala na jeszcze prostszy kod niż pokazano w innych odpowiedziach.
Aby pobrać nowy token za każdym razem, gdy jest odświeżany:
Aby pobrać token z dowolnego miejsca w środowisku wykonawczym:
źródło
FirebaseinstanceIdService
jest przestarzałe. Więc muszę użyć „FirebaseMessagingService”Proszę o zdjęcie:
źródło
W Kotlin: - Jeśli chcesz zapisać token w DB lub wspólne preferencje następnie zastąpić onNewToken w FirebaseMessagingService
Zdobądź token w czasie wykonywania, użyj
źródło
override fun onNewToken(token: String)
(bez znaku zapytania).Klasa implementacji FCM:
I wywołaj jego inicjalizację w działaniu lub aplikacji:
AndroidManifest.xml:
** Jeśli dodałeś „INSTANCE_ID_EVENT”, nie pamiętaj o jego wyłączeniu.
źródło
Musisz użyć
FirebaseMessagingService()
zamiastFirebaseInstanceIdService
źródło