2015-05-31 25 views
5

Sto tentando di inviare notifiche push iOS utilizzando il seguente codice PHP.APNS con PHP che non ha abilitato l'errore di crittografia

Non sono sicuro se si tratta di una sintassi o di un errore logico. Ho provato a rigenerare il file .pem, controllando le porte e controllando i permessi dei file. È tutto apposto. Non sono abbastanza sicuro di ciò che sta causando questo. Sto eseguendo questo su App Engine. Questo potrebbe essere il motivo, ma non ne sono sicuro. So che altri lo hanno fatto con successo su Qualsiasi aiuto sarebbe apprezzato.

$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); 

continuo a ricevere gli errori:

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

potete inserire screenshot del tuo phpinfo) Uscita per queste (: http://prntscr.com/98p48e e http://prntscr.com/98p4dj sezioni? Se ce ne sono affatto. In caso contrario (che è probabilmente a giudicare dai sintomi), è possibile installare l'estensione php openssl e riprovare? – Alexey

risposta

2

Ho lo stesso problema e mi dispiace dire che ho appena scoperto che Google App Engine non supporta le ssl:// o tls:// trasportatori flusso.

Lo si può trovare in questa pagina: https://cloud.google.com/appengine/docs/php/runtime

+0

Un'alternativa all'utilizzo delle notifiche push di iOS direttamente consiste nell'utilizzare Google Cloud Messaging. Questa risposta fornisce un buon esempio di un backend GCM usando PHP: http://stackoverflow.com/a/11253231/3953357 – Adam