您的位置:首页 > 移动开发 > IOS开发

iOS远程推送测试

2015-08-14 11:56 471 查看

iOS远程推送测试

怎么去配置远程推送证书,这里就不再重复了,大家可以看看本文后面的链接。本文重点是描述测试,包括开发测试以及发布测试。

一、开发测试

这里需要用到终端,建议将aps_development.cer、pushMe.php、Push.p12放到一个文件夹中,假设名字是iOSDevelop,同时用cd命令到这个iOSDevelop文件夹中。用到的命令如下:

1,openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

2,openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12

3,cat PushChatCert.pem PushChatKey.pem > ck.pem

总共有3个,这里就不解释了,大家可以看本文后面的链接教程。

上面3个语句执行完成后,接下来可以执行

php pushMe.php

这里用的是php的推送测试,pushMe.php的内容如下:

<?php

// Put your device token here (without spaces):
$deviceToken = '你的设备的device token,注意不是UDID';

// Put your private key's passphrase here:密语
$passphrase = '123456';

// Put your alert message here:
$message = '测试推送\n消息,这里是可以用\n换行的';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
    );

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
    echo 'Message not delivered' . PHP_EOL;
else
    echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);

?>


执行完成php pushMe.php后,终端会显示如下信息:

Connected to APNS

Message successfully delivered

稍后你的设备就会收到你发送的推送消息。

二、发布测试

由于苹果的审核周期很长,不能每次都用加急审核,所以最好在提交前做一次测试,看看服务器的推送是否正确。发布测试也类似于开发测试,也是要用到那3个语句。

1,openssl x509 -in aps_production.cer -inform der -out PushChatCert.pem

2,openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12

3,cat PushChatCert.pem PushChatKey.pem > ck.pem

开发的时候一般我们都是用Xcode直接灌到设备里,这个时候development证书是可以推送成功的。 但是production证书却推送不了,不过苹果给我们提供了Ad Hoc测试方式,它使用的是发布证书。如果你不知道Ad Hoc模式可以搜一下,很简单的,这里有一个关键的地方,development和production得到的Token的不一样的,使用Ad Hoc方式装到设备上得到的就是production Token 所以你在用Ad Hoc方式。测试的要使用production Token,如果使用Ad Hoc方式测试没问题,这个发布也就没问题了。

最后执行php pushMe.php,就可以了。

参考链接:

http://blog.csdn.net/xueer8835/article/details/9121799

http://www.360doc.com/content/15/0118/17/1073512_441822850.shtml

http://blog.csdn.net/shenjie12345678/article/details/41120637
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: