2013-05-27 152 views
8

在我的应用程序中,我想发送通知给特定的用户,而不考虑设备。 用户可以从任何设备登录到应用程序。发送GCM消息给特定用户

这是我第一次使用GCM。我读过文档说,当设备注册到GCM服务器时,设备将该唯一ID发送到服务器,然后保存该值以发送消息。

那么当他从不同设备登录到应用程序时,如何向特定用户发送通知?

+0

请参阅本http://sunil-android.blogspot.in/2013/05/gcm-in-android.html –

回答

6

这个唯一的ID(aka注册ID)在给定应用程序/设备时是唯一的,所以如果此用户在另一个设备上注册GCM服务,它将生成另一个注册ID。

GCM服务器向Android应用程序发出的ID,允许其接收消息。一旦Android应用程序具有注册ID,它将其发送到第三方应用程序服务器,该服务器使用该应用程序服务器来识别每个已注册接收给定Android应用程序消息的设备。换句话说,注册ID绑定到特定设备上运行的特定Android应用程序。

当你说登录我想你reffering到你的服务器,对不对?

我这样问,因为如果您的应用程序的目标是前4个API版本,GCM服务需要Google帐户。

对于运行Android 4.0.4或更高版本的设备,不需要Google帐户。

如果GCM在设备上检测到可以访问该服务的Google帐户, 如果GCM未检测到该帐户,它将返回一个ACCOUNT_MISSING错误。

因此,如果您使用之前已注册过Google帐户的其他设备,则可能会发生这种情况,即使用不属于您的Google帐户访问GCM服务。

但是,如果重要的帐户是由您的服务器管理的帐户,那么我认为这并不重要。

更新时间:

您必须将通知发送到属于连接到服务器的用户的所有registrationID。如果您在服务器上维护多个设备,则无法知道用户当前正在使用哪个设备。

You can use multicast

Reference:GCM

+0

Yes.User必须登录到我的服务器。 – Sunny

+0

我想我可以检查我的服务器中的userid + Unique id然后发送notification.right? – Sunny

+0

使用唯一标识符就足以发送通知,但GCM可以更改它,然后您必须更新绑定到数据库中用户标识的唯一标识。有关我提供的链接的详细信息[http://developer.android.com/google/gcm/gcm.html#server](http://developer.android.com/google/gcm/gcm。HTML#服务器)。 – AlexBcn