对于 APNS,我已经尝试使用我的证书和 Web 脚本(.php 文件),它的工作一切正常。现在我正在用客户提供的证书尝试同样的事情,他已经向我发送了他的 .p12 文件,我已经完成了所有正确的 stpes 并为服务器生成了 .pem 文件,但它不起作用。我不明白为什么会这样??有人对此有想法吗?这是我用来发送通知的服务器文件。
<?PHP
if($_POST['message'])
{
$deviceToken = '<my device token id>';
$message = stripslashes($_POST['message']);
$payload = '{
"aps" :
{ "alert" : "'.$message.'",
"badge" : 3,
"sound" : "bingbong.aiff"
}
}';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', '<my passPharse>');
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if(!$fp){
print "Failed to connect $err $errstrn";
return;
} else {
print "Notifications sent!";
}
$devArray = array();
$devArray[] = $deviceToken;
foreach($devArray as $deviceToken){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack ("n",strlen($payload)) . $payload;
//print "sending message :" . $payload . "n";
fwrite($fp, $msg);
}
fclose($fp);
}
?>
<form action="send-notification.php" method="post">
<input type="text" name="message" maxlength="100">
<input type="submit" value="Send Notification">
</form>
此文件适用于我的 .pem 文件,但错误"无法将 0"与我的客户端文件连接。我找不到原因。
如果有人对此有想法,请指导/告诉我解决问题的路径,请。
提前谢谢你。
这是 .pem 文件的错误。如果在从 .p12 创建 .pem 文件时未提供正确的密码,则将创建该文件,但它将不起作用。我通过远程登录检查了该过程并发现了问题。
感谢大家的帮助和支持:)
我认为这是 p12 文件的问题,如果它不能正确制作,那么这个错误就会出现,为了确保它再次使用以下代码生成 PEM 文件,那么如果不起作用,那么它的 p12 文件也
不正确
openssl pkcs12 -in server_certificates_bundle_sandbox.p12 -out server_certificates_bundle_sandbox.pem -nodes -clcerts