2011-09-17 13 views
20

Ho implementato un servizio di notifica push di esempio per la mia app.La notifica push di iOS non funziona quando si utilizza lo scheduler crontab

In questo momento eseguo il test in un ambiente sandbox.

Ricevo notifiche quando richiamo manualmente lo script PHP per inviare notifiche tramite APN.

Quando si scrive uno scheduler utilizzando crontab per automatizzare la consegna delle notifiche Non ottengo le notifiche. L'errore che ricevo è:

PHP Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: 
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21 
PHP Warning: stream_socket_client(): Failed to enable crypto in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21 
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21 
Failed to connect: 0 

Qualcuno può spiegare quale potrebbe essere il problema?

risposta

47

Questo problema è stato risolto. Il vero problema era nello script PHP che ho usato.

In precedenza in stream_context_set_option I Non ho incluso il percorso completo del file ck.pem. Dopo aver dato il percorso completo non ci sono stati errori. Di seguito è riportato il codice che sto usando in questo momento.

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', '/Users/Development/Dev/ck.pem'); 

Alcuni altri che hanno avuto questo problema e le loro discussioni sono

Apple Forum Question 1

Apple Forum Question 2

+2

Mi hai salvato la giornata come tutti gli altri stava dicendo ha qualcosa a che fare con la versione di openssl, grazie – DeZigny

+0

prego – Krishnan

+1

Questa domanda è diventata più rilevante solo dopo che apple è passato a tls1.0. Sto facendo un commento così altri che google ricerca tls1.0 può trovare questa soluzione. – thedeveloper3124

0

provare questo codice

$apnsCert = $_SERVER['DOCUMENT_ROOT'].'/..../..../ck.pem'; 
    $ctx = stream_context_create(); 
    stream_context_set_option($ctx, 'ssl', 'local_cert',$apnsCert); 
    stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer'); 
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',$err,$errstr,60,STREAM_CLIENT_CONNECT,$ctx); 
Problemi correlati