iPhone推送通知密码问题(pyAPns)

14

我正在尝试基于PyAPNs为iPhone实现推送通知。

当我在本地运行它时,它阻塞并提示我手动输入密码,直到我这样做它才能正常工作。

我不知道如何设置它以便在没有提示的情况下工作。

这是我的代码:

from apns import APNs, Payload
import optparse
import os


certificate_file = here(".." + app.fichier_PEM.url   )        
token_hex = '0c99bb3d077eeacdc04667d38dd10ca1a'
pass_phrase = app.mot_de_passe



apns = APNs(use_sandbox=True, cert_file= certificate_file)
payload = Payload(alert = message.decode('utf-8'), sound="default", badge=1)
apns.gateway_server.send_notification(token_hex, payload)


# Get feedback messages
for (token_hex, fail_time) in apns.feedback_server.items():
    print "fail: "+fail_time
2个回答

25

如果您在创建.pem文件时没有指定密码短语,请使用-nodes参数。

创建不带密码短语的.pem文件

openssl pkcs12 -nocerts -out Pro_Key.pem -in App.p12 -nodes

用密码创建.pem文件

openssl pkcs12 -nocerts -out Pro_Key.pem -in App.p12

如果您有一个带密码的.pem文件,您可以使用以下方法为PyAPNs取消密码:

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

参考以下链接获取制作证书和其他配置信息的指南:

关于与苹果推送通知服务(APNs)交互的Python库:


你正在使用的p12文件。你是按照raywenderlich教程操作的吗? - icodebuster
不是,pem文件和密码短语是由客户分别发送给我的。所以如果我理解正确,在创建pem文件的过程中应该包含密码短语?但这难道不与密码短语的目的相矛盾吗(安全性)? - Armance
1
如果您要将密码短语硬编码到代码中,那么在我看来,您可能会考虑完全从证书中删除密码短语。如果密码短语加密的证书与密码短语位于同一台机器上,那么您获得了什么安全性呢?此外,请检查有关如何从现有.pem文件中删除密码的更新答案。 - icodebuster
能否使用PHP呢?或者向客户展示这个链接 :) - icodebuster
还请查看 https://bitbucket.org/sardarnl/apns-client/,这个包装器需要密码。 - icodebuster
显示剩余2条评论

0

尝试使用

apns = APNs(use_sandbox=True, cert_file='XYZCert.pem', key_file='XYZKey.pem')

在这里,您需要同时指定证书和私钥。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接