我对FCM的了解是,它的代币永远不会过期,除非;
- 应用删除实例 ID
- 应用在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据。
我为用户提供了一个选项来启用/禁用通知,用户单击禁用并将null
发送到服务器,并在用户启用时FirebaseInstanceId.getInstance().getToken()
push notifications
现在,有时它会在用户重新启用通知时发送相同的令牌,而很少会更改FCM Token
。
我的问题是:
- 为什么它会改变
Token
,而 4 个条件都没有 上面提到的是true
,如果它是随机更改的,那么它有可能在任何时间点更改令牌, 并且服务器将通知发送到错误的令牌。 - 我注意到,如果我清除数据并打开应用程序,它会命中令牌 注册并获得相同的令牌有时它会存储
udid
设备,或者通过什么机制知道它是相同的 装置。
对于您的问题。
1(安全原因是改变token
的背后。如果你的应用具有静态令牌,并且有人获得了该令牌,则可以拥有控件。生成新令牌后,您必须使用服务器中的用户数据对其进行更新。因此,您不会将其发送到错误的令牌。仅当用户脱机一段时间时,才会发生这种情况。
2( FCM 生成的令牌是唯一的。使用您的设备 ID和应用 ID生成的FCM令牌。因此,如果您的令牌已更改,则没有其他设备将获得相同的令牌。生成令牌的完整机制不能出于相同的安全目的公开。