共享服务器上的苹果推送通知无法正常工作

3
我想从PHP脚本发送APN(苹果推送通知)。我的PHP脚本运行良好,当从本地主机发送时,我也能在iPhone设备中收到通知。但是当我将相同的脚本和相同的.pem文件上传到“共享服务器”时,它会返回错误...
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?如果是,请给一些指导。


请检查您的证书(.pem)或重新生成证书(.pem)然后重试。 - Pratik
@Pratik如果在本地机器和专用服务器上正常运行,那么在共享服务器上应该没有问题吧? - Mohit Mehta
如果出现这种情况,则可能是您共享服务器的SSL端口有问题。 - Pratik
@Pratik 是的,这就是问题,我如何在共享服务器上完成它? - Mohit Mehta
@Pratik 我已经做了,他们正在考虑购买专用服务器... - Mohit Mehta
显示剩余3条评论
3个回答

3

不可能在不使用2195端口的情况下发送APN消息。

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


1

不久前,我遇到了同样的错误,后来发现是因为服务器,代理正在阻止该端口,因为大多数服务器不使用该端口作为常用端口(80或21)。

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

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

希望这有所帮助


0

这很烦人,肯定是 2195端口的问题。与您的托管提供商聊天并要求他们打开该端口。我也遇到了同样的问题。我的本地代码在每种情况下都可以平稳运行,如 sandboxproduction,但在服务器上失败了。

不要困惑于 .pem 文件路径,它应该与您的代码相对应。对于我来说,我将我的 证书(.pem) 放在一个名为 certs 的目录中,并给出了以下路径:

$apnsCert = 'certs/cert_prod.pem';

我的应用程序生产服务器上的代码无法正常工作。我在这上面浪费了一天半的时间,但是当我将其放到应用程序的暂存服务器上时,第一次运行就很顺利。原因!!!肯定是 端口2195 的问题。

一切都好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接