我正在尝试让我的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 '^]'.
我认为服务器和路由器设置正确。
答案 0 :(得分:5)
我遇到了同样的问题 - 这令人沮丧,因为可以进行连接,.pem
文件可能格式不正确。
按照这个出色的一步一步指示生成正确的最终.pem
文件:
此外,在从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也很有帮助