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