通过php脚本发送iOS通知:'无法设置私钥文件'

Out*_*end 5 php apple-push-notifications ios

我使用了众所周知的Ray Wanderlich 教程的php脚本在开发阶段发送推送通知.在我创建pem文件(来自p12和aps_development.cer文件)并在php脚本中提到设备令牌后,它们被正确触发.

但是,当我使用具有生产p12和aps_production.cer文件的pem文件时,通知甚至没有到达APNS服务器.它在本地服务器端本身显示以下错误.

Unable to set private key file `/Users/administrator/Desktop/SimplePush/ck.pem' in /Users/administrator/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): failed to create an SSL handle in /Users/administrator/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): Failed to enable crypto in /Users/administrator/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): unable to connect to ssl://gateway.push.apple.com:2195 (Unknown error) in /Users/administrator/Desktop/SimplePush/simplepush.php on line 22
Run Code Online (Sandbox Code Playgroud)

可能是什么原因.p12文件没有任何密码(虽然我已经为pem文件配置了密码),这就是它在php脚本中给出的方式.

// Put your private key's passphrase here:
$passphrase = '';
Run Code Online (Sandbox Code Playgroud)

Out*_*end 5

这不是正确的p12文件.我从Keychain导出了正确的p12文件,并且运行良好.

得到教训 -

  1. 如果您使用的p12和cer文件彼此不对应,显然在连接的pem文件创建期间不会显示任何错误.但是当您执行脚本时,将显示错误.

  2. 上述错误消息并不一定意味着p12文件的密码短语不正确.它们也可能意味着p12文件与使用的cer文件不对应.