解析php做推送服务端实现ios消息推送


Posted in PHP onJuly 01, 2013

准备工作
1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken)
2.获取ck.pem文件(做手机端的给)
3.获取pass phrase(做手机端的给)

testpush.php文件

<?php
//手机注册应用返回唯一的deviceToken
$deviceToken = '6ad7b13f b05e6137 a46a60ea 421e5016 4b701671 cc176f70 33bb9ef4 38a8aef9';
//ck.pem通关密码
$pass = 'jetson';   
//消息内容
$message = 'A test message!';
//badge我也不知是什么
$badge = 4;
//sound我也不知是什么(或许是推送消息到手机时的提示音)
$sound = 'Duck.wav';
//建设的通知有效载荷(即通知包含的一些信息)
$body = array();
$body['id'] = "4f94d38e7d9704f15c000055";
$body['aps'] = array('alert' => $message);
if ($badge)
  $body['aps']['badge'] = $badge;
if ($sound)
  $body['aps']['sound'] = $sound;
//把数组数据转换为json数据
$payload = json_encode($body);
echo strlen($payload),"\r\n";
//下边的写法就是死写法了,一般不需要修改,
//唯一要修改的就是:ssl://gateway.sandbox.push.apple.com:2195这个是沙盒测试地址,ssl://gateway.push.apple.com:2195正式发布地址
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');  
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
    print "Failed to connect $err $errstr\n";
    return;
}
else {
   print "Connection OK\n<br/>";
}
// send message
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
print "Sending message :" . $payload . "\n";  
fwrite($fp, $msg);
fclose($fp);
?>
PHP 相关文章推荐
基于文本的留言簿
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 PHP
php ios推送(代码)
Jul 01 #PHP
PHP分页效率终结版(推荐)
Jul 01 #PHP
解析php防止form重复提交的方法
Jul 01 #PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 #PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 #PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 #PHP
深入解析php中的foreach问题
Jun 30 #PHP
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python sort、sorted高级排序技巧
2014/11/21 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python 字符串换行的多种方式
2018/09/06 Python
如何利用python进行时间序列分析
2020/08/04 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
结构工程研究生求职信
2013/10/13 职场文书
金融专业毕业生推荐信
2013/11/26 职场文书
物控部经理职务说明书
2014/02/25 职场文书
新学期开学标语
2014/06/30 职场文书
代收款委托书范本
2014/10/01 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
初中政治教学工作总结
2015/08/13 职场文书
高一军训口号
2015/12/25 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android