管理多个用户的 Firebase Cloud Messaging 令牌

jed*_*fey 7 apple-push-notifications firebase-cloud-messaging google-cloud-firestore

查看 Firebase 文档,它建议为每个客户端实例生成一个 FCM 令牌 - 然后必须手动存储该令牌。如果我将每个令牌链接到 Firestore 数据库中的用户文档,那么在用户注销时我是否需要手动删除设备特定的令牌?

例如,用户 A 启动应用程序,并且他们的 FCM 令牌(例如“ABC”)被存储到他们的用户文档中。然后,用户 A 注销,B 登录。FCM 令牌不会刷新**,因此我需要从 A 的用户文档中删除该令牌并将其移动到 B 的用户文档中。否则,任何发往 A 的通知都将发送至 B(全部在同一设备上)。

这种想法正确吗?这似乎是一种管理代币的棘手方法,但据我所知,这是必要的吗?

** 根据 Firebase 文档,令牌仅在以下情况下刷新:

  1. 该应用程序已在新设备上恢复
  2. 用户卸载/重新安装应用程序
  3. 用户清除应用程序数据。

阅读更多文档,首先在本地处理通知是否是更好的解决方案 - 决定它是否发往登录帐户,然后呈现它?即不向通知添加任何低级敏感数据(例如聊天消息),而只是提供“获取新消息的通知”?

Fra*_*len 9

对,那是正确的。FCM 令牌标识特定设备上特定应用程序的安装,仅此而已。它与用户没有内在的关系,因此如果您需要这样的关系,您必须自己将它们链接在一起。

请记住,就像多个用户可以使用单个设备一样,单个用户也可以使用多个设备。根据我的经验,这实际上是两者中更常见的情况。


在本地检查通知的目标用户与实际的当前用户是一个有趣的概念,它肯定有助于防止向错误的用户显示数据。

不过,一般来说,您还可以在用户退出应用程序(或新用户登录)时清除令牌。这是(据我所知)处理这种情况的最常见方法(请参阅此中的12和更多内容)。