Уведомление push iOS не работает при использовании планировщика crontab
Я применил пример push-уведомления для моего приложения.
Сейчас я тестирую среду в песочнице.
Я получаю уведомления, когда вручную вызываю PHP script для push-уведомлений через APN.
Когда я пишу планировщик, используя crontab, чтобы автоматизировать доставку уведомлений, я не получаю уведомления. Ошибка, которую я получаю по почте, это:
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
Может кто-нибудь объяснить, в чем проблема?
Ответы
Ответ 1
Эта проблема была исправлена. Реальная проблема была в PHP script, который я использовал.
Ранее в stream_context_set_option я не включил полный путь к файлу ck.pem. После полного пути не было ошибки. Ниже приведен код, который я использую прямо сейчас.
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', '/Users/Development/Dev/ck.pem');
Некоторые, у кого была эта проблема и их обсуждение, были
Apple Forum Вопрос 1
Apple Forum Question 2
Ответ 2
попробуйте этот код
$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);