我目前正在使用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。但是,這提出了另一個問題。 如果我擁有數百萬的設備會怎麼樣?