Firebase云消息传递(FCM)令牌是否唯一?

Firebase云消息传递(FCM)令牌是否唯一?,firebase,firebase-cloud-messaging,Firebase,Firebase Cloud Messaging,我在firebase文档中找不到任何地方表明收到的令牌是唯一的。如果有人能给我指出这样的地方,我将不胜感激。主要问题-我应该在数据库中为这些令牌设置唯一约束吗。谢谢 当我搜索时,第一个结果是: 要验证它们是否可以发送和接收消息,客户端应用程序必须向GCM注册。在此过程中,客户端将获得唯一的注册令牌 Firebase云消息传递实例ID令牌唯一标识应用程序的实例。它们是全球独一无二的 是否应将数据库中的列标记为唯一列取决于您对该列的使用情况。正如你自己所问的那样:如果一个代币在这个表中出现两次,会发

我在firebase文档中找不到任何地方表明收到的令牌是唯一的。如果有人能给我指出这样的地方,我将不胜感激。主要问题-我应该在数据库中为这些令牌设置唯一约束吗。谢谢

当我搜索时,第一个结果是:

要验证它们是否可以发送和接收消息,客户端应用程序必须向GCM注册。在此过程中,客户端将获得唯一的注册令牌

Firebase云消息传递实例ID令牌唯一标识应用程序的实例。它们是全球独一无二的


是否应将数据库中的列标记为唯一列取决于您对该列的使用情况。正如你自己所问的那样:如果一个代币在这个表中出现两次,会发生什么坏事?将列标记为唯一会防止坏事情发生吗?

根据文档,它们是唯一的,但您不能将它们绑定到特定设备,因为它们可能会发生变化

:

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

  • 应用程序已在新设备上还原
  • 用户卸载/重新安装应用程序
  • 用户清除应用程序数据
:

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

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

根据我的经验,我注意到FCM令牌在以下三种情况下发生了更改:-

  • 卸载或重新安装应用程序时
  • 当应用程序的数据被清除时
  • 在新设备中安装应用程序时

  • 注意:-没有办法保持FCM令牌不变。

    感谢您的反馈,但您能否提供一些文档链接?当我搜索时,第一个结果是,“要验证它们是否可以发送和接收消息,客户端应用程序必须向GCM注册。在此过程中,客户端获得唯一的注册令牌…”谢谢,我搜索了大约半个小时,但没有找到那个链接。我想这是因为我的问题是“firebase推送通知令牌是否唯一?”而不是“google cloud messaging”。诀窍可能是我搜索了“google cloud messaging”(firebase cloud messaging的前身)。如果我的答案有用,请单击其左侧的向上投票按钮。如果它回答了您的问题,请单击复选标记接受它。这样别人就知道你得到了(足够的)帮助。他们可能会改变并不意味着他们不是独一无二的。@mcelicalderon你完全正确。我以为PO询问了他们的独特性。(我将编辑答案)卸载后应用程序更新后应在旧令牌上收到应用程序通知吗?@RoshanS是的,它们不同。如果从第一个设备还原第二个设备上的应用程序,则它可能具有相同的令牌(但可能性很小)。。。它们都依赖于
    vendorIdentifier
    ,vendorIdentifier是根据这么多规则重置的(在其他规则下也可能保持不变)。这就是为什么文件说可能会改变。如果您想进一步了解为什么生成可绑定到设备的绝对唯一id是困难的(或不可能的),请阅读@RoshanS我意识到我只回答iOS。简而言之,手机制作人不想侵犯他们的用户隐私以便于追踪,因此他们不会提供足够的信息。这对于第三方来说是独一无二的,足以区分其客户并跟踪一些短期活动。这就是为什么苹果从他们的SDK中删除了对获取设备标识符(绝对唯一)的支持,我相信Android在最新(或之前)的Android SDK中也做了同样的事情