Mein Push-Benachrichtigungsskript funktionierte, bis ich abgelaufene Zertifikate erneuert und eine neue apk hochladen. Ich habe alles überprüft, meine Zertifikate und Bestimmungen sind korrekt und der Push-Benachrichtigungsdienst ist aktiviert. Außerdem funktioniert es mit dem Entwicklungszertifikat in Sandbox.Kann keine Verbindung zu Apple Push Notify Server für die Produktion
Wenn ich Produktionszertifikat verwende, habe ich Fehler und nichts, was ich im Internet gefunden habe, hat nicht geholfen. Hier ist der Code:
<?php
$deviceToken = '1b66005d6ee0e58eac581a29dce21c34083a3560d3a097b8224ce99412c7a5c5';
$message = 'test!';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'cafile', 'apple_ca.pem'); // entrust ca certificate
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apn-dist.pem'); // my certificate
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.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;
// sending notification ...
Above Code Dumps dieser Fehler:
PHP Warning: stream_socket_client(): Failed to enable crypto in test.php on line 14
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.push.apple.com:2195 (Unknown error) in test.php on line 14
Failed to connect: 0
Wenn ich mein Zertifikat testen wie folgt aus:
openssl s_client -connect gateway.push.apple.com:2195 -cert apn-dist.pem -debug -showcerts -CAfile apple_ca.pem
Es ist erfolgreich:
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID:
Session-ID-ctx:
Master-Key: 5E9F3C0A551D6A487***********
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1458680158
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
Es funktionierte in der Vergangenheit mit dem previo uns Zertifikat (auch ohne ca-Datei).