首页 > 解决方案 > 调用 getToken(true) 后 Firebase 不更新令牌

问题描述

所以,我正在使用以下组合:

//retrieve actual token
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener

//force delete instance and then get a new token
FirebaseInstanceId.getInstance().deleteInstanceId();

但两者都已弃用,现在我正在尝试使用

//retrieve actual token
FirebaseMessaging.getInstance().token.addOnCompleteListener 

//force get new token
FirebaseInstallations.getInstance().getToken(true).addOnSuccessListener

实现相同的行为,但它不起作用。

当我调用 FirebaseMessaging.getInstance() 它给了我一个不同的 FirebaseInstallations.getInstance().getToken

例如:

在应用启动时, FirebaseMessaging.getInstance().token 给我令牌:

abcabcabcabcabcabcabcabc...

然后,当我调用 FirebaseInstallations.getInstance().getToken(true) 时,我收到了令牌

123123123123123123123123123...

我关闭应用程序,再次打开,FirebaseMessaging.getInstance().token 给了我相同的旧令牌:

abcabcabcabcabcabcabcabc...

标签: androidfirebasefirebase-cloud-messaging

解决方案


FirebaseInstanceId 与消息传递令牌不同。您应该使用Firebase.messaging.token获取当前令牌并Firebase.messaging.deleteToken()强制获取一个新令牌。

或者没有 ktx 扩展:FirebaseMessaging.getInstance().getToken()FirebaseMessaging.getInstance().deleteToken()


推荐阅读