Когда заканчиваются токены FCM? Это через 6 месяцев?
Когда истекает токен FCM?
Ответ 1
Это не истекает, хотя. Он обновляется, если происходит одно из следующих действий.
Согласно https://firebase.google.com/docs/cloud-messaging/android/client:
- -The приложение удаляет идентификатор экземпляра
- Приложение -The восстановлено на новом устройстве
- -The пользователь удаляет/переустанавливает приложение
- -The пользователь очищает данные приложения.
Monitor token generation
OnTokenRefreshcallback срабатывает всякий раз, когда генерируется новый токен, поэтому вызов getToken в его контексте гарантирует, что вы получаете доступ к текущий, доступный регистрационный токен. Убедитесь, что вы добавили к вашему манифесту, затем вызовите getToken в контексте onTokenRefresh и зарегистрируйте значение, как показано:
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
Ответ 2
Как указано в документации здесь токен не имеет срока действия, он изменяется только при определенных событиях. Всякий раз, когда генерируется новый токен, вызывается метод onTokenRefereshId. Для реализации этого создайте класс, который расширяет FirebaseInstanceIdService и переопределяет onRefreshToken следующим образом:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
}
Также не забудьте зарегистрировать этот сервис в манифестах
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>