假设我有一个 LoginActivity
,用户可以在其中注册或使用现有凭据登录。我不希望 FirebaseInstanceIdService
生成 token ,除非用户已登录并且应用程序的 MainActivity
已启动。
谢谢
最佳答案
你不能阻止 FirebaseInstanceIdService.onTokenRefresh()
从被调用到用户登录。
在您的用例中您可以做的是:
- 在
FirebaseInstanceIdService.onTokenRefresh()
如果用户未登录则忽略该事件 - 当用户登录时检查
FirebaseInstanceId.getToken()
如果!= null
调用onTokenRefresh()
(或直接您的逻辑)手动。
通过这种方式,您可以在用户登录时处理 token ,如果 token 不可用(或轮换),您将收到 onTokenRefresh()
稍后 Activity 。
更新(2017 年 7 月 3 日):一位读者在评论中提醒 FirebaseInstanceIdService.onTokenRefresh()
可以在用户登录后调用。
这是对的。当用户登录时,getToken()
仍然可以返回 null
如果onTokenRefresh()
之前没有调用过。
您需要在您的应用中处理这种情况。用户很可能无论如何都可以使用该应用程序,但是在收到 token 之前您无法发送推送通知。
当 onTokenRefresh()
最终调用,如果用户之前登录,则可以将 token 关联到用户。
关于android - 如何仅在触发特定 Activity 后启动 FCM ID 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517254/