当前位置:首页 > 技术文档 > 正文内容

PHP函数-友盟推送整合类

admin9年前 (2016-05-24)技术文档1738
class Um{
	private $Android_appkey='549a24ebfd98c5cfeb000be5';
	private $Android_appMasterSecret='z7fh3fqq6qn4eirat1h5dwagemyommpi';
	private $Ios_appkey='549a2566fd98c5cfeb000d95';
	private $Ios_appMasterSecret='fkpsmatbivamxnasubu5qw3dffbaaflo';
	private $debug=FALSE;
	private $url= "http://msg.umeng.com/api/send";
	function __construct()
	{
		if($this->debug)
		{
			ini_set('display_errors', TRUE);
			error_reporting(E_ALL);	
		}
	} 	/*
	* 安卓推送
	* ticker 必填
	* title 必填
	* text 必填
	* description 可选
	* play_vibrate 可选,震动,默认true
	* play_lights 可选,闪灯,默认true
	* play_sound 可选,声音,默认true
	* after_open 可选,点击动作,  "go_app": 打开应用 "go_url": 跳转到URL "go_activity": 打开特定的activity
	* url 可选 当"after_open"为"go_url"时,必填。通知栏点击后跳转的URL,要求以http或者https开头  
    * activity 可选
	* start_time 可选
	* expire_time 可选
	*/
	public function Android($params)
	{
		$play=array('true','false');
		$after_open_array=array('go_app','go_url','go_activity'); 		if(!isset($params['ticker']) OR !$params['ticker'])
		{
			return array('code'=>0,'message'=>'缺失ticker字段');
		}
		if(!isset($params['title']) OR !$params['title'])
		{
			return array('code'=>0,'message'=>'缺失title字段');
		}		
		if(!isset($params['text']) OR !$params['text'])
		{
			return array('code'=>0,'message'=>'缺失text字段');
		}
		if(isset($params['play_vibrate']) AND in_array($params['play_vibrate'],$play))
		{
			$play_vibrate=$params['play_vibrate'];
		}else{
			$play_vibrate="true";
		} 		if(isset($params['play_lights']) AND in_array($params['play_lights'],$play))
		{
			$play_lights=$params['play_lights'];
		}else{
			$play_lights="true";
		}
		if(isset($params['play_sound']) AND in_array($params['play_sound'],$play))
		{
			$play_sound=$params['play_sound'];
		}else{
			$play_sound="true";
		}		
		if(isset($params['description']))
		{
			$description=$params['description'];
		}else{
			$description='友贷网-安卓消息推送';
		}
		$data=array(
			"appkey"=>$this->Android_appkey,
			"timestamp"=>time(),
			"type"=>"broadcast",	
			"payload"=>array(
				"display_type"=>"notification", // 通知,notification
				"body"=>array(
					"ticker"=>$params['ticker'],
					"title"=>$params['title'],
					"text"=>$params['text'],
					"play_vibrate" =>$play_vibrate, // 可选 收到通知是否震动,默认为"true".
					"play_lights" =>$play_lights,  // 可选 收到通知是否闪灯,默认为"true"
					"play_sound" => $play_sound,   // 可选 收到通知是否发出声音,默认为"true"	
					"after_open" => "go_app",		
				)
			),
			"description"=>$description
		); 		//打开后的操作
		if(isset($params['after_open']) AND in_array($params['after_open'],$after_open_array))
		{
			$data['payload']['body']['after_open']=$params['after_open'];
			switch($params['after_open'])
			{
				case 'go_url':
					if(isset($params['url'])) 
					{
						$data['payload']['body']['url']=$params['url'];
					}else{
						return array('code'=>0,'message'=>'缺失url字段');
					}
				  break;  
				case 'go_activity':
					if(isset($params['activity'])) 
					{
						$data['payload']['body']['activity']=$params['activity'];
					}else{
						return array('code'=>0,'message'=>'缺失activity字段');
					}
				  break;
			}
		}else{
			$data['payload']['body']['after_open']='go_app';
		} 		//是否为定时发送
		if(isset($params['start_time']) AND ($params['start_time']>time()))
		{
			$data['policy']['start_time']=$params['start_time'];
			if(isset($params['expire_time']) AND ($params['expire_time']>$params['start_time']))
			{
				$data['policy']['expire_time']=$params['expire_time'];
			}
		} 		//测试模式
		if($this->debug)
		{
			$data['production_mode']='false';
			$data['device_tokens']='AhHe8xPGoPInjKFnw-jwyXmDoL3iOrOqCfwc9n8mSzox';
		}
		return $this->send($data,$this->Android_appMasterSecret);
	} 	public function Ios($params)
	{
		if(!isset($params['title']) OR !$params['title'])
		{
			return array('code'=>0,'message'=>'缺失title字段');
		}		 		if(isset($params['description']))
		{
			$description=$params['description'];
		}else{
			$description='友贷网-苹果消息推送';
		}	
		$data=array(
			"appkey"=>$this->Ios_appkey,
			"timestamp"=>time(),
			"type"=>"broadcast",	
			"payload"=>array(
				"aps"=>array(
					"alert"=>$params['title'],
					), 
				"k1"=>"v1",   // 自定义key-value
				"k2"=>"v2",
			),
			"description"=>$description
		);
		//是否为定时发送
		if(isset($params['start_time']) AND ($params['start_time']>time()))
		{
			$data['policy']['start_time']=$params['start_time'];
			if(isset($params['expire_time']) AND ($params['expire_time']>$params['start_time']))
			{
				$data['policy']['expire_time']=$params['expire_time'];
			}
		}		
		//测试模式
		if($this->debug)
		{
			$data['production_mode']='false';
			$data['device_tokens']='ecf6ea33b2f9fec175f6ac52735bf5943d472af320f620db3782ccaeba990bb3';
		}
		return $this->send($data,$this->Ios_appMasterSecret);
	} 	private function send($data,$Secret)
	{
        $postBody = json_encode($data);
        $sign = md5("POST" . $this->url . $postBody . $Secret);
        $url = $this->url . "?sign=" . $sign;
  		$ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postBody );
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $curlErrNo = curl_errno($ch);
        $curlErr = curl_error($ch);
        curl_close($ch);
        if ($httpCode == "0") {
			return array('code'=>$curlErrNo,'message'=> $curlErr);
        } else if ($httpCode != "200") {
			return array('code'=>$httpCode,'message'=> $result);
        } else {
			$result=json_decode($result,true);
			if(isset($result['ret']) AND $result['ret']=='SUCCESS')
			{
				return array('code'=>1,'message'=> $result['data']['task_id']);
			}else{
				return array('code'=>0,'message'=> $result['data']['error_code']);
			}
        }
    }}


