【问题标题】:How to use Apple Push Notifications if you can't use port 2195?如果不能使用端口 2195,如何使用 Apple 推送通知?
【发布时间】:2013-10-24 00:35:04
【问题描述】:

我使用stream_socket_client() 开发了一个脚本,它可以在我的本地主机上运行,​​但是当我尝试在线使用它时(通过 Fatcow.com 网络托管)它就无法运行。我收到以下错误:

警告: stream_socket_client() [function.stream-socket-client]:无法连接到 ssl://gateway.sandbox.push.apple.com:2195 (连接被拒绝)在 .../send-notification.php18 行 连接失败 111 连接被拒绝

这是第 18 行:

$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

我知道 .pem 文件的密码是正确的。问题变成了如果我不能使用这个端口我该怎么办?有没有我可以使用的免费服务?我知道80端口是开放的。

我听说使用curl() 函数会起作用,但到目前为止还没有成功。

非常感谢您指出正确的方向。

【问题讨论】:

  • 我想是提供商阻止了传出连接,甚至是苹果的服务器

标签: php iphone sockets apple-push-notifications


【解决方案1】:

为了向设备发送通知,需要在防火墙中启用 2195 端口。 出于安全原因,一些组织在防火墙中禁用了这些端口。 2196 端口用于反馈服务,该端口也应在防火墙中开放。 如果不打开这些端口,消息将无法传递到 APNS。

【讨论】:

  • 如何在 Amazon EC2 服务器上打开这些端口?
【解决方案2】:

我相信您正在寻找以下内容

$url = 'https://gateway.sandbox.push.apple.com:2195';
$cert = 'AppCert.pem';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSLCERT, $cert);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "passphrase");
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}');

$curl_scraped_page = curl_exec($ch);

更多信息可以在这里找到:Apple push notification with cURL

【讨论】:

  • $url = 'https://gateway.sandbox.push.apple.com:2195'; 会在2195 被阻止时工作吗?这就是我们在这里讨论的内容。
  • @Ans OP 从未提及该端口已被阻止。这只是一个假设。 OP 只是说它被拒绝了。
【解决方案3】:

尝试使用端口 2196。

我也遇到过类似的问题,即使使用 cURL 你也会遇到这个问题。与您的托管服务提供商仔细检查传出端口 (2195,2196) 是否打开或阻止。 或尝试 telnet ssl://gateway.sandbox.push.apple.com:2195
并检查您收到的回复。如果端口打开,您将被连接。

【讨论】:

    【解决方案4】:

    我目前的托管服务提供商遇到了同样的问题。 您可以切换到另一个提供商 - 要么 - 只需“购买”预算 LAMP VPS(3 欧元/月)。 一切顺利

    【讨论】:

      【解决方案5】:

      在每个共享主机中,他们禁用 2195 端口,您可以请求启用此端口,但在大多数共享主机公司中不启用此端口,因此如果您想做 ios 推送通知,我建议您使用虚拟专用服务器( VPS),您可以轻松配置 ios 推送通知。

      【讨论】:

        猜你喜欢
        • 2014-05-08
        • 2013-09-04
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2010-12-29
        • 2011-07-26
        相关资源
        最近更新 更多