使用InstanceId与Gcm令牌混淆

时间:2016-05-09 10:48:29

标签: google-cloud-messaging

我使用InstanceId获取Id和令牌并存储在我的应用中的某个位置。重新安装应用程序后,我获得了新的令牌和ID。当我使用旧令牌和ID通过gcm发送消息时,它显示成功。但是,如果我只使用令牌发送消息,那么它显示规范。有人可以详细解释一下吗?

示例 - >结果:

1)" oldId:oldToken" - >成功

2)" oldToken" - >成功和规范新令牌

3)" newId:newToken" - >成功

4)" newToken" - >成功

我在第一个例子中有问题:为什么不显示规范和新令牌?

检查链接:click here

1 个答案:

答案 0 :(得分:0)

请注意,当您从服务器向Google的gcm服务器发送邮件时,会在响应中返回Canonical ID。 canonical registration ID是客户端应用程序请求的最后一次注册的注册令牌。这是服务器在向设备发送消息时应使用的ID。

从此thread

  

当您在Google的回复中收到规范注册ID时,GCM服务器会接受该消息,GCM服务器会尝试将其传递给设备。它是否实际发送到设备取决于设备是否可用(即连接到互联网)。因此,如果您的服务器向旧ID和新ID发送GCM消息,则设备可能会收到两条消息。

规范注册ID定义为应用程序请求的最后一次注册的ID。这是服务器在向设备发送消息时应使用的ID。如果稍后尝试使用不同的注册ID发送消息,GCM将照常处理请求,但它将在响应的registration_id字段中包含规范注册ID。请务必使用此registration ID替换服务器中存储的canonical ID

  

旧注册ID可以暂时保持活动状态。但是,Google会告诉您,您需要通过对已发送邮件的回复中的canonical ID来更新特定设备/应用组合的注册。

检查这个相关的SO问题: