2014-08-27 208 views
10

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

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

Android装置ID = A => GCM的RegID =一个
Android装置ID = A, 谷歌帐户ID = B => GCM的RegID = AB
Android装置ID = A,GOOGLE 帐户ID = b,应用程序x用户ID = c => GCM RegID = abc

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

回答

15

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

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

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

+0

如果我卸载,然后重新安装在同一个设备上的相同的应用程序,注册ID将会不同?在这种情况下,我需要将注册ID与我的服务器应用程序上的设备唯一标识符相关联。 – ApheX 2016-03-22 09:17:07

8

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

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

案例1:

如果从GCM在注销注销设备,并重新注册,这是不是保证这项注册ID将是不同的(可能是,也有可能)。

情况2:

GCM刷新注册ID不时。

所以这个ID是不会去一个解决方案来识别登录的用户。


可能的解决方法

从GCM仅发送通用消息的装置,比如“嘿,你有一些新的东西,去到服务器”。现在设备将向服务器请求新项目。这里服务器将识别登录的用户并给他相应的数据。

+0

您是否有任何链接“注册ID是特定设备上特定软件包的唯一标识符.GCM使用此ID标识目标”? – Ajoy 2015-06-10 17:06:06