我已经设置了php脚本,它将发送推送通知。一切正常,它会向阵列中的每个设备发送相同的消息。但是有什么问题,如果我想发送不同的消息做每个设备怎么办(例如,取决于设备的偏好)?
这里的方法是什么?我的第一个想法是分别为每个设备调用pushNotification函数而不是一次调用它并将设备数组发送到GCM?
这是我正在使用的代码,所以请指教......
function sendPushNotificationToGCM($registatoin_ids, $message) {
//Google cloud messaging GCM-API url
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
// Google Cloud Messaging GCM API Key
define("GOOGLE_API_KEY", "my_api_key");
$headers = array(
'Authorization: key=' . GOOGLE_API_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
curl_close($ch);
return($result);
}
$devices = array();
while($results = $result->fetch_array()) {
$devices[] = $results['dev_reg_id'];
}
//return $devices;
$pushMessage = $message;
$message = array("m" => $pushMessage);
$pushStatus = sendPushNotificationToGCM($devices, $message);
答案 0 :(得分:2)
您无法向GCM服务器发送同一HTTP请求中的不同设备。如果每个设备都需要唯一的消息,则还需要对sendPushNotificationToGCM
功能进行唯一调用。如果某些设备共享相同的消息,您可以在同一个函数调用中将该消息发送给它们。