分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/150.html

分享给朋友:

“PHP函数-友盟推送整合类” 的相关文章

用php gettext库来开发多语言系统

用php gettext库来开发多语言系统

通常人们写程序时都是将文字写死在程序里的, 比如:echo "Hello World!";  ,假如要改成它国语言,写国际化程序,就要逐个打开进行修改,程序较短时还行,若程序有上万甚至更多,改起来就不是那么容易了。近来随着i18n的逐渐标 准化,我也来讲一讲在PHP中如...

PHP利用Curl模拟登录并获取数据例子

PHP利用Curl模拟登录并获取数据例子

几乎所有的程序员来模仿用户登录或抓取数据都会使用到curl函数,下面我来给各位介绍利用curl函数实现登录并抓取数据,希望下面例子对各位有帮助。PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下c...

php二维数组转换为一维数组的几种方法

在开发过程中,我们经常需要将二维数组转为一维数组,个人总结了2种方法,分享给大家如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array(  array(    'id'=>'45',    'name'=>'...

PHP数组和Json之间的转换

        之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题。Json简介  ...

ThinkPHP实现多数据库连接的解决方法

这篇文章主要介绍了ThinkPHP实现多数据库连接的解决方法,需要的朋友可以参考下ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型:?123class MembersModel extends Model{protected $trueTableName =...

PHP开发之THINKPHP多表联合查询操作的三种方法

THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 联合查询         1、原生查询    &...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。