Надеюсь, что все вы знаете об этом классе, который используется для получения токена уведомления всякий раз, когда обновляется токен уведомления firebase, мы получаем обновленный токен из этого класса From следующего метода.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Чтобы использовать это, как я хочу реализовать FCM, я расширил MyClass из FirebaseInstanceIdService
Но, показывая, что FirebaseInstanceIdService устарела
Кто-нибудь знает это? Какой метод или класс я должен использовать вместо этого, чтобы получить обновленный токен, поскольку это устарело.
Я использую : implementation 'com.google.firebase:firebase-messaging:17.1.0'
Я проверил документ на то же самое, ничего не упомянуто об этом. : ДОКУМЕНТ НАСТРОЙКИ FCM
ОБНОВИТЬ
Эта проблема была исправлена.
Поскольку Google устарел FirebaseInstanceService
,
Я задал вопрос, чтобы найти способ, и я узнал, что мы можем получить токен от FirebaseMessagingService ,
Как и раньше, когда я спросил, Документы с Вопросами не были обновлены, но теперь Документы Google обновлены, поэтому для получения дополнительной информации обратитесь к этому документу Google: FirebaseMessagingService
СТАРЫЙ От: FirebaseInstanceService (устарел)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NEW От: FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
Спасибо.
источник
super.onNewToken(s);
? (Я не вижу, чтобы его вызывали на firebase.google.com/docs/cloud-messaging/android/client .)Ответы:
пожарный здесь
Проверьте справочную документацию на
FirebaseInstanceIdService
:Как ни странно, JavaDoc пока
FirebaseMessagingService
не упоминаетonNewToken
метод. Похоже, еще не вся обновленная документация была опубликована. Я подал внутреннюю проблему, чтобы обновлять опубликованные справочные документы, а также обновлять образцы в руководстве.А пока должны работать как старые / устаревшие звонки, так и новые. Если у вас возникли проблемы с любым из них, отправьте код, и я посмотрю.
источник
Да
FirebaseInstanceIdService
не рекомендуетсяНет необходимости использовать
FirebaseInstanceIdService
сервис для получения токена FCM. Вы можете безопасно удалитьFirebaseInstanceIdService
сервисТеперь нам нужно
@Override onNewToken
попастьToken
вFirebaseMessagingService
ОБРАЗЕЦ КОДА
РЕДАКТИРОВАТЬ
как получить токен в своей деятельности
Теперь нам нужно использовать
getInstanceId ()
для генерации токенаgetInstanceId ()
ВозвращаетID
и автоматически сгенерированный токен для этогоFirebase
проекта.Это генерирует ID экземпляра, если он еще не существует, который начинает периодически отправлять информацию в серверную часть Firebase.
Возвращает
InstanceIdResult
который содержитID
иtoken
.ОБРАЗЕЦ КОДА
РЕДАКТИРОВАТЬ 2
Вот рабочий код для котлина
источник
И это:
предположим, что решение устарело:
РЕДАКТИРОВАТЬ
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
может вызвать исключение, если задача еще не выполнена, поэтому метод, описанный (с.addOnSuccessListener
) Нилешем Ратодом, является правильным способом сделать это.Котлин:
источник
Kotlin допускает даже более простой код, чем показано в других ответах.
Чтобы получить новый токен всякий раз, когда он обновляется:
Чтобы получить токен из любой точки во время выполнения:
источник
FirebaseinstanceIdService
устарела. Так что придется использовать «FirebaseMessagingService»Море изображение, пожалуйста:
источник
В KOTLIN: - Если вы хотите сохранить токен в БД или общие настройки, переопределите onNewToken в FirebaseMessagingService
Получить токен во время выполнения, использовать
источник
override fun onNewToken(token: String)
(без знака вопроса).Класс реализации FCM:
И вызовите его инициализацию в Activity или APP:
AndroidManifest.xml:
** Если вы добавили «INSTANCE_ID_EVENT», не забудьте отключить его.
источник
Вы должны использовать
FirebaseMessagingService()
вместоFirebaseInstanceIdService
источник