PHP代码将Android推送通知发送到多个设备

时间:2015-01-04 11:54:23

标签: php android google-cloud-messaging android-notifications

下面是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新手并从一些示例应用程序中复制了上述代码。

如果我做得对,请帮助我。或者指导我正确的方法。

请帮忙!

提前致谢。

1 个答案:

答案 0 :(得分:1)

首先将所有注册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'])
}

然后在$字段中,提及数组变量名称 $ regIDS 而不是数组($ row2 [' gcmId']

$fields = array(
        'registration_ids' => $regIDS ,
        'data' => $msg
 );

您现在可以通过一次推送通知消息将msg发送到多个设备。

http://php.net/manual/en/function.array-push.php

示例pic =

这里我在数据库中只有两个regID,所以这里只有一次推送通知调用中的Success = 2

enter image description here