我使用InstanceId获取Id和令牌并存储在我的应用中的某个位置。重新安装应用程序后,我获得了新的令牌和ID。当我使用旧令牌和ID通过gcm发送消息时,它显示成功。但是,如果我只使用令牌发送消息,那么它显示规范。有人可以详细解释一下吗?
示例 - >结果:
1)" oldId:oldToken" - >成功
2)" oldToken" - >成功和规范新令牌
3)" newId:newToken" - >成功
4)" newToken" - >成功
我在第一个例子中有问题:为什么不显示规范和新令牌?
检查链接:click here
答案 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问题: