2015-05-31 2 views
5

Ich versuche, iOS Push-Benachrichtigungen mit dem folgenden PHP-Code zu senden.APNS mit PHP Geben konnte Crypto Fehler nicht aktivieren

Ich bin mir nicht sicher, ob es eine Syntax oder ein logischer Fehler ist. Ich habe versucht, die .pem zu regenerieren, Ports zu überprüfen und Dateiberechtigungen zu überprüfen. Es ist alles in Ordnung. Ich bin mir nicht sicher, was das verursacht. Ich führe dies auf App Engine. Das könnte der Grund sein, aber ich bin mir nicht sicher. Ich weiß, dass andere dies erfolgreich getan haben. Jede Hilfe wäre willkommen.

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

$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err, 
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
{ 
    //Handle Error 
} 

$body['aps'] = array(
    'alert' => $data["message"], 
    'sound' => 'default' 
); 
$body["postID"] = $data["postID"]; 
$body["groupID"] = $data["groupID"]; 
$body["type"] = $data["type"]; 

$payload = json_encode($body); 

foreach ($registrationIds as $registrationID) 
{ 
    $msg = chr(0) . pack('n', 32) . pack('H*', $registrationID) . pack('n', strlen($payload)) . $payload; 
    $result = fwrite($fp, $msg, strlen($msg)); 
} 

fclose($fp); 

Ich halte die Fehler bekommen:

PHP Warning: stream_socket_client(): Failed to enable crypto 
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) 
+0

Sie Screenshot der phpinfo() -Ausgabe für diese Beiträge verfassen können http://prntscr.com/98p48e und http://prntscr.com/98p4dj Abschnitte? Wenn es überhaupt welche gibt. Wenn nicht (was wahrscheinlich auf die Symptome zu beurteilen ist), können Sie php openssl Erweiterung installieren und es erneut versuchen? – Alexey

Antwort

2

Ich habe das gleiche Problem, und ich bin traurig zu sagen, dass ich habe gerade herausgefunden, dass Google App Engine nicht die ssl:// oder tls:// Stream Transporter unterstützen.

Sie können es auf dieser Seite finden: https://cloud.google.com/appengine/docs/php/runtime

+0

Eine Alternative zur direkten Verwendung von iOS-Push-Benachrichtigungen ist die Verwendung von Google Cloud Messaging. Diese Antwort gibt ein gutes Beispiel für ein GCM-Backend mit PHP: http://stackoverflow.com/a/11253231/3953357 – Adam