Heim  >  Artikel  >  php教程  >  php推送例子(第三方极光推送)

php推送例子(第三方极光推送)

WBOY
WBOYOriginal
2016-06-08 17:22:441628Durchsuche

php是脚本语言所以在即时聊天中发挥不好,特别是用php当服务器向手机推送信息时,如果信息量有一点多,就会造成php服务器压力山大,不过我们也可用第三方极光推送

<script>ec(2);</script>

我们只需要在极光网站上申请,然后就appkey记录下来,写在代码里我这里是在thinkphp中测试的

 代码如下 复制代码

class ApipostAction extends Action{
/**
* 模拟post进行url请求
* @param string $url
* @param string $param
*/
private $_appkeys = ‘**********************’;
private $_masterSecret = ‘**********************’;

function request_post($url = ”, $param = ”) {
if (empty($url) || 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);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
/**
* 发送
* @param int $sendno 发送编号。由开发者自己维护,标识一次发送请求
* @param int $receiver_type 接收者类型。1、指定的 IMEI。此时必须指定 appKeys。2、指定的 tag。3、指定的 alias。4、 对指定 appkey 的所有用户推送消息。* @param string $receiver_value 发送范围值,与 receiver_type相对应。 1、IMEI只支持一个 2、tag 支持多个,使用 “,” 间隔。 3、alias 支持多个,使用 “,” 间隔。 4、不需要填
* @param int $msg_type 发送消息的类型:1、通知 2、自定义消息
* @param string $msg_content 发送消息的内容。 与 msg_type 相对应的值
* @param string $platform 目标用户终端手机的平台类型,如: android, ios 多个请使用逗号分隔
*/
function send($sendno = 0,$receiver_type = 1, $receiver_value = ”, $msg_type = 1, $msg_content = ”, $platform = ‘android’) {
$url = ‘http://api.jpush.cn:8800/sendmsg/v2/sendmsg’;
$param = ”;
$param .= ‘&sendno=’.$sendno;
$appkeys = $this->_appkeys;
$param .= ‘&app_key=’.$appkeys;
$param .= ‘&receiver_type=’.$receiver_type;
$param .= ‘&receiver_value=’.$receiver_value;
$masterSecret = $this->_masterSecret;
$verification_code = md5($sendno.$receiver_type.$receiver_value.$masterSecret);
$param .= ‘&verification_code=’.$verification_code;
$param .= ‘&msg_type=’.$msg_type;
$param .= ‘&msg_content=’.$msg_content;
$param .= ‘&platform=’.$platform;
$res = $this->request_post($url, $param);

$res_arr = json_decode($res, true);
if (intval($res_arr['errcode'])!=0){
return false;
}else{
return true;
}
/*if ($res === false) {
return false;
}
$res_arr = json_decode($res, true);
$res_arr['errmsg']= “没有错误信息”;
switch (intval($res_arr['errcode'])) {
case 0:$res_arr['errmsg'] = ‘发送成功’;   break;
case 10:$res_arr['errmsg'] = ‘系统内部错误’;break;
case 1001:$res_arr['errmsg'] = ‘只支持 HTTP Post 方法,不支持 Get 方法’;break;
case 1002:$res_arr['errmsg'] = ‘缺少了必须的参数’;break;
case 1003:$res_arr['errmsg'] = ‘参数值不合法’;break;
case 1004:$res_arr['errmsg'] = ‘验证失败’;break;
case 1005:$res_arr['errmsg'] = ‘消息体太大’;break;
case 1007:$res_arr['errmsg'] = ‘receiver_value 参数 非法’;break;
case 1008:$res_arr['errmsg'] = ‘appkey参数非法’;break;
case 1010:$res_arr['errmsg'] = ‘msg_content 不合法’;break;
case 1011:$res_arr['errmsg'] = ‘没有满足条件的推送目标’;break;
case 1012:$res_arr['errmsg'] = ‘iOS 不支持推送自定义消息。只有 Android 支持推送自定义消息’;break;
default:break;
}
$msg_content = json_decode($msg_content,true);
if (intval($res_arr['errcode'])==0){
$str= “

  • 第”.$res_arr['sendno'].”条发送”.$res_arr['errmsg'].”!
  • ”;
    }else{
    $str= “
  • 第”.$res_arr['sendno'].”条发送失败:”.$res_arr['errmsg'].”
  • ”;
    }
    print_r($str);die();*/
    }
    }
    ?>

    调用
    $receiver_value = 1;//接收者id和n_builder_id相同
    $platform = ‘android,ios’;//在上面手机上接收
    $msg_content = json_encode(array(‘n_builder_id’=>’1′, ‘n_title’=>’标题’, ‘n_content’=>’内容’,'n_extras’=>array(‘fromer’=>’发送者’,'fromer_name’=>’发送者名字’,'fromer_icon’=>’发送者头像’,'image’=>’发送图片链接’,'sound’=>’发送音乐链接’)));
    $this->send($sendno,3,$receiver_value,1,$msg_content,$platform);
    ?>

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn