5

我已经从这个Apns 代码中为 php 和目标 c 完成了 apns 代码

并从此链接设置证书

用于向 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 设备发送通知?任何人都可以指导我吗?

4

2 回答 2

4

最后我使用了 vps 而不是共享主机。Lucabro 的评论帮助我解决了问题。谢谢卢卡布罗。

于 2013-10-12T06:11:42.770 回答
0

一个好的解决方案是使用像 firebase 这样的云功能来运行实际的 apns 连接,并为共享主机中的其他后端公开一个 API。这是我在遇到此问题时使用的。

Firebase 云功能方便易于开发且几乎免费。

https://firebase.google.com/docs/functions

我有时会在下周发布我的解决方案。

于 2019-11-18T20:38:04.813 回答