【发布时间】:2012-12-03 17:38:35
【问题描述】:
我最近一直在考虑为我的一个应用程序制作 iOS 推送通知服务。它有一个 Python 2.7 后端,所以我想用 Python 而不是 PHP(或其他任何东西)来做。
我有发送通知的代码,设备会收到通知,但是每次我运行代码时,它都会要求我手动输入 PEM 文件的“密码短语”。
这并不理想,因为我希望这在服务器上全部自动化,当它需要发送通知时,它应该只是发送它。我在 Python 2.7 的文档中找不到任何允许我在连接时自动从变量设置密码短语的内容。
如果有人知道如何在 Python 2.7 中执行此操作或任何其他想法,我将不胜感激。
这是一段代码:
certfile = 'devPEM.pem'
apns_address = ('gateway.sandbox.push.apple.com', 2195)
s = socket.socket()
sock = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3, certfile=certfile)
sock.connect(apns_address)
提前致谢。
【问题讨论】:
-
当你生成 .pem 证书时...你给它一个密码了吗?因为如果是这样,那可能就是它要问的问题
-
@BorrajaX 是的,我知道了,我知道密码是什么。您是否应该能够在没有密码的情况下创建 .pem,因为我认为如果没有密码,我将无法创建它?
-
是的,我不知道它在 iOS 中是如何完成的,但你应该可以给它一个空白密码(在提示输入时按 Enter 键)。让我知道它是否有效:-)
-
因此通过 Mac 上的终端创建它,它要求密码至少为 4 个字符。我设法使用
openssl rsa -in privateKey.pem -out newPrivateKey.pem从证书中删除密码。这似乎可以工作,但需要很长时间才能在设备上生成通知。 :( -
请注意,第一个似乎是侥幸。后来的几乎是即时的。 :D
标签: python ios ssl python-2.7 push-notification