解析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 相关文章推荐
用PHP实现登陆验证码(类似条行码状)
Oct 09 PHP
实现分十页分向前十页向后十页的处理
Oct 09 PHP
PHP个人网站架设连环讲(二)
Oct 09 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
php whois查询API制作方法
Jun 23 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
smarty自定义函数用法示例
May 20 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
php基于SQLite实现的分页功能示例
Jun 21 PHP
微信小程序和php的登录实现
Apr 01 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设计模式 State (状态模式)
2011/06/26 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
javascript中传统事件与现代事件
2015/06/23 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
python append、extend与insert的区别
2016/10/13 Python
python算法表示概念扫盲教程
2017/04/13 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
节约用水标语
2014/06/11 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2015年小学开学寄语
2015/02/27 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
mysq启动失败问题及场景分析
2021/07/15 MySQL