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

2024-03-31

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

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

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

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

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

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


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

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


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

不过,一般来说,您还可以在用户退出应用程序(或新用户登录)时清除令牌。这是(据我所知)处理这种情况的最常见方法(参见1 https://stackoverflow.com/questions/43193215/firebase-cloud-messaging-handling-logout, 2 https://stackoverflow.com/questions/60296911/how-to-delete-firebase-cloud-messaging-token-when-user-log-out-of-the-react-nati,以及更多来自).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

管理多个用户的 Firebase Cloud Messaging 令牌 的相关文章

随机推荐

  • 将时间设置为 00:00:00

    我在 Java 中重置时间时遇到问题 对于给定日期 我想将时间设置为 00 00 00 这是我的代码 Resets milliseconds seconds minutes and hours from the provided date
  • 读取未定义的对象属性时强制 JavaScript 异常/错误?

    我是一位经验丰富的 C Java 程序员 第一次使用 Javascript 我使用 Chrome 作为浏览器 我创建了几个带有字段和方法的 Javascript 类 当我读取一个不存在的对象字段时 由于我的拼写错误 Javascript 运
  • 不调用bind()的情况下监听()

    我尝试了以下方法 int sockfd socket listen sockfd 10 accept sockfd 没有一个调用失败 并且程序开始阻塞 就像我调用了bind 一样 在这种情况下会发生什么 由于没有本地地址或端口 是否永远无法
  • Spring @Autowire 两个未在 ApplicationContext 中定义的同一类的 bean

    我正在开发 Spring MVC 应用程序并遇到问题 我是Spring的新手 所以如果我的工作有点笨拙 请原谅我 基本上我有一个java类ContractList 在我的应用程序中 我需要此类的两个不同对象 它们都必须是单例 public
  • 主干+rails TypeError:List.Header不是构造函数

    我正在尝试按照从该网站购买的教程进行操作 http www backbonerails com http www backbonerails com 我正在关注该系列的第五集 起床运行 第 1 部分 在视频的 46 52 左右 他有 lis
  • go run:无法运行非主包

    这是简单的 go 应用程序 如果我运行以下代码 我会收到 go run 无法运行非主包 错误 package zsdfsdf import fmt func Main fmt Println sddddddd 要修复它 我只需要将包命名为m
  • 如何在 Terraform 中定义一个根据变量可能为空的列表?

    我需要在 Terraform v0 10 8 中定义一个资源 该资源具有一个列表属性 该属性可能为空也可能不为空 具体取决于变量 请参阅volume ids在下面的定义中 resource digitalocean droplet work
  • Apache Hive - 复杂数据类型映射 不起作用

    蜂巢版本2 1 1 问题描述 集合项终止值作为映射键插入 蜂巢表 CREATE TABLE profiles id int name struct
  • Azure 文本转语音:如何更改输出的语言和语音?

    我需要以下 JavaScript 的帮助 希望有人能帮助我 文本以英语语音朗读 如何在以下工作代码中更改语言和语音 由于我的java技术较差 我在网上进行了大量搜索 但找不到合适的解决方案 所以 不幸的是我的编程技能不够好 所以我需要一些具
  • 使用WiX安装后是否可以提示重启机器?

    使用WiX安装后是否可以提示重启机器
  • 检查 Kusto 语言的表是否存在?

    有没有办法使用 kusto 语言以编程方式检查日志分析中是否存在表 例如 假设我想检查工作区是否包含 VMConnection 表 如下所示 IF OBJECT ID objectName U IS NOT NULL OR IF EXIST
  • 如何访问 Import-Csv 数组中的特定行?

    我需要将大文件上传拆分为多个并行进程 并希望使用单个 CSV 文件作为输入 是否可以从一个访问行块Import Csv对象 像这样 SODAData Import Csv CSVPath Delimiter Where Rownum 20
  • 如何在 MVC 的 C# 中创建自己的值为“00”和“”的 SelectList?

    我的操作中有以下代码 ViewBag AccountId new SelectList reference Get 01 AsEnumerable OrderBy o gt o Order RowKey Value 00 在我看来 Html
  • 使用 XCB 检测窗口焦点变化

    我正在使用 XCB 编写一个程序 需要检测窗口何时获得或失去焦点 到目前为止我已经有了这个 但它只是挂在xcb wait for event调用 永远不会进入循环 我在这里缺少什么来获取根事件 或者我的做法完全错误 有比听根音更好的方法吗
  • 我应该避免使用“async void”事件处理程序吗?

    我知道使用 即发即弃 通常被认为是一个坏主意async void方法来启动任务 因为没有对挂起任务的跟踪 并且处理可能在此类方法中抛出的异常很棘手 我通常应该避免async void事件处理程序也是如此 例如 private async v
  • 如何使用Python的GAE开发服务器测试床模拟文件上传到blobstore

    我想编写一些单元测试 其中包括读取 blobstore 文件 https developers google com appengine docs python blobstore blobreaderclass hl pl 如何编写单元测
  • 动态 Javascript 树结构

    我想动态构建层次结构 每个节点创建为层次结构中的层 级别 具有自己的节点数组 这应该形成一个树结构 应该有一个根节点 以及未定义数量的节点和级别来构成层次结构的大小 除了根节点之外 不应修复任何内容 我不需要阅读或搜索层次结构 我需要构建它
  • 如何将录制的视频数据从 javascript 传递到 python

    我正在尝试将录制的视频数据块从某些 javascript 代码传递到我的路线 以便我可以保存它 我是新手 JavaScript 使用用户网络摄像头录制视频并将其保存为 RecordedBlob 我正在尝试将记录的 Blob 数据传递到我的
  • AngularJS + html5Mode + 自定义后备

    我有一个申请html5模式 真 但在 IE 上我不需要回退到 url 我需要的是保留 URL 并重新加载完整的页面 如果我找不到任何方法 我将需要编辑 AngularJS 文件 而这正是我不想要的 建议 Thanks 编辑 作为临时解决方案
  • 管理多个用户的 Firebase Cloud Messaging 令牌

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