android - 如何仅在触发特定 Activity 后启动 FCM ID 服务?

标签 android google-cloud-messaging firebase-cloud-messaging

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

相关文章:

android - 在 onMessageReceived 中显示警报对话框 - FCM

android - Firebase Cloud Messaging Android 接收静默推送通知

java - android:如何将位图数组合并到一个位图中?

android - CSS 布局是如何变得流畅的?

android - 谷歌地图溢出就像 foursquare 应用程序一样

android - 在 android studio 上单击推送通知后重定向到特定 Activity

android - 关于谷歌播放服务问题的推送通知

android - 如何为自定义分隔符创建可绘制对象?

android - android 的 GCM 服务显示 java.net.UnknownHostException : android. googleapis.com

android - FCM 导航在应用程序被终止或后台运行时不工作。