我目前正在使用GCM for android并使用PHP实现服务器代码。现在,我的代码如下所示:我应该如何在服务器端实施GCM推送过程?
$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),我发现我可以一次将设备发送到GCM。但是,这提出了另一个问题。 如果我拥有数百万的设备会怎么样?