推送通知不适用于 iOS,.php文件出现连接错误


Push notification not working for iOS, .php file gives connection error

对于 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