管理多个用户的 Firebase 云消息传递令牌

Managing Firebase Cloud Messaging Tokens with Multiple Users

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

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

这个想法对吗?这似乎是一种管理令牌的棘手方法,但据我所知这是必要的吗?

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

  1. 该应用已在新设备上恢复
  2. 用户uninstalls/reinstall应用程序
  3. 用户清除应用数据。

阅读更多文档,首先在本地处理通知是否是更好的解决方案 - 确定它是否发往已登录帐户,然后呈现它? IE。不向通知添加任何低级敏感数据(例如聊天消息),只需提供 'notification to fetch a new message'?

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

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


根据实际当前用户在本地检查通知的目标用户是一个有趣的概念,绝对有助于防止将数据显示给错误的用户。

不过一般来说,您也可以在用户退出您的应用(或新用户登录)时清除令牌。这是(据我所知)处理这种情况的最常用方法(参见 , , and more from this)。