解析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 AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
基于xcache的配置与使用详解
Jun 18 PHP
thinkphp的c方法使用示例
Feb 24 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
php常用的工具开发整理
Sep 26 PHP
在laravel中实现事务回滚的方法
Oct 10 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类的注册与自动加载
2013/07/05 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
$()JS小技巧
2007/07/21 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Python unittest单元测试框架总结
2018/09/08 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
实现Python与STM32通信方式
2019/12/18 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
会计自我鉴定
2013/11/02 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
通知范文怎么写
2015/04/16 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python