解析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 相关文章推荐
php5.2.0内存管理改进
Jan 22 PHP
常用的php对象类型判断
Aug 27 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
thinkPHP分页功能实例详解
May 05 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
为你的 Laravel 验证器加上多验证场景的实现
Apr 07 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的FTP学习(四)
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python中用Spark模块的使用教程
2015/04/13 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
茶叶生产计划书
2014/01/10 职场文书
绩效工资分配方案
2014/01/18 职场文书
简历里的自我评价范文
2014/02/24 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
分公司任命书
2014/06/06 职场文书
校园绿化美化方案
2014/06/08 职场文书
教师节大会主持词
2015/07/06 职场文书
战友聚会致辞
2015/07/28 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL