PHP 向多个设备发送 Android 推送通知的代码
PHP code to send Android push notification to multiple device
下面是 php 的代码,我在其中对 GCM 服务器进行了 curl 调用:
//CODE TO SEND PUSH NOTIFICATION
define('API_ACCESS_KEY', 'XXXXXXXXXXXXXXXXXXXXX');
$i = 0;
$result1 = mysql_query("SELECT * FROM `my_devices`") or die($log->lwrite("Error" . mysql_error()));
while ($row2 = mysql_fetch_array($result1)) {
$i = $i + 1;
$msg = array(
'message' => $resultTextValue
);
$fields = array(
'registration_ids' => array($row2['gcmId']),
'data' => $msg
);
$headers = array(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$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);
}
我的代码正在开发中,最多可注册 10 个设备。因此,将通知发送到所有设备需要花费一些时间。
我担心的是:部署应用程序后,我将有数千台设备发送推送通知。 推送通知调用不会花费大量时间吗?
我是 PHP 的新手,从一些示例应用程序中复制了上面的代码。
先把所有注册id放到一个数组中
$regIDS = array(); // set variable as array
// get all ids in while loop and insert it into $regIDS array
while ($row2 = mysql_fetch_array($result1)) {
array_push($regIDS ,$row2['gcmId'])
}
然后在 $fields 中,提及数组变量名称 $regIDS 而不是 array($row2['gcmId']
$fields = array(
'registration_ids' => $regIDS ,
'data' => $msg
);
现在您可以在单个推送通知消息中向多个设备发送消息。
http://php.net/manual/en/function.array-push.php
示例图片=
这里我在数据库中只有两个 regID,所以这里 Success=2 in only one push notification
下面是 php 的代码,我在其中对 GCM 服务器进行了 curl 调用:
//CODE TO SEND PUSH NOTIFICATION
define('API_ACCESS_KEY', 'XXXXXXXXXXXXXXXXXXXXX');
$i = 0;
$result1 = mysql_query("SELECT * FROM `my_devices`") or die($log->lwrite("Error" . mysql_error()));
while ($row2 = mysql_fetch_array($result1)) {
$i = $i + 1;
$msg = array(
'message' => $resultTextValue
);
$fields = array(
'registration_ids' => array($row2['gcmId']),
'data' => $msg
);
$headers = array(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$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);
}
我的代码正在开发中,最多可注册 10 个设备。因此,将通知发送到所有设备需要花费一些时间。
我担心的是:部署应用程序后,我将有数千台设备发送推送通知。 推送通知调用不会花费大量时间吗?
我是 PHP 的新手,从一些示例应用程序中复制了上面的代码。
先把所有注册id放到一个数组中
$regIDS = array(); // set variable as array
// get all ids in while loop and insert it into $regIDS array
while ($row2 = mysql_fetch_array($result1)) {
array_push($regIDS ,$row2['gcmId'])
}
然后在 $fields 中,提及数组变量名称 $regIDS 而不是 array($row2['gcmId']
$fields = array(
'registration_ids' => $regIDS ,
'data' => $msg
);
现在您可以在单个推送通知消息中向多个设备发送消息。
http://php.net/manual/en/function.array-push.php
示例图片=
这里我在数据库中只有两个 regID,所以这里 Success=2 in only one push notification