現在、Android 用の GCM に取り組んでおり、PHP を使用してサーバー コードを実装しています。現在、私のコードは次のようになっています。
$url = 'https://android.googleapis.com/gcm/send';
$registrationIDs = array('device1', 'device2');//device ids from database.
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
実行すると、結果は次のようになります。
{
"multicast_id": 5407120473654582795,
"success": 1,
"failure": 1,
"canonical_ids": 1,
"results": [
{
"registration_id": "skjdfhksdfgksudghldshfgkdjfghdiugf",
"message_id": "0:1354101888763222%14c0e050f9fd7ecd"
},
{
"error": "MismatchSenderId"
}
]
}
GCM ページに注意事項があります。
- メッセージが作成されたが、結果として正規の登録 ID が返された場合は、現在の登録 ID を正規の登録 ID に置き換える必要があります。
- 返されたエラーが NotRegistered の場合、アプリケーションがデバイスからアンインストールされているため、その登録 ID を削除する必要があります。
私の質問は次のとおりです。
- サーバーの出力に基づいて、正規の結果が 1 つあります。しかし、それがどのデバイスに属しているかはわかりません。どのように判断すればよいですか?
- 質問 (1) に基づいて、デバイスを一度に 1 つずつ GCM に送信できる可能性があると考えています。しかし、これは別の問題を提起します。何百万ものデバイスを持っていても大丈夫ですか?