負責與用戶端裝置對談,記錄API
key及用戶行動裝置之registration ID,並向GCM伺服器(https://android.googleapis.com/gcm/send.)送出POST請求封包。
POST請求封包可以是明碼(plain text)或JSON格式,但多點廣播時只能使用JSON格式。
JSON格式POST請求封包 header中必須內含以下資料:
l
Authorization: key = YOUR_API_KEY
l
Content-Type: application/jsontext)。
JSON格式POST請求封包 body必須是JSON物件格式字串,可包含以下欄位內容:
l registration_ids 必要欄位。由戶行動裝置之registration Id所組成之字串陣列,最多1000個。
l data 選用欄位。JSON物件格式字串,用來表示所要推播的訊息資料,例如:"data":{"title":"Android Apps初學必修課","isbn":
"978-986-276-704-7"},總資料量不可超過4kb。
l dry_run 選用欄位,預設為false。當設定此項,表示測試POST請求封包,但GCM Server並不會真正送出推播訊息。
以下PHP程式碼使用JSON格式送出GCM多點訊息推播請求封包。
define("GOOGLE_API_KEY",
"your_api_key");
$registrationIDs = array( 'reg_id1', 'reg_id2',
...);
//payload
data
$payload = array('title' => '耕雲智慧', 'subtitle' => '測試訊息推播');
//http header
$headers = array('Authorization: key=' . GOOGLE_API_KEY,
'Content-Type:
application/json');
$fields = array('registration_ids' => $registrationIDs,
'data' => $payload);
//curl connection
$ch = curl_init();
curl_setopt($ch,
CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true
);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>