什么是GCM注册ID?

时间:2014-08-27 11:30:36

标签: android push-notification google-cloud-messaging

您好我想将gcm添加到我的应用程序中。我的申请是一个新闻申请。 用户可在注册后查看新闻。应用程序询问用户兴趣(经济,体育,汽车等)并保存它们。 我想通过php和mysql发送消息给用户。 我必须决定向哪些用户发送哪些新闻。所以我需要注册ID。

是android设备号吗? 或Android设备谷歌帐户和Android设备号的组合?
或Android设备谷歌帐户和Android设备号码和我的应用程序用户ID的组合?

实施例

  

Android设备ID = a => GCM RegID = a
Android设备ID = a,   谷歌帐户ID = b => GCM RegID = ab
Android设备ID = a,谷歌   account id = b,application x user id = c => GCM RegID = abc

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

2 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分:9)

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

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

案例1:

如果您在注销时从GCM取消注册设备,并再次注册,则无法保证注册ID不同(可能是也可能不是)。

案例2:

GCM不时刷新注册ID。

因此,此ID不会成为识别已登录用户的解决方案。


可能的解决方案

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