Com que frequência verifica o feedback do APNS?

9

Para detectar tokens inválidos, com que frequência devo verificar o serviço de feedback?

Eu implementei um sistema de transmissão usando o serviço APNS. Eu abro uma conexão, envio todas as mensagens do APNS e desconecto. Em seguida, abro uma conexão de feedback logo após a conclusão da transmissão e leio todos os tokens inválidos.

Eu recebo tokens inválidos na conexão de feedback. No entanto, muitas vezes minha transmissão será apenas parcialmente bem-sucedida (alguns dispositivos são recebidos e outros não) e, quando removo todos os tokens conhecidos, meus dispositivos de teste recebem a mensagem de forma consistente.

Suponho que a Apple está parando a transmissão depois de receber os primeiros tokens inválidos.

Então, não estou escutando o feedback corretamente?

    
por Justin Francis 14.02.2012 в 16:02
fonte

2 respostas

3

No final, a única maneira de lidar adequadamente com esse problema foi migrar para o mais novo "formato de notificação aprimorado" da Apple. Esse formato permite que você forneça um ID para cada mensagem enviada e, quando a Apple desconectar você, eles enviam o erro e o ID da mensagem que causou o erro.

Isso permite que o cliente tente novamente enviar mensagens já enviadas e descarte o token inválido

    
por Justin Francis 07.06.2012 / 21:42
fonte
2

Você deve verificar a resposta de feedback sempre que enviar um envio e excluir dispositivos inativos. Embora isso não pareça seu problema agora.

Seu problema parece ter alguns tokens inválidos em seu banco de dados. A Apple abandonará sua conexão se você enviar tokens inválidos . Enviar um token inativo não terá efeito, mas se você enviar um token malformado / inválido, a Apple eliminará seu soquete.

O outro problema pode ser um esquema de repetição ausente do seu lado. Você implementou alguma rotina que reabrirá a conexão com a Apple se ela cair enquanto você pressiona? Você tem que prever que a conexão pode falhar, e se isso acontecer, você tem que colocá-lo de volta e começar a empurrar novamente de onde parou.

O que você deve procurar é:

  • Verifique se você armazena apenas tokens VALIDOS em seu banco de dados
  • Verifique se você tem um esquema de novas tentativas
  • Dê uma olhada no Notnoop , é uma API Java muito simples que lida muito com você
por pgratton 17.02.2012 / 23:25
fonte