/*

推送测试

*/

namespace Service\Controller;

use Think\Controller;

class PushController extends Controller {

private $_config = array();

public function __construct() {

parent::__construct();

$this->_config = $this->_makeConfig();

}

/*

安卓发送

*/

public function PtoAndroid($device_tokens,$ticker,$title,$text) {

if(count($device_tokens) > 500) {

die(‘设备超过500个‘);

}

//拼接签名

$post_data = $this->_android($device_tokens,$ticker,$title,$text);

$sign = $this->_makeSign($post_data,1);

$url = $this->_config[‘url‘] . ‘?sign=‘ . $sign;

//发送请求

$res = $this->_curl($url,$post_data);

//判断

if($res[‘ret‘] != ‘SUCCESS‘){

//发送失败,

die($res[‘data‘]->error_code);

}

}

public function testA() {

$device_tokens = array(‘AkFWCLpTmtJBeOf17rSnSAyPux4ayvzi6dru3O1avuSe‘);

$this->PtoAndroid($device_tokens,‘通知栏的文字‘,‘测试标题‘,‘测试内容‘);

}

/*

iOS发送

*/

public function PtoIos($device_tokens,$text) {

if(count($device_tokens) > 500) {

die(‘设备超过500个‘);

}

//拼接post数据

$post_data = $this->_ios($device_tokens,$text);

//拼接签名

$sign = $this->_makeSign($post_data,2);

$url = $this->_config[‘url‘] . ‘?sign=‘ . $sign;

//发送请求

$res = $this->_curl($url,$post_data);

//判断

if($res[‘ret‘] != ‘SUCCESS‘){

//发送失败,

die($res[‘data‘]->error_code);

}

}

public function testIos() {

$device_tokens = array(‘dd61807869efb4664491cd36eca8843a111a96d39e9772ea7940f0e83ce217c6‘);

$this->PtoIos($device_tokens,‘hello‘);

}

//生成配置文件

private function _makeConfig() {

return array(

‘method‘ => ‘POST‘,

‘url‘ => ‘http://msg.umeng.com/api/send‘,

‘ios_app_key‘=> ‘55541bb767e58e2094000492‘,

‘ios_app_master_secret‘ => ‘wbo2vnu5wmdvzfwzc2axdiiojj5ujkwt‘,

‘and_app_key‘ => ‘5551b48767e58ec961001d17‘,

‘and_app_master_secret‘ => ‘wjnbje5ju9rf89opo2p30phywwjqsavy‘,

);

}

/*

生成签名

@param post_body 请求体

type 1,安卓,2 ios

@return str

*/

private function _makeSign($post_body,$type) {

if($type == 1)

return strtolower(md5($this->_config[‘method‘] . $this->_config[‘url‘] . $post_body . $this->_config[‘and_app_master_secret‘]));

else

return strtolower(md5($this->_config[‘method‘] . $this->_config[‘url‘] . $post_body . $this->_config[‘ios_app_master_secret‘]));

}

/*

android post_body设置

@param ticker str 提示栏文字

title str 通知标题

text str 文字描述

device_tokens array 设备号

@return

*/

private function _android($device_tokens,$ticker,$title,$text) {

$temp_arr = array(

‘appkey‘ => $this->_config[‘and_app_key‘],

‘timestamp‘ => time(),

‘type‘ => ‘listcast‘,

‘device_tokens‘ => trim(implode(‘,‘, $device_tokens),‘,‘),

‘payload‘ => array(

‘display_type‘ => ‘notification‘,//通知,友盟接管处理

‘body‘ => array(

‘ticker‘ => $ticker,

‘title‘ => $title,

‘text‘ => $text,

‘after_open‘=> ‘go_custom‘,

‘custom‘ => ‘do things‘, //点击通知后做的事

),

),

‘description‘ => ‘‘,//描述

‘production_mode‘ => ‘false‘,//测试,上线为true

);

return json_encode($temp_arr);

}

/*

ios post_body消息体设置

@param ticker str 提示栏文字

title str 通知标题

text str 文字描述

device_tokens array 设备号

@return

*/

private function _ios($device_tokens,$text) {

$temp_arr =array(

‘appkey‘ => $this->_config[‘ios_app_key‘],

‘timestamp‘ => time(),

‘type‘ => ‘listcast‘,

‘device_tokens‘ => trim(implode(‘,‘, $device_tokens),‘,‘),

‘payload‘ => array(

‘aps‘ => array(

‘alert‘ => $text,

‘after_open‘=> ‘go_custom‘,

‘custom‘ => ‘do things‘, //点击通知后做的事

),

),

‘description‘ => ‘listcast‘,//描述

‘production_mode‘ => ‘false‘,//测试,上线为true

);

return json_encode($temp_arr);

}

/*

拼接curl请求

*/

private function _curl($url,$post) {

$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, $post);

$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")

die("Curl error number:" . $curlErrNo . " , Curl error details:" . $curlErr . "\r\n");

else if ($httpCode != "200")

die("Http code:" . $httpCode . " details:" . $result . "\r\n");

else

return (array)json_decode($result);

}

}

