什么是 GCM 注册 ID?

Posted

技术标签:

【中文标题】什么是 GCM 注册 ID?【英文标题】:What is GCM Registration ID? 【发布时间】:2014-08-27 11:30:36 【问题描述】:

您好,我想将 gcm 添加到我的应用程序中。我的应用程序是新闻应用程序。 用户注册后可以查看新闻。应用程序询问用户兴趣(经济、运动、汽车等)并保存它们。 我想将新闻作为来自 phpmysql 的通知发送给用户。 我必须决定将哪些新闻发送给哪些用户。所以我需要注册ID。

是安卓设备号吗? 还是安卓设备谷歌账号和安卓设备号的组合? 还是 android 设备 google 帐号和 android 设备号和我的应用程序用户 id 的组合?

例子

Android 设备 id = a => GCM RegID=a Android 设备 id = a , google account id=b => GCM RegID=ab Android device id = a , google account id=b, application x user id=c => GCM RegID=abc

如果 x 用户从应用程序中注销并且 y 用户在同一设备上登录,GCM RegId 会改变吗?如果它没有改变并且我将经济新闻推送给 y 用户(对经济不感兴趣),设备将向错误的用户显示错误的通知。 那么什么是GCM注册ID呢?

【问题讨论】:

【参考方案1】:

注册 ID 是 GCM 分配给安装在 Android 设备上的单个应用程序的单个实例的标识符。设备在注册到 Google Cloud Messaging 时会分配此标识符。 GCM 文档未指定此标识符中编码的信息。

在某些较旧的 Android 版本(4.0.4 之前)中,需要 Google 帐户才能注册到 GCM。

如果多个用户在同一设备上使用同一个应用,他们将拥有相同的注册 ID,因为 GCM 不关心哪个用户登录到该应用。由您的服务器确定当前在特定设备上登录到您的应用程序的用户,并根据该知识仅将相关的 GCM 消息传递到该设备。

【讨论】:

如果我卸载然后在同一设备上重新安装相同的应用程序,注册ID会不同吗?在这种情况下,我需要将注册 ID 与服务器应用上的设备唯一标识符相关联。 注册ID和token一样吗? @JulianA。是的,注册 ID 和注册令牌是一回事。 如果我卸载应用程序并重新安装它,那么它会改变。即使卸载后,有什么方法可以在一台设备上获得相同的 ID? @RajanKashiyani 我不知道。我已经好几年没有和 GCM 合作了。但是,如果您在卸载后收到新的注册 ID,我认为您无法更改该行为以返回相同的 ID。【参考方案2】:

注册 ID 是特定设备上特定包的唯一标识符。 GCM 使用此 ID 识别目标。

在你的情况下,这个 id 并不能解决你的问题。

案例 1:

如果您在注销时从 GCM 中注销设备,然后重新注册,这并不能保证注册 ID 会不同(可能不同)。

案例 2:

GCM 不时刷新注册 ID。

所以这个 id 不是用来识别登录用户的解决方案。


可能的解决方案

仅从 GCM 向设备发送通用消息,例如“嘿,你有新的东西,转到服务器”。现在设备将向服务器请求新项目。服务器将在此处识别登录的用户并为他提供相应的数据。

【讨论】:

您是否有“注册 ID 是特定设备上特定包的唯一标识符。GCM 使用此 ID 识别目标”的链接?

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

android GCM注册ID最大长度

GCM,注册 ID 和处理用户登录/注销

gcm 的注册 ID 生命周期

为啥 GCM 会为某些 android 设备返回空的注册 ID?

GCM注册ID过期时间

管理 GCM 注册 ID