现在的位置: 首页 > 综合 > 正文

苹果推送证书配置

2018年08月29日 ⁄ 综合 ⁄ 共 2093字 ⁄ 字号 评论关闭

首先生成各种证书文件,生成方法可以看这个链接:http://tr4work.blog.163.com/blog/static/137149314201132101834828/

从生成什么p12文件开始,用下面这个链接第一个回答提到的方法:http://stackoverflow.com/questions/1481443/apple-push-notification-service

Once you have the certificate from Apple for your application, export your key and the apple certificate as p12 files. Here is a quick walkthrough on how to do this:

  1. Click the disclosure arrow next to your certificate in Keychain Access and select the certificate and the key.
  2. Right click and choose Export 2 items….
  3. Choose the p12 format from the drop down and name it cert.p12.

Now covert the p12 file to a pem file:

$ openssl pkcs12 -in cert.p12 -out apple_push_notification_production.pem -nodes -clcerts

在生成p12文件的时候记得要同时选中推送证书跟它的密钥

注意这里的证书指的是Apple production/development push service: XXXXXXXXXX

ps:

在mac中可以自行安装php环境然后进行推送测试,环境:xampp 1.7.3 macos版本

php代码如下:

<?php
	// 这里是我们上面得到的deviceToken,直接复制过来(记得去掉空格)??
$deviceToken = 'ee44c1bc795fc75b6f8c7db8f5133b4106217e75b2524b05843c07c9e91ed2bd';

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

// Put your alert message here:
$message = 'The Fucking Apple Cert';

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

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

// Open a connection to the APNS server
//这个为正是的发布地址
 //$fp = stream_socket_client(“ssl://gateway.push.apple.com:2195“, $err, $errstr, 60, //STREAM_CLIENT_CONNECT, $ctx);
//这个是沙盒测试地址,发布到appstore后记得修改哦
$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,
	'sounds' => '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);
?>

有问题欢迎联系本人:917141931

抱歉!评论已关闭.