我应该生成特定于Android GCM注册ID应用程序还是特定于用户?

Rus*_*kar 5 android google-cloud-messaging

我正在开发一个具有登录功能的应用程序.我每个应用程序只生成一个gcm注册ID.如果其他用户在同一个应用程序中签名,他将开始接收针对前一个用户的通知.如何处理这种情况,以便每个用户都能获得针对他/她的通知?我应该为每个用户生成gcm reg id吗?处理这种情况的标准方法是什么?

Mau*_*ker 7

您可以尝试以下方法:

  1. 当用户注销时,发送删除服务器上令牌的请求,并将其删除到您的应用上;
  2. 一旦用户注销,您只需删除服务器上"用户ID"与"GCM令牌"(或注册ID)的关联.当有人再次登录时,您会与该令牌建立新的关联.

GCM令牌是特定于应用程序的,但您在服务器上建立的关联完全取决于您.

而且我不能强调它,GCM生成的令牌是APP SPECIFIC.如果您的用户登录多个设备,您的服务器应该处理该问题,并将其user ID与多个Registration ID令牌相关联.

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

从文档中,您的服务器还应该:

在编写使用GCM的客户端应用程序之前,必须具有符合以下条件的应用程序服务器:

  • 能够与您的客户沟通.
  • 能够将格式正确的请求发送到GCM连接服务器.
  • 能够处理请求并使用指数退避重新发送它们.
  • 能够存储API密钥和客户端注册令牌.
  • 能够生成消息ID以唯一标识它发送的每条消息.每个发件人ID的邮件ID应该是唯一的.

编辑:您可以在这里阅读更多关于GCM的信息.

有关进一步阅读,您还可以阅读有关Device Group Messaging的更多信息.

您也可以在此处下载一些代码示例.


Kis*_*oid 5

您应该按用户存储regID.

这是因为存在user1注销并且user2登录的测试用例.在这种情况下,如果您已存储特定于regID应用且不与用户绑定,则user2也将获得通知.

因此,您需要根据用户,应用程序以及特定于设备来存储regID.