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