Android 为什么FCM有时会更改令牌

Android 为什么FCM有时会更改令牌,android,performance,android-layout,firebase,firebase-cloud-messaging,Android,Performance,Android Layout,Firebase,Firebase Cloud Messaging,我对FCM的了解是,它的代币永远不会过期,除非 应用程序删除实例ID 应用程序已在新设备上还原 用户卸载/重新安装应用程序 用户清除应用程序数据。 我为用户提供了一个启用/禁用通知的选项,用户单击禁用并向服务器发送null,以及当用户启用推送通知时FirebaseInstanceId.getInstance.getToken 现在,当用户重新启用通知时,它有时会发送相同的令牌,但很少会更改FCM令牌 我的问题是: 当4个条件都不满足时,它为什么要更改令牌 上面提到的是真的,如果它随机改变它,那么

我对FCM的了解是,它的代币永远不会过期,除非

应用程序删除实例ID 应用程序已在新设备上还原 用户卸载/重新安装应用程序 用户清除应用程序数据。 我为用户提供了一个启用/禁用通知的选项,用户单击禁用并向服务器发送null,以及当用户启用推送通知时FirebaseInstanceId.getInstance.getToken

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

我的问题是:

当4个条件都不满足时,它为什么要更改令牌 上面提到的是真的,如果它随机改变它,那么它有可能在任何时候改变令牌, 服务器正在向错误的令牌发送通知。 我注意到,如果我清除数据并打开应用程序,它会点击令牌 注册并获得相同的令牌有时会存储udid吗 或者是什么机制让它知道它们是一样的 装置 谢谢你的提问

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

2 FCM生成的令牌是唯一的。使用您的设备id和应用程序id生成的FCM令牌。因此,如果您的设备id发生更改,其他设备将无法获得相同的令牌。不能出于相同的安全目的公开生成令牌的完整机制。

请参阅。它说的和你一样。希望它能消除您的疑虑使用您的设备id和应用程序id生成FCM令牌-我想我也记得这一点。嗨,布瓦内什,你能不能把你的推荐信也包括进来,我想把它加进去会很好。