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

时间:2018-07-22 20:09:27

标签: android firebase firebase-cloud-messaging

是基于设备特征的Firebase令牌ID,例如电话的IMEI,PC的MAC等。?

我主要关心的是以下问题:

多个用户使用给定的设备访问相同的应用程序(Think FB)。

  1. 用户1登录到应用程序,Firebase提供了一个令牌(例如FirebaseInstanceId.getInstance()。getInstanceId())。
  2. 用户1退出登录
  3. 用户2登录。
  4. 现在是否将与#1相同的Firebase注册令牌用于用户2?

是为用户2生成了新的Firebase ID,还是需要由应用程序本身手动处理? 我觉得这是应用程序开发人员的责任,他们监视谁登录等等,并且旧的注册ID被取消,而为此新的登录生成新的ID?

请澄清一下-我只使用Firebase Cloud Messaging,而没有使用Firebase,因此我将通过自己的服务器管理通知。这意味着我将把Firebase注册ID存储在我自己的数据库中,以知道要为哪个Firebase注册ID生成通知(例如,某个用户从另一个用户收到消息)。

1 个答案:

答案 0 :(得分:3)

根据Firebase Docs

  

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

     
      
  • 该应用程序删除实例ID
  •   
  • 该应用已在新设备上还原
  •   
  • 用户卸载/重新安装应用程序
  •   
  • 用户清除应用数据。
  •   

这意味着当用户1注销时令牌不会更改。一种解决方法是在用户注销时调用deleteInstanceId()。如果启用了Firebase Cloud Messaging自动初始化,则会删除当前的实例ID,并异步生成一个新的实例ID。

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