我已经从这个Apns code
完成了php和objective c的apns代码并设置this link
的证书用于向ios设备发送通知的沙盒和生产apns在我的服务器上运行正常。我将代码和相同的证书移动到客户端服务器,然后发送通知无效。
我调试所有的PHP代码,发现它停在这行代码
private function _connectSSLSocket($development) {
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $this->apnsData[$development]['certificate']);
$this->sslStreams[$development] = stream_socket_client($this->apnsData[$development]['ssl'], $error, $errorString, 100, (STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT), $ctx);
if(!$this->sslStreams[$development]){
$this->_triggerError("Failed to connect to APNS: {$error} {$errorString}.");
unset($this->sslStreams[$development]);
return false;
}
return $this->sslStreams[$development];
}
apns.log文件显示错误“无法连接到APNS:110连接超时。”
没有弄错。为什么我会收到此错误而不向ios设备发送通知?任何人都可以为此指导我吗?
答案 0 :(得分:4)
最后我采用了vps而不是共享主机。 Lucabro的评论帮助我解决了问题。谢谢Lucabro。
答案 1 :(得分:0)
一个好的解决方案是使用firebase之类的云功能来运行实际的apns连接,并在共享主机中为其他后端公开一个API。 这是我遇到此问题时使用的方式。
Firebase云功能易于开发,并且几乎免费。
https://firebase.google.com/docs/functions
我有时会在下周发布解决方案。