Eran的答案是正确的,尽管我发现它仍然有点模糊。但是,多亏了他,我找到了解决方案。
说这是你的回答:
{
"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"
}
]
}
如您所见,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++;
}
来自Eran的回答:
由于您发送的每个请求都会从 Google 获得响应,因此您应该知道在触发此响应的请求中向 Google 发送了哪些注册 ID。您必须删除的旧注册 ID 是该请求中的第二个注册 ID。
这意味着数组$registrationIDs[] 的索引 2 和 5 应替换为 MY_REG_ID_1 和 MY_REG_ID_2。
最后检查双精度值并删除确切的重复项。结果应该是一个包含 5 个注册表 id 的数组(或直接从数组中删除该索引,而不是替换为 MY_REG_ID_#)。