假设我有一个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/

    10-09 22:07