首页 文章

一个设备上有两个注册ID

提问于
浏览
0

我的应用程序在Nexus 5(Marshmallow)上运行,它有2个有效的注册ID . 只是想通过GCM行为知道这是否正常?


这是它给我带来麻烦的方式:

Android M提出了群组权限 - 这意味着用户选择是否希望该应用访问其设备标识符(Android ID) . 让我们假设他否认它,我无法识别设备 . 我的应用程序的功能是用户可以从多个设备登录,所有设备都保持同步 . 因为用户可以使用多个设备,所以我必须处理多个注册ID才能发送推送消息(我无法确定用户所在的设备数量,因为他们可以拒绝提供设备标识符) . 这意味着我无法删除/更新服务器端的任何注册ID,但只会将每个推送消息发送给用户的所有记录ID,希望该特定用户登录的所有设备都将收到消息 .

因为我有一个有两个有效注册ID的设备,所以我收到了2个通知 .


在客户端,我们注意到注册ID的频繁更改,我们有一个不断生成注册ID和更新服务器的类 .

1 回答

  • 0

    有多个registration ID可能是客户端应用程序中的错误(您必须处理) .

    确保每个设备只发送一个通知的唯一方法是在服务器端实现规范ID . 它作为“canonical_ids”包含在webservice响应中 .

    Canonical ID如果客户端应用程序中的错误触发同一设备的多个注册,则可能很难协调状态,并且客户端应用程序可能最终会出现重复消息 . 实施规范ID可以帮助您更轻松地从这些情况中恢复 . 规范注册ID是客户端应用程序请求的最后一次注册的注册令牌 . 这是服务器在向设备发送消息时应使用的ID . 如果您尝试使用旧的注册令牌发送消息,GCM将照常处理请求,但它将在响应的registration_id字段中包含规范ID . 确保使用此规范ID替换存储在服务器中的注册令牌,因为最终旧注册令牌将停止工作 .

    这是一个相关的问题android GCM get original id of canonical id,它解决了规范ID在实际代码中的工作原理

相关问题