2011-09-17 13 views
20

Implementé un servicio de notificación de inserción para mi aplicación.La notificación de inserción de iOS no funciona cuando se utiliza el programador de crontab

Ahora pruebo en un entorno de recinto de seguridad.

Recibo notificaciones cuando llamo manualmente al script PHP para enviar notificaciones mediante APN.

Cuando escribo un planificador usando crontab para automatizar la entrega de notificaciones, no recibo las notificaciones. El error que consigo como un correo es:

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 

Puede alguien explicar lo que el problema podría ser?

Respuesta

47

Este problema se solucionó. El verdadero problema estaba en el script PHP que utilicé.

Anteriormente en stream_context_set_option I No incluí la ruta completa al archivo ck.pem. Después de dar la ruta completa, no hubo error. A continuación está el código que estoy usando en este momento.

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

Algunos otros que han tenido este problema y sus discusiones son

Apple Forum Question 1

Apple Forum Question 2

+2

has salvado día como todo el mundo estaba diciendo es algo relacionado con la versión de openssl gracias – DeZigny

+0

de nada – Krishnan

+1

Esta pregunta solo se ha vuelto más relevante después de que Apple cambió a tls1.0. Estoy haciendo un comentario para que otros que buscan en google tls1.0 puedan encontrar esta solución. – thedeveloper3124

0

probar este código

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