GCM:仅为当前用户登录的应用程序发送通知

时间:2013-07-22 11:42:09

标签: android google-cloud-messaging

对于我正在使用的应用程序,我需要集成Google Cloud Messaging。在玩了一些不同的例子之后,我能够发送和接收关于我的deivce的通知 但是,我遇到了一个有趣的情况。据我所知(如果我错了,请纠正我),每个设备和每个应用程序都会发出registration_id。

我正在使用的应用程序支持登录功能。安装应用程序并且用户第一次登录(让它为“UserA”)时,我从GCM请求registration_id,然后将其发送到我的服务器。

现在假设UserA注销并将其设备提供给某个UserB进行登录。换句话说,UserB使用UserA的设备登录。

问题是,如果同时UserA收到通知,UserB将能够拦截它。如果UserB收到通知,他将无法收到通知 这似乎是正常的,因为registration_id是每个设备和每个应用程序,但对我的情况似乎不合理。

所以我问是否有办法让registration_id依赖于某些用户ID(除了设备和应用程序)?或者我怎样才能使登录用户只接收他自己的通知?

1 个答案:

答案 0 :(得分:5)

是的,每个设备的应用都有一个Google注册ID。

但您可以随时在自己的服务器上注册和注销用户,这些用户实际上会向GCM发送消息,GCM会将此消息发送到已注册的设备。

为您的服务器定义一些接口,如registerOnServer和unRegisteronServer,为此接口上的每个用户发送一些唯一值。

因此,在您的情况下,当A使用Log in时,首先在GCM上进行注册,并使用registerOnServer inteface在您的服务器上注册用户,并在用户登录时将与他有关的通知发送给GCM以发送给设备

当A注销时,使用unRegisterServer取消注册,并且当A未注册时,不要从服务器向GCM发送任何消息。

所以,现在如果B即使使用相同的设备登录,也可以在服务器上注册并发送他的消息。

这将解决你的问题!