我正在为下一个关于 GCM 的问题而苦苦挣扎。我阅读了文档(GCM 文档)并看到了 Google 如何在 Android 应用程序中实现 GCM 客户端的示例,但在整个文档中没有提及注册 ID 的到期。
我看到了这个问题,但没有跟随谷歌对 GCM Demo App 的最后更新
我的问题是:
- 注册 ID 是否会过期?
- 如果注册 ID 过期,我怎么知道(是否有任何事件)?
提前致谢。
我将扩展我的评论。
根据我在 GCM 文档和示例中阅读的所有内容,您应该只在设备上安装新版本的应用程序后重新注册到 GCM。您不必处理注册 ID 的过期问题。
即使出于某种原因,GCM 决定在给定设备上为您的应用程序分配一个新的注册 ID,而您的应用程序和服务器都不知道,下次您的服务器向设备推送通知时(使用旧的注册 ID ),它将在 Google 的响应中获得新的注册 ID 作为规范注册 ID,并能够相应地更新其数据库。我建议您为每台设备分配您自己的唯一 ID(由您的服务器分配),并在设备向您发送注册 ID 时从设备接收该 ID。这样,如果服务器更改了注册 ID(由于来自 Google 的规范注册 ID 响应),并且稍后应用程序出于某种原因向您发送旧的注册 ID,您将知道两个 ID 都引用到同一设备。
我能想到的唯一情况是在您的应用程序中设置人为超时,并在超时到期时重新注册到 GCM(并将其发送到您的服务器),如果您的服务器非常不可靠以至于它可能丢失其注册 ID 数据库(我已经看到实际发生的人提出的关于 SO 的问题)。这将允许服务器逐渐恢复丢失的注册 ID。