1. 本地证书合成

rm *.pem
echo "export cert..."
openssl pkcs12 -clcerts -nokeys -out push_cert.pem -in push_cert.p12
echo "export key..."
openssl pkcs12 -nocerts -out push_key.pem -in push_key.p12
openssl rsa -in push_key.pem -out push_key_noenc.pem
echo "combine together"
cat push_cert.pem push_key_noenc.pem > apns-dev.pem
echo "done"

其中push_cert.p12和push_key.p12分别是中keychain中根据开发证书导出来的证书和私钥。

上述脚本最终会导出一个名称为“apns-dev.pem”的认证文件。

下面会使用这个认证文件进行sanbox推送

2. 沙盒推送

<?php
$deviceToken= '86441e1421a239d0f7eed26ab4c8bd9a9ccec21b';
$body = array("aps" => array("alert" => 'message', "badge" => 2, "sound"=>'default'));
$ctx = stream_context_create();
stream_context_set_option($ctx,"ssl","local_cert","apns-dev.pem");
$pass = "aabb11";
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass); //$fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); // for real push service
$fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); //for sandbox if (!$fp)
{
echo "Failed to connect $err $errstrn";
return;
}
print "Connection OK\n";
$payload = json_encode($body);$msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
echo "sending message :" . $payload ."\n";
fwrite($fp, $msg);
fclose($fp);
?>

其中deviceToken是苹果手机的40位的UDID。

这是实习的时候学到的,但是最终这个方案没有测试成功:

问题是:

php pushtest.php

Warning: stream_socket_client(): Failed to enable crypto in pushtest.php on line 10

Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in pushtest.php on line 10

真的非常遗憾,希望以后还有机会学习IOS方面的内容!

IOS Remote Notification的更多相关文章

  1. iOS 远程通知(Remote Notification)和本地通知(Local Notification)

    ios通知分为远程通知和本地通知,远程通知需要连接网络,本地通知是不需要的,不管用户是打开应用还是关闭应用,我们的通知都会发出,并被客户端收到 我们使用远程通知主要是随时更新最新的数据给用户,使用本地 ...

  2. iOS开发笔记8:Remote Notification远程消息推送处理

    远程消息推送处理场景有三种:分别是app还没有运行.app在前台运行以及app在后台运行,下面介绍相关流程及三种场景下处理步骤 1.流程 (1)注册通知 首先是在注册远程消息推送,需要注意的是iOS8 ...

  3. iOS remote debug & Android remote debug & Chrome & APP

    iOS remote debug & Android remote debug & Chrome & APP iOS remote debugging 如何在 iOS 真机上调 ...

  4. Android/iOS Remote debugging

    简单介绍 使用下面方法可以定位webview中的元素,无法定位view中的元素. 原文地址:http://mp.weixin.qq.com/s/y_UfdgjT_pkKgYivJmqt7Q webvi ...

  5. ios的notification机制是同步的还是异步的

    与javascript中的事件机制不同.ios里的事件广播机制是同步的,默认情况下.广播一个通知,会堵塞后面的代码: -(void) clicked { NSNotificationCenter *c ...

  6. Android 与 iOS 推送 Push Notification 的区别

    Android 安卓使用 GCM (Google Cloud Messaging) 接收推送,然后应用根据实际情况决定做什么反应,比如显示一个 Notification. 所以安卓下,推送 Push ...

  7. iOS web remote debug 正确的姿势

    在使用iOS Remote debug需要做以下准备 1. iOS devices 开启java script and web inspector 开启方式如下: 2. mac OS 自带的Safar ...

  8. [转载]iOS 10 UserNotifications 框架解析

    活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  9. iOS 10、Xcode 8 遇到部分问题解决记录

    今天把iphone 6 升级到ios10 后,用Xcode 7进行真机调试的时候提示: Could not find Developer Disk Image 果断准备升级到Xcode 8 .但是想保 ...

随机推荐

  1. 关于Matlab作图的若干问题

          看到了北京一则新闻,想到如何测试双向镜子?百度之.              只要做以下简单的测试:把你的指甲尖放在镜子表面,如果在指甲尖与倒映图像之间有间隙,那就是真的镜子.然而,如果你 ...

  2. underscore

    http://www.byywee.com/page/M0/S819/819654.html http://www.haogongju.net/art/1127253 http://hi.baidu. ...

  3. org.springframework.web.bind.ServletRequestDataBinde

    org.springframework.validation Class DataBinder java.lang.Object org.springframework.validation.Data ...

  4. relink:在Linux/UNIX平台上relink Oracle软件(转)

    当操作系统升级后.操作系统打完补丁后.安装完Oracle补丁之后和relink过程中出现问题时,都会用到relink方法来保证Oracle软件的正常使用.本文介绍一下relink方法的使用.   1. ...

  5. statspack系列7

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-7/ 作者:Jonathan Lewis 这是一段Oracle ...

  6. 推荐一个Xcode插件: KSImageNamed (自动补全图片文件名称, 并显示图片大小)

    http://www.csdn.net/article/2014-05-04/2819586-the-best-xcode-plugins 5. KSImageNamed KSImageNamed是一 ...

  7. 【转】你应该知道的十个VirtualBox技巧与高级特性

    原文网址:http://www.searchvirtual.com.cn/showcontent_76463.htm VirtualBox集成的许多功能你可能从来没有使用过,即使你经常用它来运行虚拟机 ...

  8. 牛刀小试、用SharePoint 实现请假管理功能

    转:http://www.cr173.com/html/15518_1.html "请假管理"应用,应该算是 SharePoint 的"Hello World!" ...

  9. 开源(免费)三维 GIS(地形,游戏) 续1

    转自:http://www.cnblogs.com/xiexiaokui/archive/2009/04/02/1428525.html 转自 三维数字地球发布平台探索--几款开源软件介绍 http: ...

  10. HDU-2500 做一个正气的杭电人

    http://acm.hdu.edu.cn/showproblem.php?pid=2500 做一个正气的杭电人 Time Limit: 1000/1000 MS (Java/Others)    M ...