这篇文章主要介绍了关于php 友盟消息推送类,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
<?php
/**
* 友盟消息 安卓 ios 推送类
*
*/
class alliesclass
{
protected $host; //发送地址
protected $app_key; //appkey
protected $appmastersecret; //app secret
protected $description; //app secret
//
public function __construct($options = null)
{
if (is_array($options)){
$this->host = 'https://msgapi.umeng.com/api/send';
$this->app_key = $options['app_key'];
$this->appmastersecret = $options['appmastersecret'];
$this->description = "友盟接口推送";
}else{
return false;
}
}
/**
* @param $info
* @param $device_token
* @return mixed|string
* 用户单播 和 列播
*/
public function android_device_push($info, $device_token)
{
$data['appkey'] = $this->app_key;
$data['timestamp'] = time(); //时间戳
if(is_array($device_token)){
//批量用户列播
$data['type'] = 'listcast';
$data['device_tokens'] = implode(',',$device_token); //数组转字符串
}else{
//一个用户单播
$data['type'] = 'unicast';
$data['device_tokens'] = $device_token;
}
//payload内容
$data['payload']['display_type'] = 'notification'; //通知消息
//payload body内容
$data['payload']['body']['after_open'] = "go_custom"; //后续操作打开app
$data['payload']['body']['ticker'] = $info['ticker'];
$data['payload']['body']['title'] = $info['title'];
$data['payload']['body']['text'] = $info['title']; //广播通知不能为空补填
//这里可以写附加字段
$data['payload']['extra']['type'] = $info['type']; //附加字段类型
$data['production_mode'] = $info['production_mode'];
$data['description'] = $this->description;
return $this->send($data, $this->host, $this->appmastersecret);
}
/**
* @param $info
* @return mixed|string
* 广播
*/
public function android_broadcast($info)
{
$data['appkey'] = $this->app_key;
$data['timestamp'] = time(); //时间戳
//广播消息
$data['type'] = 'broadcast';
//payload内容
$data['payload']['display_type'] = 'notification'; //通知消息
//payload body内容
$data['payload']['body']['after_open'] = "go_custom"; //后续操作打开app
$data['payload']['body']['ticker'] = $info['ticker'];
$data['payload']['body']['title'] = $info['title'];
$data['payload']['body']['text'] = $info['title']; //广播通知不能为空补填
$data['payload']['extra']['type'] = $info['type']; //附加字段类型1 跳转消息详情
$data['payload']['extra']['prod_id'] = $info['prod_id']; //附加字段消息详情id
$data['payload']['extra']['text'] = $info['text']; //
$data['production_mode'] = $info['production_mode'];
$data['description'] = $this->description;
return $this->send($data, $this->host, $this->appmastersecret);
}
/**
* @param $info
* @param $device_token
* @return mixed|string
* 单播 和 列播
*/
public function ios_device_push($info, $device_token)
{
$data = array();
$data['appkey'] = $this->app_key;
$data['timestamp'] = time(); //时间戳
if(is_array($device_token)){
//批量用户列播
$data['type'] = 'listcast';
$data['device_tokens'] = implode(',',$device_token); //数组转字符串
}else{
//一个用户单播
$data['type'] = 'unicast';
$data['device_tokens'] = $device_token;
}
//payload内容
$data['payload']['aps']['alert'] = $info['text']; //消息主体
$data['payload']['aps']['sound'] = 'default'; //声音
$data['payload']['type'] = $info['type']; //消息类型 0打开消息详情
$data['payload']['prod_id'] = $info['prod_id']; //消息id
$data['payload']['title'] = $info['title'];
$data['payload']['text'] = $info['text']; //
$data['production_mode'] = $info['production_mode'];
$data['description'] = $this->description;
return $this->send($data, $this->host, $this->appmastersecret);
}
public function ios_broadcast($info)
{
$data = array();
$data['appkey'] = $this->app_key;
$data['timestamp'] = time(); //时间戳
//广播消息
$data['type'] = 'broadcast';
//payload内容
$data['payload']['aps']['alert'] = $info['title']; //消息主体
$data['payload']['aps']['sound'] = 'chime'; //声音
$data['payload']['aps']['badge'] = 1; //显示角标
$data['payload']['type'] = $info['type']; //消息类型 0打开消息详情
$data['payload']['prod_id'] = $info['prod_id']; //消息id
$data['payload']['title'] = $info['title'];
$data['payload']['text'] = $info['ticker']; //
$data['production_mode'] = $info['production_mode'];
$data['description'] = $this->description;
return $this->send($data, $this->host, $this->appmastersecret);
}
/**
* @param $data
* @param $url_s
* @param $appmastersecret
* @return mixed|string
* curl 请求
*/
private function send($data, $url_s, $appmastersecret)
{
$postbody = json_encode($data);
//加密
$sign = md5("post" . $url_s . $postbody . $appmastersecret);
$url = $url_s . "?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, 5);
curl_setopt($ch, curlopt_timeout, 5);
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);
// print_r($result);
// exit;
if ($httpcode == "0") {
// time out
return ("curl error number:" . $curlerrno . " , curl error details:" . $curlerr . "\r\n");
} else if ($httpcode != "200") {
return ("http code:" . $httpcode . " details:" . $result . "\r\n");
} else {
return $result;
}
}
}
?>
<?php
//使用类
$options['app_key'] = ''; //友盟key;
$options['appmastersecret'] = ''; //友盟mastersecret
$this->umeng = new alliesclass($options);
$info['ticker'] = '';
$info['title'] ='';
$info['title'] =''; //广播通知不能为空补填
$info['type'] = 4; //附加字段类型1 跳转消息详情
$info['text'] = '提醒'; //
$info['production_mode'] = 'false';
$value=$this->umeng->android_device_push($info, $token); //单播传入数据和用户token
$value=$this->umeng->android_broadcast($info); //广播直接传入数据
?>
以上就是本篇文章的全部内容了,感谢大家阅读。更多请关注!
相关推荐:
php房贷计算
php筛选法求素数
以上就是php 友盟消息推送类的详细内容。