Android 当多个用户使用同一设备访问同一应用程序时,如何处理Firebase注册ID(令牌)

Android 当多个用户使用同一设备访问同一应用程序时,如何处理Firebase注册ID(令牌),android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,firebase令牌ID是否基于设备的特征,如手机的IMEI、PC的MAC等 我主要关注的是: 多个用户使用给定的设备访问同一个应用程序(想想FB) 用户1登录应用程序,Firebase提供令牌(例如FirebaseInstanceId.getInstance().getInstanceId()) 用户1进行注销 用户2登录 #1中的相同Firebase注册令牌现在是否将用于用户2 是为用户2生成新的firebase ID,还是需要由应用程序本身手动处理? 我觉得这更多的是应用程序开发人员的责任

firebase令牌ID是否基于设备的特征,如手机的IMEI、PC的MAC等

我主要关注的是:

多个用户使用给定的设备访问同一个应用程序(想想FB)

  • 用户1登录应用程序,Firebase提供令牌(例如FirebaseInstanceId.getInstance().getInstanceId())
  • 用户1进行注销
  • 用户2登录
  • #1中的相同Firebase注册令牌现在是否将用于用户2
  • 是为用户2生成新的firebase ID,还是需要由应用程序本身手动处理? 我觉得这更多的是应用程序开发人员的责任,他们监控谁登录等等,旧的注册ID会被取消,而新的登录会生成一个新的ID

    只是澄清一下-我只使用Firebase云消息传递,不使用来自Firebase的其他消息,因此我将管理来自我自己服务器的通知。这意味着我将在我自己的数据库中存储Firebase注册ID,以了解要为哪个Firebase注册ID生成通知(例如,用户从另一个用户接收消息),例如。

    根据:

    在以下情况下,注册令牌可能会更改:

    • 应用程序删除实例ID
    • 应用程序已在新设备上还原
    • 用户卸载/重新安装应用程序
    • 用户清除应用程序数据
    这意味着当用户1注销时,令牌不会更改。一个解决办法是要求用户注销。这将删除当前实例ID,如果启用Firebase Cloud Messaging auto init,则将异步生成新实例ID


    请注意,还提到这是一个阻塞函数,因此不要在主线程上调用它。

    FCM/实例ID令牌和用户之间没有固有的关系。如果你需要这样的关系,你需要自己维持。典型的方法可以是将令牌与用户关联(除了将用户与令牌关联之外)。然后,当新用户在同一设备中登录应用程序时,将该用户与令牌关联。也可以在这里看到我的答案:@FrankvanPuffelen,谢谢你提供的信息。这就是我所认为的情况,因为从Firebase的角度来看,这很有意义。