解析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
PHP-MySQL教程归纳总结
Jun 07 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
php正则替换处理HTML页面的方法
Jun 17 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 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 Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python整数对象实现原理详解
2019/07/01 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
建国大业观后感
2015/06/01 职场文书
2015国庆节感想
2015/08/04 职场文书
中秋节随笔
2015/08/15 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
muduo TcpServer模块源码分析
2022/04/26 Redis
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL