2010-10-07 5 views

ответ

1

Согласно Apple, документации, если мы используем расширенную версию протокола Нажимаем мы можем получить сообщение об ошибке от канала, ошибки откоса формат:

COMMAND (1 байт) | STATUS (1 байт) | ID (4 байт)

статусы:

0: 'No errors encountered' 
1: 'Processing error' 
2: 'Missing device token' 
3: 'Missing topic' 
4: 'Missing payload' 
5: 'Invalid token size' 
6: 'Invalid topic size' 
7: 'Invalid payload size' 
8: 'Invalid token' 
255: 'None (unknown)' 

здесь пример кода:

... 
socket = SSLSocket (
    socket.socket() 
    , ssl_version = ssl.PROTOCOL_SSLv3 
    , certfile 
) 

socket.connect(apnsHost, apnsPort) 

len_written = connectionContext.write(socket) 

errors = [] 

# Wait for input from socket 
inputready = select.select ([socket], [],[], 1)[0] 

if inputready: 
     replyBlock = channel.recv (6) 

     errors = [] #will be filled with error responses 
     while replyBlock: 
      #error-response packet 
      #COMMAND(1)|STATUS(1)|ID(4) 
      command, status, id = struct.unpack_from('!BBL', replyBlock) 

      if status != 0: 
       errors.append((command, status, id))     

      replyBlock = channel.recv (6) 
Смежные вопросы