tp 极光推送

1. 推送类

[php]  view plain  copy
  1. </pre><pre>  

[php]  view plain  copy
  1. <?php  
  2. class Jpush{  
  3.     
  4.     private $app_key = 'd349***1184';            //待发送的应用程序(appKey),只能填一个。  
  5.     private $master_secret = 'cd9a****6867aa84f';      //主密码  
  6.     private $url = "https://api.jpush.cn/v3/push";            //推送的地址  
  7.    
  8.     //若实例化的时候传入相应的值则按新的相应值进行  
  9.     public function __construct($app_key=null, $master_secret=null,$url=null) {  
  10.         if ($app_key$this->app_key = $app_key;  
  11.         if ($master_secret$this->master_secret = $master_secret;  
  12.         if ($url$this->url = $url;  
  13.     }  
  14.    
  15.     /*  $receiver 接收者的信息 
  16.         all 字符串 该产品下面的所有用户. 对app_key下的所有用户推送消息 
  17.         tag(20个)Array标签组(并集): tag=>array('昆明','北京','曲靖','上海'); 
  18.         tag_and(20个)Array标签组(交集): tag_and=>array('广州','女'); 
  19.         alias(1000)Array别名(并集): alias=>array('93d78b73611d886a74*****88497f501','606d05090896228f66ae10d1*****310'); 
  20.         registration_id(1000)注册ID设备标识(并集): registration_id=>array('20effc071de0b45c1a**********2824746e1ff2001bd80308a467d800bed39e'); 
  21.      
  22.         $content 推送的内容。 
  23.         $extras  附加字段  array类型 
  24.         $m_time 保存离线时间的秒数默认为一天(可不传)单位为秒 
  25.     */  
  26.     public function push($receiver='all'$title=''$content=''$extras$m_time='86400'){  
  27.         $base64=base64_encode("$this->app_key:$this->master_secret");  
  28.         $header=array("Authorization:Basic $base64","Content-Type:application/json");  
  29.         $data = array();  
  30.         $data['platform'] = 'android';          //目标用户终端手机的平台类型android,ios,winphone  
  31.         $data['audience'] = $receiver;          //目标用户  
  32.         //发送通知  
  33.         $data['notification'] = array(  
  34.             //统一的模式--标准模式  
  35.             //"alert"=>$content,     
  36.             //安卓自定义  
  37.             "android"=>array(  
  38.                 "alert"=>$content,  
  39.                 "title"=>$title,  
  40.                 "builder_id"=>1,  
  41.                 "extras"=>$extras  
  42.             ),  
  43.             //ios的自定义  
  44.             "ios"=>array(  
  45.                 // "alert"=>$content,  
  46.                 "badge"=>"1",  
  47.                 "sound"=>"default",  
  48.                 // "extras"=>array("type"=>$m_type, "txt"=>$m_txt)  
  49.             ),  
  50.         );  
  51.    
  52.         //自定义信息  
  53.         $data['message'] = array(  
  54.             "msg_content"=>$content,  
  55.             "extras"=>$extras  
  56.         );  
  57.    
  58.         //附加选项  
  59.         $data['options'] = array(  
  60.             "sendno"=>time(),  
  61.             "time_to_live"=>$m_time,      //保存离线时间的秒数默认为一天  
  62.             "apns_production"=>1,        //指定 APNS 通知发送环境:0开发环境,1生产环境。  
  63.         );  
  64.         $param = json_encode($data);  
  65.         $res = $this->push_curl($param,$header);  
  66.            
  67.         if($res){       //得到返回值--成功已否后面判断  
  68.             return $res;  
  69.         }else{          //未得到返回值--返回失败  
  70.             return false;  
  71.         }  
  72.     }  
  73.    
  74.     //推送的Curl方法  
  75.     public function push_curl($param="",$header="") {  
  76.         if (empty($param)) { return false; }  
  77.         $postUrl = $this->url;  
  78.         $curlPost = $param;  
  79.         $ch = curl_init();                                      //初始化curl  
  80.         curl_setopt($ch, CURLOPT_URL,$postUrl);                 //抓取指定网页  
  81.         curl_setopt($ch, CURLOPT_HEADER, 0);                    //设置header  
  82.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);            //要求结果为字符串且输出到屏幕上  
  83.         curl_setopt($ch, CURLOPT_POST, 1);                      //post提交方式  
  84.         curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);  
  85.         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);           // 增加 HTTP Header(头)里的字段   
  86.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        // 终止从服务端进行验证  
  87.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  
  88.         $data = curl_exec($ch);                                 //运行curl  
  89.         curl_close($ch);  
  90.         return $data;  
  91.     }  
  92. }  
  93.   
  94. ?>  

2.执行推送的方法

[php]  view plain  copy
  1.       public function pushMess(){  
  2.     vendor('Jpush/Jpush');  
  3.     $pushObj = new Jpush();  
  4.     //组装需要的参数  
  5.     $receive = 'all';     //全部  
  6.     //$receive = array('tag'=>array('1','2','3'));      //标签  
  7.     //$receive = array('alias'=>array('111'));    //别名  
  8.     $title = $_POST['title'];  
  9.     $content = ***;  
  10.     $m_time = '86400';        //离线保留时间  
  11.     $extras = array("versionname"=>***, "versioncode"=>***);   //自定义数组  
  12.     //调用推送,并处理  
  13.     $result = $pushObj->push($receive,$title,$content,$extras,$m_time);  
  14.     if($result){  
  15.         $res_arr = json_decode($result, true);  
  16.         if(isset($res_arr['error'])){   //如果返回了error则证明失败  
  17.             //错误信息 错误码  
  18.             $this->error($res_arr['error']['message'].':'.$res_arr['error']['code'],U('Jpush/index'));      
  19.         }else{  
  20.             //处理成功的推送......  
  21.             //可执行一系列对应操作~  
  22.             $this->success('推送成功~');  
  23.         }  
  24.     }else{      //接口调用失败或无响应  
  25.         $this->error('接口调用失败或无响应~');  
  26.     }  
  27. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值