Когда истекает токен FCM?

Когда заканчиваются токены FCM? Это через 6 месяцев?

Ответ 1

Это не истекает, хотя. Он обновляется, если происходит одно из следующих действий.

Согласно https://firebase.google.com/docs/cloud-messaging/android/client:

  1. -The приложение удаляет идентификатор экземпляра
  2. Приложение -The восстановлено на новом устройстве
  3. -The пользователь удаляет/переустанавливает приложение
  4. -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>