3

我想从 PHP 脚本发送 APN(Apple 推送通知)。我的 PHP 脚本工作正常,当我从 localhost 发送时,我也在 iphone 设备中收到通知,但是当我将具有相同 .pem 文件的相同脚本上传到它时,shared server它返回错误...

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.push.apple.com:2195 (Connection refused) in /mypath/SendPushNotification.php on line 28 Failed to connect: 111 Connection refused

从某些来源我了解到,发送 APN 端口 2195 必须打开,这在共享服务器计划中是不可能的。所以我尝试使用专用服务器,它运行良好,我在设备上收到通知。我努力寻找共享服务器的解决方案,但没有找到任何解决方案。

我的问题:是否可以在不从共享服务器打开端口 2195 的情况下发送 APN?如果是,请给予一些指导。

4

3 回答 3

3

不,不使用 2195 端口就无法发送 APN 消息。

如果您想从共享服务器发送推送通知消息,请尝试使用一些第三方工具,例如http://urbanairship.com/

于 2013-04-05T07:56:33.680 回答
1

前段时间我遇到了同样的错误,然后我发现它发生是因为服务器,代理阻塞了该端口,因为大多数服务器不使用该端口作为常用端口(80或21)。

在这种情况下,您可以尝试向您的服务器经销商寻求支持,他们可以为您打开该端口(2195),如果您采用此解决方案,我建议您还要求打开该端口用于反馈的端口 2196。

另一个解决方案是使用免费的推送通知提供程序,例如 Parse,它非常易于在您的应用程序上使用和实现,您也可以使用 UrbanAirship,但我更喜欢 Parse ;)

希望能帮助到你

于 2013-06-04T21:42:57.083 回答
0

这很烦人,而且绝对是个port 2195问题。与您的托管服务提供商聊天并要求他们打开端口。我也有同样的问题。我的本地代码在每种情况下都可以正常运行sandboxproduction但在服务器上却失败了。

不要对.pem文件路径感到困惑,这与您的代码相对应很简单。对我来说,我把我certificates (.pem)放在一个名为certs的目录中,并给出如下路径:

$apnsCert = 'certs/cert_prod.pem';

该代码在我的应用程序生产服务器上不起作用。我为此浪费了一天半的时间,但是当我将它放在应用程序的登台服务器上时,它在第一次运行时运行良好。原因!!!!肯定有port 2195问题。

所有的节拍。

于 2013-04-29T08:29:41.413 回答