我有一个奇怪的问题.我正在尝试使用Python推送Apple推送通知.我可以毫无问题地连接和发送单个邮件.当我开始发送多条消息时会弹出问题,但它甚至比这更奇怪.
我正在测试多种设备......一些iPhone和一些iPod Touch.我可以毫不费力地向iPhone发送多条消息,但如果我在列表中有一个iPod Touch设备ID,那么之后的任何消息都将失败.
所以,如果我按顺序发送4条消息,如下所示:
1 - iPhone
2 - iPhone
3 - ipod Touch
4 - iPhone
将交付1和2,3和4将失败.
使用相同的设备ID,如果我将任何iPod Touch设备ID移动为第一条消息,则所有消息都将失败.同样,如果我只发送到iPhone,所有消息都会成功.
这是我正在测试的代码,在它的当前状态下,我只会得到前两条消息,最后两条消息每次都会失败.
import struct, ssl, json, sys, time, socket, binascii
from optparse import OptionParser
class PushSender(object):
def __init__(self, host, cert, key):
self.apnhost = (host, 2195)
self.sock = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM),
keyfile = key,
certfile = cert,
do_handshake_on_connect=False)
self.sock.connect(self.apnhost)
while True:
try:
self.sock.do_handshake()
break
except ssl.SSLError, err:
if err.args[0] == ssl.SSL_ERROR_WANT_READ:
select.select([self.sock], [], [])
elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE:
select.select([], [self.sock], [])
else: …Run Code Online (Sandbox Code Playgroud)