在我司之前,一直听说用极光推送,后来发现公司有一个C++版本的APNS推送服务,但是写得非常烂,三天两头挂,天天被上司骂,然后在全球同性交友网站上游荡了两天,发现了一个逻辑清晰的库
https://github.com/Pr0Ger/PyAPNs2
虽然git上还有很多其他的,但是个人觉得这一个逻辑远比其他的清晰,不会出现报错都不知道为什么;
建议:直接下源码到源码路径,不要pip安装,因为你可能需要进行日志添加
需要另起一个线程调用心跳(heartbeat),来保持和APNS SERVER的长连接;这里有个很容易造成误解的地方,之前同事一直误认为,心跳是为了检查长连接是否存在,其实并不是,心跳只是为了保持长连接,即使长连接断掉也并不需要去判断重连(重连的地方并不是在心跳这里)
def _start_heartbeat(self, heartbeat_period):
conn_ref = weakref.ref(self._connection)
def watchdog():
while True:
conn = conn_ref()
if conn is None:
break
conn.ping('0' * 8)
nowtime = time.strftime("%Y-%m-%d %H:%M:%S", tim