iOS远程推送测试

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

你可能感兴趣的:(ios,推送)