解析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个人网站架设连环讲(二)
Oct 09 PHP
PHP 常见郁闷问题答解
Nov 25 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
Laravel 前端资源配置教程
Oct 18 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积分兑换接口实例
2015/02/09 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
Symfony核心类概述
2016/03/17 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
独特的python循环语句
2016/11/20 Python
django加载本地html的方法
2018/05/27 Python
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
会计专业自荐信
2014/06/03 职场文书
百日安全生产活动总结
2014/07/05 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
开学典礼校长致辞
2015/07/29 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python