IOS Remote Notification

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方面的内容!

时间: 2024-10-12 01:28:54

IOS Remote Notification的相关文章

ios 远程通知(Remote Notification)和本地通知(Local Notification)

ios通知分为远程通知和本地通知,远程通知需要连接网络,本地通知是不需要的,不管用户是打开应用还是关闭应用,我们的通知都会发出,并被客户端收到 我们使用远程通知主要是随时更新最新的数据给用户,使用本地通知主要是提醒用户来完成一些任务 远程通知 Remote Notification: 其主要的工作原理为:客户端发送自己的UUID和Bundle ID给苹果的APNs服务器-->苹果的APNs服务器加密后返回一个deviceToken给客户端-->客户端拿到devideToken后将其发送给app

iOS的notification机制是同步的

与javascript中的事件机制不同,ios里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码: Objc代码   -(void) clicked { NSNotificationCenter *center =  [NSNotificationCenter defaultCenter]; [center postNotificationName:@"event_happend" object:self]; NSLog(@"all handler done

iOS开发-- Notification 通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本文包括下面内容

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

与javascript中的事件机制不同,ios里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码: Objc代码   -(void) clicked { NSNotificationCenter *center =  [NSNotificationCenter defaultCenter]; [center postNotificationName:@"event_happend" object:self]; NSLog(@"all handler done

测试iOS的Notification是同步还是异步

面试被问到这个问题,不是很清楚,写代码测试并记录一下. #pragma mark - 测试通知-(void)testNotification{    // 初始化一个按钮    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];    button.backgroundColor = [UIColor orangeColor];    [button setTitle:@"触发通知&

关于iOS Push Notification的响应问题

最近在做推送消息的时候遇到一个问题,就是当程序在后台运行时,这时候收到推送消息后,点击应用图标后无法拿到这个消息,至今还未解决,如有能够解决办法的朋友,忘不吝赐教. 简单总结一下推送消息的相应情况 1. 当程序处于关闭状态收到推送消息时,点击图标会调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法,那么消息给通过lau

关于iOS Push Notification响应的问题

当server向client投送通知时,client有以下几种情况: 1. 应用程序处于关闭状态,这时通知被显示:无论是点击应用图标还是点击通知,系统都会启动应用,并调用其代理方法,(application:didFinishLaunchingWithOptions:),通过launchOptions来传递通知. if (launchOptions) { NSDictionary* pushNotificationKey = [launchOptions objectForKey:UIAppli

iOS web remote debug 正确的姿势

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

iOS推送通知(Push Notification)的Erlang实现

本文来自:瑞仙的Erlang开发博客 原文链接:http://blog.csdn.net/zhongruixian/article/details/39528765 一.前言 关于cer/pem证书转换,网上很多资料,我这就不说了, 网上有PHP实现的Push Notification,可以参考, 为了更好的做PUSH服务定制,我这里以Erlang(gen_server)实现iOS Push Notification 二.协议 1.协议分析 表1 名称 长度 描述 Command 1 字节 固定