使用crontab调度程序时,iOS推送通知不起作用

时间:2011-09-17 06:46:30

标签: php push-notification crontab

我已为我的应用实施了示例推送通知服务。

现在我在沙箱环境中测试。

当我手动调用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 

有人可以解释问题是什么吗?

2 个答案:

答案 0 :(得分:49)

此问题已修复。真正的问题出在我使用的PHP脚本中。

在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 Question 1

Apple Forum Question 2

答案 1 :(得分:1)

试试这段代码

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