解析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+Mysql+jQuery实现动态展示信息
Oct 08 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 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
基于PHP创建Cookie数组的详解
2013/07/03 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
yepnope.js 异步加载资源文件
2011/09/08 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python常用模块用法分析
2014/09/08 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
迪拜航空官方网站:flydubai
2017/04/20 全球购物
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
中学生评语大全
2014/04/18 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技