根据GCM 文档:
应用程序升级后,应使其现有的注册 ID 失效,因为不能保证它能与新版本一起使用。由于在应用程序更新时没有调用生命周期方法,因此实现此验证的最佳方法是在存储注册 ID 时存储当前应用程序版本。然后,在启动应用程序时将存储的值与当前应用程序版本进行比较。如果它们不匹配,则使存储的数据无效并重新开始注册过程。
当文档中提到“不能保证它能与新版本一起使用”时,这是 GCM 的限制还是他们在推测版本之间我的应用程序行为的潜在变化?
从应用程序方面来看,我可以大致保证连续版本会正确地运行,并且与 GCM 和任何我编写的应用程序特定的消息格式相关。我是否仍需要重新注册?
如果需要重新注册,应该使用哪个来检测“新版本”:versionCode 还是 versionName? 我的理解是,这些都是“自由格式”,应用程序开发人员可以将它们设置为任何值。那么,如果我将一个应用程序更新放到商店中,但不更改 versionName 或 versionCode,那么我需要重新向 GCM 注册吗?
看起来 GCM 实际上想要的是每次首次启动新安装时,应用程序都需要重新注册(直到注册完成),而不管 versionName 和 versionCode 的值是什么。这句话准确吗?