GCM注册ID过期时间

Posted

技术标签:

【中文标题】GCM注册ID过期时间【英文标题】:GCM Regisration Id expiration time 【发布时间】:2013-10-24 14:30:43 【问题描述】:

我正在为下一个关于 GCM 的问题而苦苦挣扎。我阅读了文档 (GCM document) 并看到了 Google 的示例如何在 android 应用程序中实现 GCM 客户端,但在整个文档中没有提及注册 ID 的到期。

我看到了that question,但该示例并未遵循 Google 对 GCM Demo App 的上次更新

我的问题是:

    注册 ID 是否会过期? 如果注册 ID 过期,我怎么知道(是否有任何事件)?

提前致谢。

【问题讨论】:

我在您所指的问题中写了答案,并根据Demo的最新更新对其进行了更新(请参阅答案底部的更新)。根据我在 GCM 文档和示例中阅读的所有内容,您应该仅在设备上安装新版本的应用程序后重新注册到 GCM。您不必处理注册 ID 的过期问题。 @Eran 首先感谢您的回答。这是阅读文档的结论。但这有意义吗? 【参考方案1】:

我将扩展我的评论。

根据我在 GCM 文档和示例中阅读的所有内容,您应该仅在设备上安装新版本的应用后重新注册到 GCM。您不必处理注册 ID 的过期问题。

即使出于某种原因 GCM 决定在给定设备上为您的应用分配一个新的注册 ID,而您的应用和您的服务器都不知道,下次您的服务器向设备推送通知时(使用旧的注册 ID),它将在 Google 的响应中获得新的注册 ID 作为规范注册 ID,并能够相应地更新其数据库。我建议您为每台设备分配您自己的唯一 ID(由您的服务器分配),并在设备向您发送注册 ID 时从该设备接收该 ID。这样,如果服务器更改了注册 ID(由于来自 Google 的规范注册 ID 响应),并且稍后应用程序出于某种原因向您发送旧的注册 ID,您将知道两个 ID 都引用到同一个设备。

我能想到的唯一一种情况是,在您的应用程序中设置人为超时,并在超时到期时重新注册到 GCM(并将其发送到您的服务器),如果您的服务器非常不可靠它可能会丢失其注册 ID 数据库(我已经看到实际发生过的人提出的关于 SO 的问题)。这将允许服务器逐渐恢复丢失的注册 ID。

【讨论】:

以上是关于GCM注册ID过期时间的主要内容,如果未能解决你的问题,请参考以下文章

GCM 设备 ID 是不是会过期,如果是,如何为 android 解决这个问题

GCM 3.0:新注册不会过期使用 GCMRegistrar 注册的令牌

C# GCM 未注册

每次应用启动时 GCM 重新注册

Google Cloud Messaging 将在 7 天后过期

如果设备订阅过期,如何停止发送通知 - GCM PushSharp