エランの答えは正しいですが、私にはまだ少し曇っています。しかし、彼のおかげで解決策を見つけました。
これがあなたの応答だとしましょう:
{
"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++;
}
エランの答えから:
リクエストを送信するたびに Google からレスポンスが返されるため、このレスポンスをトリガーしたリクエストで Google に送信された登録 ID を把握しておく必要があります。削除する必要がある古い登録 ID は、その要求の 2 番目の登録 ID です。
これは、配列$registrationIDs[]のインデックス2と5をMY_REG_ID_1とMY_REG_ID_2に置き換える必要があることを意味します。
最後に double 値をチェックし、正確な重複を削除します。結果は、5 つの regid を持つ配列になります (または、MY_REG_ID_# で置き換えるのではなく、配列からそのインデックスを直接削除します)。