Apple Push Notification 在共享服务器上不起作用
Posted
技术标签:
【中文标题】Apple Push Notification 在共享服务器上不起作用【英文标题】:Apple Push Notification not working on shared server 【发布时间】:2013-04-05 06:22:17 【问题描述】:我想从 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?如果是,请提供一些指导。
【问题讨论】:
请检查您的证书 (.pem) 或重新生成证书 (.pem),然后重试。 @Pratik 它在本地机器和专用服务器上都能完美运行,那么它在共享服务器上应该有什么问题? 那么您的共享服务器的 SSL 端口可能有问题 @Pratik 是的,这就是我如何在共享服务器上执行此操作的问题? 您应该必须打开 SSL 端口,这是推送通知所必需的 【参考方案1】:不,不使用 2195 端口是无法发送 APN 消息的。
如果您想从共享服务器发送推送通知消息,请尝试使用一些第三方工具,例如http://urbanairship.com/。
【讨论】:
【参考方案2】:前段时间我遇到了同样的错误,然后我发现它是因为服务器的原因,代理阻塞了那个端口,因为大多数服务器不使用那个端口作为公共端口(80或21) .
在这种情况下,您可以尝试向您的服务器经销商寻求支持,他们可以为您打开该端口 (2195),如果您采用此解决方案,我建议您还要求打开该端口用于反馈的 2196 端口。
另一种解决方案是使用免费的推送通知提供程序,例如 Parse,它非常易于在您的应用中使用和实施,您也可以使用 UrbanAirship,但我更喜欢 Parse ;)
希望对你有帮助
【讨论】:
【参考方案3】:这很烦人,绝对是port 2195
问题。与您的托管服务提供商聊天并要求他们打开端口。我也有同样的问题。我的本地代码在sandbox
和production
等各种条件下都可以平稳运行,但在服务器上却失败了。
不要对.pem
文件路径感到困惑,这与您的代码相对应很简单。对我来说,我将 certificates (.pem)
放在名为 certs 的目录中,并给出如下路径:
$apnsCert = 'certs/cert_prod.pem';
代码无法在我的应用生产服务器上运行。我在这上面浪费了一天半的时间,但是当我把它放在应用程序的登台服务器上时,它在第一次运行时运行得很好。原因!!!!绝对是port 2195
问题。
所有的节拍。
【讨论】:
以上是关于Apple Push Notification 在共享服务器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Apple Push Notification Service 用户响应
Apple Push Notification 在共享服务器上不起作用
Send push notification on Apple (APNS) on c#.net
当用户拒绝初始提示时,Apple Push Notification 注册回调? [复制]