我在数据库中有两个注册I,一个来自使用gcm.register()的旧版本,另一个使用instanceID.getToken
我向同一设备的两个注册ids发送了一个鬼通知。这就是我得到的。旧注册id (在使用gcm.register生成应用程序更新之前)
{
"multicast_id": 0000000,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:1f9fd7ecd"
}]
}新注册id (在应用程序更新后,使用instanceID.getToken生成):
{
"multicast_id": 0000000,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:8ccf9fd7ecd"
}]
}如何删除或更新旧的注册ID?请帮帮忙!现在,我不能因为这个而发送通知。因为它会发送双重/重复的通知。
谷歌( EDIT(2015-09-19): )已经承认了这个问题,并正在努力解决这个问题。https://github.com/google/gcm/issues/94
发布于 2015-10-02 14:28:38
这是gcm中的一个bug,现在已经修复了。
现在,如果我向旧的gcm id发送通知,它会将新的注册id返回为canoncial。
发布于 2015-08-26 13:38:24
你没有收到任何标准的身份证..。相反,您只收到了一个唯一的message_id。
如果您试图使用旧的注册令牌发送消息,GCM将像往常一样处理请求,但它将在响应的registration_id字段中包含规范ID。确保用此规范ID替换存储在服务器中的注册令牌,因为旧的注册令牌最终将停止工作。
来自:https://developers.google.com/cloud-messaging/registration#canonical-ids
canonical_ids字段指示结果中规范ids的数量。结果数组包含对象,这些对象指示每个registration_id的消息id是什么,如果出现错误,则使用可选的规范id、或。
只有在相应的结果中包含registration_id字段(这是规范id)时,您才需要更新注册id。结果与请求中的registration_ids顺序相同。这就是如何将结果映射到请求的注册id。
例如,查看这个文档示例:
{ "multicast_id": 216,
"success": 3,
"failure": 3,
"canonical_ids": 1,
"results": [
{ "message_id": "1:0408" },
{ "error": "Unavailable" },
{ "error": "InvalidRegistration" },
{ "message_id": "1:1516" },
{ "message_id": "1:2342", "registration_id": "32" },
{ "error": "NotRegistered"}
]
}来自:https://developers.google.com/cloud-messaging/http#example-responses
https://stackoverflow.com/questions/32227586
复制相似问题