我正在努力工作,并且在我的服务器上启用了openssl,但问题仍然存在。如果运行MAc书,它会有什么不同吗?如果在那里完成,请回复。
我的代码:
<?php
$deviceToken = 'my device key'; // not putting in for security
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
socket_close($apns);
fclose($apns);
?>
错误:
警告:stream_socket_client()[function.stream-socket-client]:SSL 代码1操作失败.OpenSSL错误消息: 错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手 第24行的F:\ xampp \ htdocs \ apns \ apns.php失败
警告:stream_socket_client()[function.stream-socket-client]: 无法在第24行的F:\ xampp \ htdocs \ apns \ apns.php中启用加密
警告:stream_socket_client()[function.stream-socket-client]: 无法连接到ssl://gateway.sandbox.push.apple.com:2195 第24行的F:\ xampp \ htdocs \ apns \ apns.php中的(未知错误)
如果有任何想法,请发帖。
由于
答案 0 :(得分:1)
我遇到了同样的问题。我的解决方案是再次生成证书。我用这些命令做到了:
openssl x509 -in testpush_aps_development.cer -inform der -out TestPushCert.pem
openssl pkcs12 -nocerts -out TestPushKey.pem -in TestPush.p12
之后:
cat TestPushKey.pem TestPushCert.pem > TestPushCK.pem
请记住,在这种情况下,testpush_aps_development.cer是您在Apple开发者页面的APNS证书部分中拥有的证书。
希望这对你有所帮助,无论如何我确定这是证书的问题。
答案 1 :(得分:0)
检查您的证书,它们经常导致错误。