发推送的时候给每个token加上一个identifier,方便发送失败的时候重新发送
apnsPackFormat = "!BIIH" + str(tokenLength) + "sH" + str(payloadLength) + "s"
message = struct.pack(apnsPackFormat,
command,
identifier,
expiry,
tokenLength,
deviceToken,
payloadLength,
payload)
ssl_conn.sendall(message)
socket 建立后不停往服务器发(发送大量推送时候设置休眠,比如每发500个sleep(4)不然推送服务器可能会死机很长时间)
# ssl socket 如果发送的过程中出现任何错误都可以去读取反馈信息,获得错误代码并做相应处理
result = -1
self.ssl_conn.settimeout(5)
recive = self.ssl_conn.read(BUFF_SIZE)
if recive:
_, status, identifier = struct.unpack('!BBI', recive)
if status == 8: # 8: Invalid token
result = identifier
return result
处理其他错误参照@
fsw90628贴上来的开发文档