我的应用程序在Nexus 5(Marshmallow)上运行,它有2个有效的注册ID . 只是想通过GCM行为知道这是否正常?
这是它给我带来麻烦的方式:
Android M提出了群组权限 - 这意味着用户选择是否希望该应用访问其设备标识符(Android ID) . 让我们假设他否认它,我无法识别设备 . 我的应用程序的功能是用户可以从多个设备登录,所有设备都保持同步 . 因为用户可以使用多个设备,所以我必须处理多个注册ID才能发送推送消息(我无法确定用户所在的设备数量,因为他们可以拒绝提供设备标识符) . 这意味着我无法删除/更新服务器端的任何注册ID,但只会将每个推送消息发送给用户的所有记录ID,希望该特定用户登录的所有设备都将收到消息 .
因为我有一个有两个有效注册ID的设备,所以我收到了2个通知 .
在客户端,我们注意到注册ID的频繁更改,我们有一个不断生成注册ID和更新服务器的类 .
1 回答
有多个registration ID可能是客户端应用程序中的错误(您必须处理) .
确保每个设备只发送一个通知的唯一方法是在服务器端实现规范ID . 它作为“canonical_ids”包含在webservice响应中 .
这是一个相关的问题android GCM get original id of canonical id,它解决了规范ID在实际代码中的工作原理