我正在开发一个具有登录功能的应用程序。我每个应用程序只生成一个gcm注册ID。如果其他用户在同一个应用程序中签名,他将开始接收针对前一个用户的通知。 如何处理这种情况,以便每个用户都能获得针对他/她的通知? 我应该为每个用户生成gcm reg id吗? 处理这种情况的标准方法是什么?
答案 0 :(得分:7)
您可以尝试以下方法:
GCM令牌是特定于应用的,但您在服务器上建立的关联完全取决于您。
我不能强调它,GCM生成的令牌是 APP SPECIFIC 。如果您的用户登录多个设备,则您的服务器应该处理该问题,并将user ID
与多个Registration ID
令牌相关联。
GCM服务器向Android应用程序发出的允许的ID 它接收消息。一旦Android应用程序有了 注册ID,它将它发送到第三方应用服务器, 它使用它来识别已注册接收的每个设备 给定Android应用程序的消息。换句话说,一个 注册ID与运行的特定Android应用程序绑定 一个特定的设备。
从文档中,您的服务器也应该:
在编写使用GCM的客户端应用程序之前,您必须拥有一个 满足以下条件的应用程序服务器:
- 能够与您的客户沟通。
- 能够将格式正确的请求发送到GCM连接服务器。
- 能够处理请求并使用指数后退重新发送它们。
- 能够存储API密钥和客户端注册令牌。
- 能够生成消息ID以唯一标识它发送的每条消息。每个发件人ID的邮件ID应该是唯一的。
编辑:您可以阅读有关GCM here的更多信息。
如需进一步阅读,您还可以在Device Group Messaging上阅读更多内容。
您还可以下载一些代码示例here。
答案 1 :(得分:5)
您应该按用户存储regID。
这是因为有一些测试用例是user1注销而user2是登录的。在这种情况下,如果你已经存储了特定于regID应用程序但没有与用户绑定,那么user2也会收到通知。
因此,您需要根据用户,应用以及特定设备存储regID。
答案 2 :(得分:1)
当然是每次有人下载你的应用程序时,你的应用程序应该将它们注册到GCM并获得一个注册令牌,这需要发送到你的应用服务器,在你的应用服务器上你需要弄清楚你是谁也发送通知。你可能应该在登录时发送一些登录信息和注册令牌,这样你就可以识别每个人,然后写一些php或Jquery发送给个人或所有用户。您还应该在每次登录时发送reg令牌,因为这些令牌可以在没有警告的情况下发生变化。
您的应用服务器应该能够处理删除未使用的注册令牌并添加新令牌
答案 3 :(得分:0)
每个Android设备都会生成一个唯一的GCM注册ID。来自服务器端的推送通知将根据设备ID发送。因此,在登录时,您可以将GCM reg id发送到您的服务器。因此,从服务器端推送通知将发送到设备..,这是实际的功能。
希望这会有所帮助