Pyapns Fault 500:'无法连接到APNS服务器

时间:2012-04-24 17:18:07

标签: python django

我正在尝试让我的django应用程序向运行此服务的iOS应用程序的iOS设备发送推送通知。我正在尝试使用pyapns发送通知。但我无法连接到Apple推送通知服务器。

这项服务基本完成,这是我在退出测试版之前想要开始工作的最后一件事。您可以访问http://pagemove.se/来阅读有关该应用的信息。

这是日志:

Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 75, in wrapper return func(*a, **kw) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 67, in wrapper return func(*a, **kw) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 97, in notify return _xmlrpc_thread(*f_args) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 127, in _xmlrpc_thread errback(e) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 65, in errback_wrapper errback(e) # not an instance of UnknownAppID - nothing we can do here File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 55, in errback raise e xmlrpclib.Fault:

有人有这个问题吗?与.pem文件可以是一回事吗?或者ubuntu-server的设置?我可以忘记在路由器中打开一些端口吗?

修改

我做了一个测试,看看apns的端口是否打开。我做了

telnet gateway.sandbox.push.apple.com 2195

得到了

Trying 17.149.34.65...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.

我认为服务器和路由器设置正确。

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题 - 这令人沮丧,因为可以进行连接,.pem文件可能格式不正确。

按照这个出色的一步一步指示生成正确的最终.pem文件:

http://blog.serverdensity.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial/

此外,在从Keychain导出证书和密钥时设置密码 - 我知道它说你可以不用,但我发现在从Keychain导出时随机设置密码,然后在最后{{1}之后在连接文件之前删除所述密码的步骤有助于解决我遇到的问题。

我无法绝对肯定地说话,但对我来说,这是openssl rsa ...个文件,它们会生成您在上面收到的确切错误消息。

最终的.pem文件是文本,应该格式化为 little 这样的东西(注意这里的信息是随机生成的,我重复了很多行):

https://gist.github.com/58f79e1cd811f62bf011

希望这会有所帮助:)

答案 1 :(得分:2)

我在使用pyapns时遇到了这个错误...尝试了这篇文章中的所有答案以及其他许多内容......没有任何帮助......所以我决定使用不同的库(https://github.com/djacobs/PyAPNs)。第一次工作!

答案 2 :(得分:1)

我遇到了同样的问题,但这似乎已经为我解决了。显然,我的.pem仍然有密码,这就是问题所在。所以在这里我将描述如何生成一个没有密码的.pem

此博客文章概述了如何获取所需的2'.pem'文件(Cert和Key)以及如何连接它们。 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12。 (您现在可以使用密码生成.pem文件 - 稍后我们将删除密码。

这里有2个命令可以帮助您检查2 .pem个文件是否正常。第一个命令只检查您是否可以连接到APNS。

$ telnet gateway.sandbox.push.apple.com 2195

第二个命令将检查您的.pem文件是否正常 - 如果已成功连接,您将获得一堆输出。如果成功,如果您输入一些随机文本,它将断开连接。如果您无法连接,它将输出错误消息。

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem

在连接.pem后,必须删除pyapns的密码。为此,请在.pem上使用此命令。

$ openssl rsa -in haspassword.pem -out nopassword.pem

那应该是它。我希望这有帮助!

答案 3 :(得分:1)

我也有这个错误,在我的情况下,它是由于有一个“。”在我的app_id

答案 4 :(得分:0)

我也有这个错误,在我的情况下,这是因为我错过了cumcount中提到的python-epoll库。

我认为检查当前目录中的twistd.log也很有帮助