解析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自动更新新闻DIY
Oct 09 PHP
将数字格式的计算结果转为汉字格式
Oct 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
中英文字符串翻转函数
Dec 09 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
第二章 PHP入门基础之php代码写法
Dec 30 PHP
php数字游戏 计算24算法
Jun 10 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
PHP简单遍历对象示例
Sep 28 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php 小乘法表实现代码
2009/07/16 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
vue监听用户输入和点击功能
2019/09/27 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
深入了解Django中间件及其方法
2019/07/26 Python
python操作excel让工作自动化
2019/08/09 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
实习单位接收函模板
2014/01/10 职场文书
无故旷工检讨书
2014/01/26 职场文书
股份合作协议书
2014/04/12 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
内勤岗位职责
2015/02/10 职场文书
经费申请报告范文
2015/05/18 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
新课程改革心得体会
2016/01/22 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
详解 TypeScript 枚举类型
2021/11/02 Javascript
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android