从Google App Engine Python发送iOS推送通知
我到处寻找关于如何在用Python写的服务器上通过GAE来实现这个功能的示例代码,但一直没有找到。
有没有人能帮我提供一个实现这个功能的函数?(我觉得这应该是比较简单的事情)。
2 个回答
0
也许你可以考虑这个改进版的PyAPNS,它增强了消息支持。
https://github.com/jimhorng/PyAPNs
这个版本的意思是,它能捕捉到发送失败的消息的错误反馈,并且会重新发送那些在发送过程中被APNS丢弃的消息。
解决方案:
- 使用非阻塞的SSL套接字连接,这样发送通知时就不需要等待响应。
- 开一个单独的线程,持续检查从读取连接中返回的错误反馈。
- 使用一个发送通知的缓冲区,用于重新发送那些在发送失败后发送的通知,或者因为APNS的任意连接关闭而丢失的通知。 (参考minorblend的非阻塞APNS拉取请求,以及hagino3000的增强消息)
结果:
- 以每秒1000条的速度发送通知。
- 在最糟糕的情况下,比如第一次发送的通知失败,错误反馈在1秒后返回,而此时APNS丢弃了999条通知,所有被丢弃的999条通知都会被重新发送,确保没有丢失任何一条。按照同样的逻辑,如果重新发送的通知失败,它会在失败的通知之后继续重新发送剩下的通知。
1
我在我的应用程序中使用了这个库,它运行得很好。
https://github.com/simonwhitaker/PyAPNs
在app.yaml文件中启用ssl
libraries:
- name: ssl
version: latest
代码大致如下,token_hex是从设备发送的推送通知令牌。你还需要一些变量。
from apns import APNs, Payload
apns = APNs(use_sandbox=use_sandbox,
cert_file=path/to/cert.pem',
key_file=path/to/key-noenc.pem')
payload = Payload(alert='hello', sound="default", badge=1,custom={})
apns.gateway_server.send_notification(token_hex, payload)
for (token_hex, fail_time) in apns.feedback_server.items():
logging.info(token_hex)
logging.info(fail_time)