php 极光推送完整方案

    技术2022-07-11  81

     /**

         * @Task

         */

        public function sendMessage(array $data){

            $res = $this->push($data["receiver"],$data["content"],$data["title"],$data["extras"]);

            if($res){

                $res = json_decode($res,true);

                var_dump($res["error"]);

                return $this->outPut(ErrorCode::SUCCESS);

            }else{

                return $this->outPut(ErrorCode::FAIL);

            }

        }

     

        public function push($receiver='all',$content='',$title='',$extras=array(),$m_time= 86400 ){

            $app_key          = '***'; //待发送的应用程序(appKey),只能填一个。

            $master_secret    = '***'; //主密码

            $url              = "https://api.jpush.cn/v3/push"; //推送的地址

            $base64           = base64_encode("{$app_key}:{$master_secret}");

            $header           = array("Authorization:Basic {$base64}","Content-Type:application/json");

            $data             = array();

            $data['platform'] = 'all'; //目标用户终端手机的平台类型android,ios,winphone

            $data['audience'] = $receiver; //目标用户

         

            $data['notification'] = array(

              //统一的模式--标准模式

              "alert"=>$content,

              //安卓自定义

              "android"=>array(

                    "alert"=>$content,

                    "title"=>$title,

                    "builder_id"=>1,

                    "extras"=>array("data"=>$extras)

                  ),

                //ios的自定义

                  "ios"=>array(

                      "alert"=>$content,

                      "badge" => "1",

                      "sound" => "default",

                      "content-available" => true,

                      "extras" => array("data" => $extras)

                  ),

            );

         

            //附加选项

            $data['options'] = array(

                  "sendno"=>time(),

                  "time_to_live"=>$m_time, //保存离线时间的秒数默认为一天

                  "apns_production"=>false, //指定 APNS 通知发送环境:0开发环境,1生产环境。

            );

            $param = json_encode($data);

            //dump($param);exit;

            $res = $this->push_curl($param,$header,$url);

            if($res){ //得到返回值--成功已否后面判断

                return $res;

            }else{ //未得到返回值--返回失败

                return false;

            }

        }

         

        //推送的Curl方法

        public function push_curl($param="",$header="",$url="") {

            if (empty($param)) { return false; }

            $postUrl = $url;

            $curlPost = $param;

            $ch = curl_init(); //初始化curl

            curl_setopt($ch, CURLOPT_URL,$postUrl); //抓取指定网页

            curl_setopt($ch, CURLOPT_HEADER, 0); //设置header

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上

            curl_setopt($ch, CURLOPT_POST, 1); //post提交方式

            curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

            curl_setopt($ch, CURLOPT_HTTPHEADER,$header); // 增加 HTTP Header(头)里的字段

            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 终止从服务端进行验证

            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

            $data = curl_exec($ch); //运行curl

            curl_close($ch);

            return $data;

        }

    Processed: 0.010, SQL: 9