3

我正在尝试让我的 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 '^]'.

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

4

5 回答 5

5

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

按照这个奇妙的分步说明生成正确的最终.pem文件:

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

另外,在从 Keychain 导出证书和密钥时设置密码 - 我知道它说你可以不用,但我发现在从 Keychain 导出时将密码设置为随机值,然后按照最后openssl rsa ...一步在连接之前删除所述密码这些文件帮助解决了我遇到的问题。

我不能绝对肯定地说,但对我来说,是.pem文件生成了您在上面收到的确切错误消息。

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

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

希望这可以帮助 :)

于 2012-04-30T00:32:22.767 回答
2

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

于 2014-04-06T06:13:31.840 回答
1

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

这篇博文概述了如何获取您需要的 2 个“.pem”文件(证书和密钥)以及如何连接它们。 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

在你有你的 concatenated 之后.pem,你必须摆脱它的 pyapns 密码。为此,请在您的.pem.

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

应该就是这样。我希望这有帮助!

于 2012-06-17T01:30:27.877 回答
1

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

于 2012-07-26T15:15:34.417 回答
0

我也有这个错误,就我而言,这是因为我错过了文档中提到的 python-epoll 库。

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

于 2016-06-22T09:38:03.450 回答