是否有可能,来自 GCM 的规范 id 就像客户端的注册 id?

Posted

技术标签:

【中文标题】是否有可能,来自 GCM 的规范 id 就像客户端的注册 id?【英文标题】:Is it possible, that the canonical id from GCM is like the registration id of the client? 【发布时间】:2015-05-30 11:31:46 【问题描述】:

我正在使用 Google 云消息传递 (GCM)。在我的服务器上发送推送通知,我得到了一个规范的 id。是否有可能,我返回的规范 id(有时)与客户端的当前(或新)注册 id 相同(使用 GoogleCloudMessaging.getInstance.register 进入 android)?

【问题讨论】:

不,这不可能。你为什么要问这个?你得到规范 id 等于当前 regId 了吗? 我得到了一个规范的 id,它不等于当前的 regId。但是拿到canonical id之后,我又用了GoogleCloudMessaging.getInstance.register,然后得到了一个regId,和canonical id相等…… 【参考方案1】:

您应该只调用一次 GoogleCloudMessaging.getInstance.register,在您的版本代码更改(发生更新)或您的应用程序在备份后恢复之后。 Cannonical_id 是您的服务器的信号,而不是您的客户端。你得到了相同的 regId,因为 GoogleCloudMessaging 把它放在缓存中,不要多次调用 regId。当您从 gcm 获得 cannonical_id 时,您应该确保将旧的 regId 替换为新的。

【讨论】:

我只在 app- 或 android-update 之后以及删除应用数据时调用 getInstance.register。缓存是什么意思?那么regID和canonicalID之间还有联系吗? 我的意思是你不需要多次调用注册方法,你描述的地方很适合它。是的,在 regId 和 cannoncalD 之间存在连接。如果由于某些原因(用户快速重新安装您的应用程序)并且您的推送服务器继续使用旧的 regId,则 GCM 将传递 cannonicald 参数并将新的 registrationId 报告给您的推送服务器。有关更多信息,请查看我关于使用 canonicalIds ***.com/questions/26826869/… 的回答

以上是关于是否有可能,来自 GCM 的规范 id 就像客户端的注册 id?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云消息传递 - GCM 规范 ID 是不是仍然需要?

GCM 的注册 ID 重复

GCM 错误代码

使用 Amazon SNS 处理 GCM 规范 ID

规范注册 id gcm

关于 GCM 中的规范 ID(谷歌云消息传递)