1

我们有一个使用 APNs 服务的应用程序,该应用程序的后端/服务器位于 .net 中。我已经创建了开发和产品证书。用于应用程序并将生产证书放在生产服务器上。

我们在接收推送通知方面没有问题,并且在具有开发证书的开发服务器上一切正常。问题出在生产服务器上,当我们点击触发推送通知的 Web 服务时,它不会发送响应,并且在请求超时后它会给出 504 响应。

有没有人面临同样的问题,或者任何人都可以帮助摆脱这个问题?

PS 我已经在实时服务器上评论了推送通知代码,它工作正常,所以我非常确定问题出在推送通知服务上。

4

2 回答 2

1

生产环境的二进制接口通过gateway.push.apple.com,端口2195获取;开发环境的二进制接口可通过 gateway.sandbox.push.apple.com,端口 2195 获得。

请参阅:https ://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html

A. 确保您在推送通知时使用正确的链接

对于 Development,您使用: gateway.sandbox.push.apple.com

对于 Production,您使用: gateway.push.apple.com

B. 当您直接在连接的设备上构建和运行 XCode 项目时,生成的 IPA 正在使用开发配置证书。因此,生产推送通知不会发送到设备。当我很久以前开始学习推送通知时,我犯了这个错误。

为了让您在您的设备上测试生产推送通知,您必须:-

  1. 从您的设备中删除该应用程序。

  2. 确保“发布”下的配置文件正在使用临时分发配置文件。 在此处输入图像描述

  3. 使用Archive生成​​临时供应IPA。将 IPA 导出到桌面或您喜欢的任何地方。

  4. 从您的 XCode 打开管理器,转到“设备”。将新生成的 IPA 拖放到当前连接设备的应用程序中。

  5. 您设备上可用的应用程序现在正在使用分发证书。与用于开发证书的设备令牌相比,它发送到服务器的设备令牌将有所不同。因此,您必须使用正确的设备令牌。

如果您做的一切正确,您应该会收到生产推送通知。

于 2014-08-28T08:44:29.747 回答
0

在对应用程序进行了大量调试并再次创建证书之后,但它对我的事业没有帮助,直到我阅读了有关推送通知的苹果文档中的此文档:

根据苹果的说法,这些端口应该在 Web 服务器上打开以发送通知。以下是他们在 APN 的支持文档中所写的内容。

推送服务使用的 IP 地址范围

推送提供程序(Web 服务器)通常位于防火墙后面。要发送通知,您需要允许通过端口 2195 的入站和出站 TCP 数据包。要访问反馈服务,您需要允许通过端口 2196 的入站和出站 TCP 数据包。

https://developer.apple.com/library/ios/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG31

虽然我的托管服务提供商尚未在托管我的网站的服务器上打开这些端口。

谢谢大家帮助我解决这个问题。

于 2014-09-10T07:10:20.667 回答