2012-04-24 76 views
3

我想讓我的django應用程序向運行iOS服務的iOS設備發送推送通知。我正嘗試使用pyapns發送通知。但我無法連接到Apple推送通知服務器。Pyapns錯誤500:'無法連接到APNS服務器

該服務主要是完成這是我走出測試版之前我想要工作的最後一件事。你可以訪問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

我有同樣的問題 - 這是令人沮喪的,因爲它可以使連接,該.pem文件很可能是格式不正確。

按照這個夢幻般的一步一步的方向集合產生正確的最終.pem文件:

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

此外,當你從出口的鑰匙扣證書及密鑰設置密碼 - 我知道它說你可以不用,但我發現將密碼設置爲從Keychain導出的隨機內容,然後在最後的openssl rsa ...步驟中刪除所述密碼,然後連接文件幫助解決了我遇到的問題。

我不能說絕對的確定性,但對我而言,它是.pem文件,它生成了上面收到的確切錯誤消息。

最後.pem文件是文本,應格式化是這樣的(注意,這裏的信息是隨機生成的,我反覆線很多):

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

希望這有助於:)

+0

嗨,感謝您的回答。我做了另一個python包裝,使其工作,現在一切都很好。 – dennis 2012-05-03 20:10:33

+0

這工作,這應該被標記爲接受的答案 – Santthosh 2012-05-06 01:37:57

+0

當我的.pem文件有一個密碼設置時,我從pyapns得到相同的錯誤。修復了在鏈接中使用openssl命令的答案。 – agilityvision 2012-09-06 15:09:26

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 

當你連接了.pem之後,你必須去掉pyapns的密碼。爲此,請在您的.pem上使用此命令。

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

而且應該是這樣。我希望這有幫助!

1

我也有這個錯誤,在我的情況下,它是由於有一個「。」。在我的app_id

+0

同樣在這裏對我我有一個額外的' - '在我的app_id扔pyapns關閉.. – Santthosh 2012-11-13 14:50:21

2

我得到這個錯誤,同時使用pyapns ...嘗試所有答案在這篇文章和許多其他...沒有幫助...所以只是決定使用不同的庫(https://github.com/djacobs/PyAPNs)。第一次工作!

0

我也有這個錯誤,在我的情況下,這是因爲我錯過了如documentation中提到的python-epoll庫。

我認爲這也有助於檢查當前目錄中的twistd.log

相關問題