我正在将我的应用程序从 GCM 迁移到 FCM。
当新用户安装我的应用程序时,会自动调用 onTokenRefresh()
。问题是用户尚未登录(没有用户 ID)。
用户登录后如何触发 onTokenRefresh()
?
原文由 TareK Khoury 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在将我的应用程序从 GCM 迁移到 FCM。
当新用户安装我的应用程序时,会自动调用 onTokenRefresh()
。问题是用户尚未登录(没有用户 ID)。
用户登录后如何触发 onTokenRefresh()
?
原文由 TareK Khoury 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个简短的回答是,如果您想在 onTokenRefresh()
中执行的操作要求用户登录,则将其全部包含在:
if (FirebaseAuth.instance.currentUser != null) {
// All code that requires a logged in user
}
这样,在用户登录之前什么都不会发生,此时该方法将再次触发并且会发生一些事情。 :)
原文由 Karolina Hagegård 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
1 回答1.3k 阅读
1.3k 阅读
每当生成新令牌时,都会调用
onTokenRefresh()
方法。应用程序安装后,它将立即生成(正如您所发现的那样)。当令牌更改时也会调用它。根据
FirebaseCloudMessaging
指南:这意味着令牌注册是针对每个应用程序的。听起来您想在用户登录后使用该令牌。我建议您将
onTokenRefresh()
方法中的令牌保存到内部存储或共享首选项中。然后,在用户登录后从存储中检索令牌,并根据需要向您的服务器注册令牌。如果您想手动强制
onTokenRefresh()
,您可以创建一个 IntentService 并删除令牌实例。然后,当您调用 getToken 时,会再次调用onTokenRefresh()
方法。示例代码:
编辑
onTokenRefresh() 已 弃用。使用
onNewToken()
在MyFirebaseMessagingService