アプリにサンプルのプッシュ通知サービスを実装しました。
現在、サンドボックス環境でテストしています。
PHPスクリプトを手動で呼び出して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の前半で、ck.pemファイルへのフルパスを含めませんでした。フルパスを指定した後、エラーはありませんでした。以下は私が今使っているコードです。
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', '/Users/Development/Dev/ck.pem');
この問題を抱えている他の何人かと彼らの議論は
このコードを試してください
$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);