原文:http://www.cnblogs.com/lxdd/p/4506191.html

友盟推送 php demo,友盟推送,php简单代码相关推荐

  1. 友盟消息推送服务器demo,友盟消息推送总结

    分享的文章连接 1  http://blog.csdn.net/shenjie12345678/article/details/41120637 2:http://dev.umeng.com/push ...

  2. 友盟消息推送服务器demo,umeng友盟消息推送功能集成

    umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: 2.集成步骤如下 下载sdk 注意:有两种sdk如果用户已经集成支付 ...

  3. 友盟推送和阿里云移动推送使用注意事项、不同点比较

    友盟推送和阿里云移动推送,都属于阿里系的产品,在使用上很大一部分还是很相似的,阿里云将移动推送.移动热修复.移动测试.移动数据分析和移动用户反馈集成到了一块,所有的远程依赖也都是集成在一起了,然而友盟 ...

  4. android 友盟服务端推送给客户端,Android 友盟推送 厂商通道 接入Notes

    image 前言 本文章也是就在接入过程中遇到的一些小问题做个记录,希望对遇到问题的开发者有些许帮助. 接入的SDK 版本为:Push SDK 6.1.0 官方文档 目前,友盟推送仅支持以下五家厂商的 ...

  5. 友盟小米收不到推送消息_一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米推送等)...

    XPush 一个轻量级.可插拔的Android消息推送框架.一键集成推送(极光推送.友盟推送.华为.小米推送等),提供有效的保活机制,支持推送的拓展,充分解耦推送和业务逻辑,解放你的双手! 在提iss ...

  6. 阿里达摩院联合友盟+ ,推出国内首个智能推送

    你还记得最近因为优秀的推送文案而让你印象深刻的App是哪个么?某游戏的热血邀约?某标题党的新闻资讯?或者是某次约会提醒? 恐怕很多人的答案是否定的.因为有无数的案例证明现在主流的推送方案问题多多,已经 ...

  7. 门禁信息推送不了服务器,MIUI下周推送新功能, 友商不要羡慕! 小米6/MIX2等可直刷门禁!...

    原标题:MIUI下周推送新功能, 友商不要羡慕! 小米6/MIX2等可直刷门禁! 你的手机支持NFC吗?作为智能手机的附属功能,NFC功能很早前就已经出现.早在2005年,诺基亚就推出了第一款支持NF ...

  8. android小米推送,Android手机端小米推送Demo解析和实现方法

    最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消 ...

  9. 【​观察】重新定义销售 销售推的底气与微盟的梦想

    申耀的科技观察 读懂科技,赢取未来! 众所周知,在中国的SaaS市场,CRM始终是最受关注的细分领域,原因无他:一是市场增速快,二是产品创新快. 据移动信息化研究中心调研显示,2017年中国CRM云销 ...

最新文章

  1. 42、Java服务内存OOM原因分析
  2. 20200706:不同路径 II(leetcode63)
  3. 处理ajax表单验证结果,使用 jQuery Form 插件完成带数据验证的 Ajax 表单
  4. Thinking in Java 10.8.1 闭包与回调
  5. WINDOWS下git的安装与使用
  6. 计算机控制课设串级回路,计算机控制系统课程设计
  7. 梳理需求-需求调研报告
  8. 【计算机毕业设计】题库管理系统的设计与实现
  9. 《黑客攻防从入门到精通》:社会工程学
  10. 【数竞笔记2】—— 常见积分方法
  11. 单片机学习笔记-基础知识
  12. VM虚拟机安装苹果雪豹操作系统
  13. AD16摆放元件丝印
  14. 黑马程序员—C#多线程
  15. UltraISO Premium Edition9.7.1.3519完美破解版
  16. 北美电话号码的合法性验证和格式化
  17. windows常见系统进程
  18. Arduino基础篇(一)-- 打开Arduino的大门
  19. 【关于c++中或逻辑运算法||执行顺序问题】
  20. Docker技术原理

热门文章

  1. u盘linux和win7双系统安装教程,双系统安装Win7系统U盘安装linux centos7,详细步骤...
  2. 第一次遇见TW——实习生面试
  3. 让Windows XP系统启动时不输入密码自动登录
  4. 优思学院|3M的传奇故事和六西格玛管理
  5. 在亲生经历被非法APP诈骗中总结经验教训--网络安全
  6. python带你制作一个gequ下载器,海量gequ免费听
  7. 时系列数据分析应用图
  8. 拳王虚拟项目公社:聊聊虚拟资源项目虚拟资源倒卖生意怎么赚钱?
  9. 赛门铁克VCS(Veritas Cluster Server)的资源说明
  10. diskgenius恢复文件(diskgenius恢复文件收费)