首頁 php教程 PHP源码 php 极光推送 Push API v2

php 极光推送 Push API v2

May 24, 2016 am 09:11 AM

php代码

<?php
	/**
		之前分享的极光推送Push-API-v3有问题(由于手机端没有对接测试不够全面)
		请大家谅解
	
	*/
 error_reporting(E_ALL^E_NOTICE);
header(&#39;Content-type: text/html;charset=UTF-8&#39;);
 
class jpush {
	private $_masterSecret = &#39;&#39;;
	private $_appkeys = &#39;&#39;;
	
	/**
	 * 构造函数
	 * @param string $username
	 * @param string $password
	 * @param string $appkeys
	 */
	function __construct($masterSecret = &#39;&#39;,$appkeys = &#39;&#39;) {
		$this->_masterSecret = $masterSecret;
		$this->_appkeys = $appkeys;
	}
	/**
	 * 模拟post进行url请求
	 * @param string $url
	 * @param string $param
	 */
	function request_post($url = &#39;&#39;, $param = &#39;&#39;) {
		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 = &#39;&#39;, $msg_type = 1, $msg_content = &#39;&#39;, $platform = &#39;android,ios&#39;) {
		$url = &#39;http://api.jpush.cn:8800/sendmsg/v2/sendmsg&#39;;
		$param = &#39;&#39;;		
		$param .= &#39;&sendno=&#39;.$sendno;			
		$appkeys = $this->_appkeys;				
		$param .= &#39;&app_key=&#39;.$appkeys;		
		$param .= &#39;&receiver_type=&#39;.$receiver_type;				
		$param .= &#39;&receiver_value=&#39;.$receiver_value;		
		$masterSecret = $this->_masterSecret;		
		$verification_code = md5($sendno.$receiver_type.$receiver_value.$masterSecret);				
		$param .= &#39;&verification_code=&#39;.$verification_code;			
		$param .= &#39;&msg_type=&#39;.$msg_type;			
		$param .= &#39;&msg_content=&#39;.$msg_content;		
		$param .= &#39;&platform=&#39;.$platform;				
		$res = $this->request_post($url, $param);		
		if ($res === false) {
			return false;
		}	
		$res_arr = json_decode($res, true);	
	    $res_arr[&#39;errmsg&#39;]= "没有错误信息";
		switch (intval($res_arr[&#39;errcode&#39;])) {
			case 0:
			    $res_arr[&#39;errmsg&#39;] = &#39;发送成功&#39;;
				//echo &#39;发送成功&#39;;			    
				break;
			case 10:
			    $res_arr[&#39;errmsg&#39;] = &#39;系统内部错误&#39;;
				//echo &#39;系统内部错误&#39;;
				break;
			case 1001:
			    $res_arr[&#39;errmsg&#39;] = &#39;只支持 HTTP Post 方法,不支持 Get 方法&#39;;
				//echo &#39;只支持 HTTP Post 方法,不支持 Get 方法&#39;;
				break;
			case 1002:
				$res_arr[&#39;errmsg&#39;] = &#39;缺少了必须的参数&#39;;
				//echo &#39;缺少了必须的参数&#39;;
				break;
			case 1003:
				$res_arr[&#39;errmsg&#39;] = &#39;参数值不合法&#39;;
				//echo &#39;参数值不合法&#39;;
				break;
			case 1004:
				$res_arr[&#39;errmsg&#39;] = &#39;验证失败&#39;;
				//echo &#39;验证失败&#39;;
				break;
			case 1005:
				$res_arr[&#39;errmsg&#39;] = &#39;消息体太大&#39;;
				//echo &#39;消息体太大&#39;;
				break;
			case 1007:
				$res_arr[&#39;errmsg&#39;] = &#39;receiver_value 参数 非法&#39;;
				//echo &#39;receiver_value 参数 非法&#39;;
				break;
			case 1008:
				$res_arr[&#39;errmsg&#39;] = &#39;appkey参数非法&#39;;
				//echo &#39;appkey参数非法&#39;;
				break;
			case 1010:
				$res_arr[&#39;errmsg&#39;] = &#39;msg_content 不合法&#39;;
				//echo &#39;msg_content 不合法&#39;;
				break;
			case 1011:
				$res_arr[&#39;errmsg&#39;] = &#39;没有满足条件的推送目标&#39;;
				//echo &#39;没有满足条件的推送目标&#39;;
				break;
			case 1012:
				$res_arr[&#39;errmsg&#39;] = &#39;iOS 不支持推送自定义消息。只有 Android 支持推送自定义消息&#39;;
				//echo &#39;iOS 不支持推送自定义消息。只有 Android 支持推送自定义消息。&#39;;
				break;
			default:
				//echo &#39;调用成功&#39;;
				break;
		}		
		$msg_content = json_decode($msg_content,true);	
		$created = time();
		$created =date("Y-m-d H:i:s",$created);			
		$sql = "INSERT INTO  ".DB_NAME.".`".DB_TAB."` (`id` ,`sendno` ,`n_title` ,`n_content` ,`errcode` ,`errmsg` ,`total_user` ,`send_cnt` ,`created`)VALUES ( NULL ,&#39;".$sendno."&#39;,&#39;".$msg_content[&#39;n_title&#39;]."&#39;,&#39;".$msg_content[&#39;n_content&#39;]."&#39;, &#39;".$res_arr[&#39;errcode&#39;]."&#39;, &#39;".$res_arr[&#39;errmsg&#39;]."&#39;, &#39;&#39;,  &#39;&#39;,&#39;".$created."&#39;)";	
		$query = mysql_query($sql);		
				
		if (intval($res_arr[&#39;errcode&#39;])==0){	
				$str= "<li>第".$res_arr[&#39;sendno&#39;]."条发送".$res_arr[&#39;errmsg&#39;]."!</li>";
			}else{						
				$str= "<li>第".$res_arr[&#39;sendno&#39;]."条发送失败:".$res_arr[&#39;errmsg&#39;]."</li>";
			}
	    print_r($str);
	}
	
}


	$obj = new jpush(&#39;b1132d5*********99c28&#39;,&#39;9484b4e5*********8bce1&#39;);	
	$sendno = time();
	$receiver_value = &#39;&#39;;	
	// $msg_content = json_encode(array(&#39;n_builder_id&#39;=>0, &#39;n_title&#39;=>&#39;aaaaaaaccccc&#39;, &#39;n_content&#39;=>&#39;xxxxxxxxx&#39;));    
	$msg_content = json_encode(array(&#39;n_builder_id&#39;=>0,  &#39;n_content&#39;=>&#39;xxxxxxxxx&#39;));    
	$res = $obj->send($sendno, 4, $receiver_value, 1, $msg_content);
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24