4

Using firebase_messaging: ^13.0.2 I'm unsure how to force a refresh of the FCM token... without logging the user out. I noticed it refreshes when signing out + back in.

According to google docs there are only 3 ways to refresh the token:

  • The app is restored on a new device
  • The user uninstalls/reinstall the app
  • The user clears app data.

https://firebase.google.com/docs/cloud-messaging/manage-tokens

What I run on startup as a listener:

FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;
tokenStream = firebaseMessaging.onTokenRefresh.listen((event) {
    if (currentUser != null) {
      print('token $event');
      currentUser!.fcmToken = event;
      FireStoreUtils.updateCurrentUserfcmToken(currentUser!);
    }
  });

How to force a refresh of this token? This does not work and produces the same token value as before the delete was run...

  FirebaseMessaging.instance.deleteToken().then((value) =>
              FirebaseMessaging.instance.getToken().then((value) {
                currentUser!.fcmToken = value;
                FireStoreUtils.updateCurrentUserfcmToken(currentUser!);
              }));

If you're wondering why I want to refresh, see my other post here: IOS notifications stop working until FCM token refresh

Petro
  • 3,484
  • 3
  • 32
  • 59

2 Answers2

3

Did you try by deleting token using this method?

FirebaseMessaging.instance.deleteToken()

if this is not helping you can try delete token first and request new token then you will received new event for new token in onTokenRefresh

FirebaseMessaging.instance.deleteToken().then((value) => FirebaseMessaging.instance.getToken());

This will sure generate new token I tested.

Keval
  • 56
  • 2
0

According to Ready Android,To get a new refreshed FCM token (forcefully).

Blockquote To get a new refreshed FCM token (forcefully), first you have to delete it and then request for FCM token again. It will always provide a new token after once deletion.

in this link : How to refresh FCM Token on user Logout?