Mar*_*ina 15 java android push-notification google-cloud-messaging
当为1个设备GCM具有多个regids时,返回规范id错误:
{"multicast_id":xxxx,"success":2,"failure":0,"canonical_ids":1,"results":[{"message_id":"xxxxx"},{"registration_id":"newest reg ID here","message_id":"xxxxxx"}]}
Run Code Online (Sandbox Code Playgroud)
所以它显示了GCM应该使用的最新regid,但为什么不显示你应该删除的regid(旧的)?我怎么知道旧的regid是什么以及我应该从我的数据库中删除哪一个?
伊兰的回答是正确的,虽然我发现它对我来说仍然有点模糊.但是,多亏了他,我找到了解决方案.
说这是你的回答:
{
"multicast_id":xxxxx,
"success":7,
"failure":0,
"canonical_ids":2,
"results":[
{
"message_id":"0:xxx%xxxxx"
},
{
"message_id":"0:xxx%xxxxx"
},
{
"registration_id":"MY_REG_ID_1",
"message_id":"0:xxx%xxxxx"
},
{
"message_id":"0:xxx%xxxxx"
},
{
"message_id":"0:xxx%xxxxx"
},
{
"registration_id":"MY_REG_ID_2",
"message_id":"0:xxx%xxxxx"
},
{
"message_id":"0:xxx%xxxxx"
}
]
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,7条消息中有2条是重复的.
这是我向服务器发送消息的方式:
$tokenResult = mysql_query("SELECT reg_ids FROM table_with_regids"); //
$i = 0;
while($row = mysql_fetch_array($tokenResult)) {
$registrationIDs[$i] = $row['reg_ids'];
$i++;
}
Run Code Online (Sandbox Code Playgroud)
来自伊兰的回答:
由于您收到Google针对您发送的每个请求的回复,因此您应该知道在触发此回复的请求中向Google发送了哪些注册ID.您必须删除的旧注册ID是该请求中的第二个注册ID.
这意味着数组$ registrationIDs []的索引2和5应该替换为MY_REG_ID_1和MY_REG_ID_2.
最后检查double值并删除完全相同的重复项.结果应该是一个包含5个regids的数组(或直接从数组中删除该索引,而不是替换为MY_REG_ID_#).
归档时间: |
|
查看次数: |
5389 次 |
最近记录: |