如何处理 GCM 更改注册 ID?

Posted

技术标签:

【中文标题】如何处理 GCM 更改注册 ID?【英文标题】:How to handle GCM changing the registration Id? 【发布时间】:2012-12-03 18:36:12 【问题描述】:

我想知道如果 GCM 服务器决定刷新应用程序先前从 GCM 服务器检索的registrationId,应用程序/设备将如何得到通知。 目前,我保存第一个检索到的 registrationId 并将其保存在数据库中并将此 registrationId 发送到应用服务器。因此,从下次开始,App 将不再与 GCM 服务器对话。 在这种情况下,App 永远不会知道 GCM 服务器是否更改了registrationId。谷歌文件建议处理此案,但未提及应采取哪些步骤。 来自 Google 的引述 -

虽然 com.google.android.c2dm.intent.REGISTRATION 意图通常在应用程序发出请求后收到,Google 可能会定期刷新注册 ID。所以应用程序必须随时准备处理它。

任何建议都会有所帮助,

谢谢, SKU

【问题讨论】:

我绝对知道如何做到这一点,但由于某种原因,谷歌的 GCM 文档现在已关闭,哈哈。 【参考方案1】:

旧的 reg id 会继续工作一段时间,但 Google 会在响应的 canonical_id 字段中发送一个新的以供将来使用。

【讨论】:

你的意思是应用服务器应该得到一个新的 regId 的响应吗?它与设备的通信方式相同吗? 应用服务器只会与 GCM 服务器直接通信,然后将消息传递给设备(我们希望如此)。如果您在消息中发送 regid 并且 GCM 服务器决定更改 regid,那么将来要使用的新 regid 会在响应的 canonical_id 字段中返回。网站恢复后查看开发文档。 这对GoogleCloudMessaging API 仍然有效吗? 据我所知,是的。我认为新的 API 只是提供了一种更方便的方法来注册和查找 regid 是什么,以便您可以将其存储在您的服务器上。

以上是关于如何处理 GCM 更改注册 ID?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon SNS 处理 GCM 规范 ID

如何处理 ViewModel 中的配置更改

如何处理 iOS 远程消息中的附加数据 GCM

GCM 错误代码

C2DM:如何处理第 3 方 php 服务器中的注册 ID?

GCM 向多个客户端发送多条消息(数组)