php做推送服务端实现ios消息推送
本文部分内容引用于 http://zxs19861202.iteye.com/blog/1532460
准备工作
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做推送服务端实现ios消息推送的更多相关文章
- java服务端集成极光消息推送--详细开发步骤
		
1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...
 - (转)iOS消息推送机制的实现
		
原:http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html iOS消息推送机制的实现 iOS消息推送的工作机制可以简单的用下 ...
 - IOS 推送消息 php做推送服务端
		
IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...
 - 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)
		
1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...
 - 使用flask_socketio实现服务端向客户端定时推送
		
websocket连接是客户端与服务器之间永久的双向通信通道,直到某方断开连接. 双向通道意味着在连接时,服务端随时可以发送消息给客户端,反之亦然,这在一些需要即时通讯的场景比如多人聊天室非常重要. ...
 - Ios 消息推送
		
手把手教你做iOS推送 http://www.cocoachina.com/industry/20130321/5862.html http://www.cnblogs.com/cdts_change ...
 - [置顶] 手把手教你iOS消息推送证书生成以及Push消息
		
iOS推送消息是许多iOS应用都具备的功能,今天在给应用加推送功能,在生成证书的过程中,发生了各种令人蛋痛的事.下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provi ...
 - 了解iOS消息推送一文就够:史上最全iOS Push技术详解
		
本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...
 - ios消息推送机制原理与实现
		
本文转载至 http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91 Push的原理: Push 的工作机制可以简单的概括为下图 图中, ...
 
随机推荐
- 焦点改变事件OnFocusChangeListener
			
效果图 1.MainActivity.java package com.example.app2; import android.support.v7.app.AppCompatActivity; i ...
 - UWP 程序抛出异常时总是跳到“global::System.Diagnostics.Debugger.Break();”的解决办法
			
调试 C# 程序时,如果遇到异常,VS 会中断,指出导致异常的语句.但是最近调试 UWP 程序时,发现总是在“global::System.Diagnostics.Debugger.Break();” ...
 - python中的else子句
			
在一般的语言中else子句一般是紧跟在if 子句后面,但是python语言中else子句可以不跟在if子句后面,请看下面代码: >>> for n in range(2, 10): ...
 - 会话对应的线程id
			
http://blog.csdn.net/sqlserverdiscovery/article/details/7968117
 - EF 通用数据层父类方法小结
			
MSSql 数据库 数据层 父类 增删改查: using System;using System.Collections.Generic;using System.Data;using System. ...
 - 学习web前端之神器sublime text 3
			
第一次在博客园写博客,以前都是看别人写的技术在自己慢慢的学习.现在想自己把每天学习的东西理解并记录下来,加深下印象以后可以做个回顾.不知道自己能否坚持每周至少写2篇博文. 古话说的好:工欲善其事,必先 ...
 - 【spring boot】spring cloud下spring boot微服务启动没有报错,但是访问访问不到
			
spring cloud下spring boot微服务启动没有报错,但是访问访问不到 解决方法: 可能是端口被占用了,但是依旧启用成功了. 更改一下项目启用的端口号,再重新启动查看是否可以正常访问.
 - css自动换行与不换行
			
1.自动换行 div{ word-wrap: break-word; word-break: normal; } 2.不换行 div{ white-space:nowrap; } 3.浮动效果不换行 ...
 - pgmagick,pil不保存图片并且获取图片二进制数据记录
			
PIL和pgmagick都是python中图像处理的库,只不过PIL功能更强大 pgmagick和PIL中对数据进行调整后经常需要调用write或者save方法保存图片,然后在读取图片的内容,这样很麻 ...
 - Myeclipse中文件已经上传到server文件夹下,文件也没有被占用,可是页面中无法读取和使用问题的解决方法
			
这个问题是因为Myeclipse中文件不同步引起的.在Myeclipse中,project文件是由Myeclipse自己主动扫描加入的,假设在外部改动了project文件夹中的文件但又关闭了自己主动刷 ...