GCM注册ID是什么?

13

你好,我想在我的应用程序中添加GCM。我的应用程序是一款新闻应用程序。用户注册后可以查看新闻。应用程序会询问用户兴趣(经济、体育、汽车等),并保存它们。 我想通过php和mysql向用户发送通知。我必须决定向哪些用户发送哪些新闻。因此,我需要注册ID。

这是Android设备号码吗?还是Android设备Google帐户和Android设备号码的组合?
或者是Android设备Google帐户、Android设备号码和我的应用程序用户ID的组合?

例如:

Android设备ID = a => GCM RegID = a
Android设备ID = a, Google帐户ID = b => GCM RegID = ab
Android设备ID = a,Google 帐户ID = b,应用程序x的用户ID = c => GCM RegID = abc

如果x用户从应用程序注销,y用户登录相同的设备,GCM RegId会更改吗?如果不更改,并且我向不关心经济的y用户推送经济新闻,设备将向错误的用户显示错误的通知。那么GCM注册ID是什么?

2个回答

19

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

在一些旧版 Android(4.0.4 以前),需要使用 Google 帐户才能注册到 GCM。

如果多个用户在同一设备上使用同一应用程序,则它们将拥有相同的注册 ID,因为 GCM 不关心哪个用户登录到应用程序中。你的服务器需要确定当前哪个用户已登录到设备中的应用程序,并基于此知识仅向该设备传递相关的 GCM 消息。


如果我在同一设备上卸载然后重新安装相同的应用程序,注册ID是否会不同?在这种情况下,我需要将注册ID与我的服务器应用程序上的设备唯一标识符关联起来。 - ApheX
注册ID和“令牌”是一样的吗? - Julian A.
1
@JulianA。是的,注册ID和注册令牌是同一件事。 - Eran
如果我卸载应用程序并重新安装它,那么它将会更改。是否有任何方法可以在同一设备上即使卸载后仍然获得相同的ID? - Rajan Kashiyani
@RajanKashiyani 我不知道。我已经好几年没用过 GCM 了。然而,如果您在卸载后收到了新的注册 ID,则我认为您无法更改该行为以返回相同的 ID。 - Eran

10

Registration id是特定设备上特定包的唯一标识符。GCM使用此id标识目标。

在您的情况下,此id将无法解决您的问题。

情况1:

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

情况2:

GCM会定期刷新注册ID。

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


可能的解决方案

仅向设备发送通用消息,例如“嘿,您有新内容,请转到服务器”。现在设备将请求服务器获取新项目。在这里,服务器将识别已登录的用户并向其提供相应的数据。


你有没有关于“注册ID是特定设备上特定包的唯一标识符。GCM使用此ID识别目标”的链接? - Ajoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接