Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refresh FCM Token on user Logout?

I am getting the FCM first time and save it to my userDefaults. Now When user logs out, how can I refresh the FCM token again? I have searched the docs and many other asked questions, but didn't find a better solution.

Thanks in advance.

like image 293
Nivesh Avatar asked Feb 09 '17 13:02

Nivesh


2 Answers

The FCM Token is an Instance ID token, it represents the installed app and not the signed in user. Generally once the app remains installed it will have the same token no matter what user is signed in.

You would have to manage what user is associated to the token yourself. When the user signs in you should associate the token with the user's ID and when the user signs out you should remove that association.

like image 53
Arthur Thompson Avatar answered Nov 20 '22 11:11

Arthur Thompson


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.

To delete a saved token:

FirebaseMessaging.getInstance().deleteToken()

To request a FCM token:

        Firebase.messaging.isAutoInitEnabled = true
        // Get token
        FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
            //On token fetch fail
            if (!task.isSuccessful) {
               //msg_token_failed
                Log.e("Token failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val newDeviceToken = task.result
            Log.e("newDeviceToken", newDeviceToken)
        })

So, in your case you can delete FCM token on logout and request it again on login. It will work.

like image 5
Ready Android Avatar answered Nov 20 '22 12:11

Ready Android