【问题标题】:Why does FCM changes token some times为什么 FCM 有时会更改令牌
【发布时间】:2017-08-25 11:48:01
【问题描述】:

我对 FCM 的了解是它的令牌永远不会过期,除非;

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

我为用户提供了启用/禁用通知的选项,用户单击禁用,我将null 发送到服务器,当用户启用push notifications 时发送FirebaseInstanceId.getInstance().getToken()

现在,有时它会在用户重新启用通知时发送相同的令牌,而有时它会更改 FCM Token

我的问题是:

  1. 为什么它改变Token,当4个条件都没有时 上面提到的是true,如果它是随机更改的,那么它有可能在任何时间点更改令牌, 并且服务器正在向错误的 Token 发送通知。
  2. 我注意到,如果我清除数据并打开应用程序,它会命中 Token 注册并获得相同的令牌有时它是否存储udid 设备,或什么机制,它知道它是相同的 设备。

【问题讨论】:

  • 参考this answer。它说的和你一样。希望能解开你的疑惑

标签: android performance android-layout firebase firebase-cloud-messaging


【解决方案1】:

为您的问题。

1) 更改token 背后的安全原因。如果您的应用程序有一个静态令牌,并且如果有人得到了它,他们就可以拥有一个控制权。生成新令牌后,您必须使用服务器中的用户数据对其进行更新。因此,您不会将其发送到错误的令牌。仅当您的用户离线一段时间后才会发生这种情况。

2) FCM 生成的 Token 是唯一的。使用您的设备 ID应用 ID 生成的 FCM 令牌。因此,如果您的更改,其他设备将不会获得相同的令牌。不能为了同样的安全目的公开生成token的完整机制。

【讨论】:

  • "使用您的设备 ID 和应用 ID 生成的 FCM 令牌" - 我想我也记得这一点。嗨 Bhuvanesh,您能否也包括您的参考资料,我认为添加它会很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多