解析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生成略缩图代码
Jul 16 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
php基本函数汇总
Jul 09 PHP
PHP实现搜索相似图片
Sep 22 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
PHP常用字符串函数用法实例总结
Jun 04 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
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Django框架模板的使用方法示例
2019/05/25 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
硕士研究生自我鉴定范文
2013/12/27 职场文书
先进集体获奖感言
2014/02/13 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
骨干教师事迹材料
2014/12/17 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
python如何查找列表中元素的位置
2022/05/30 Python