iOS: Erro de token inválido para notificações push

Prev Next

Gerenciando erros de gateway ao testar o iOS push

Um erro de token inválido pode ser dado ao testar notificações para uma versão de desenvolvimento/empresa de um aplicativo iOS. A causa mais provável é que a notificação foi enviada pelo gateway errado devido a uma configuração incorreta, mas também pode ser causada por uma incompatibilidade entre o ID do pacote do certificado e o ID do pacote do app.

Configuração incorreta do gateway

Se você já fez uma build de desenvolvimento, o problema será que o app tem um token sandbox da Apple, mas você não está enviando pelo gateway sandbox APNS. A Apple tem dois gateways de notificação: um para enviar para builds de desenvolvimento (sandbox) e outro para envio para builds de produção. Para testar com uma build de desenvolvimento, você precisará ativar o modo sandbox ao inicializar no App Delegate:

XPush.setSandboxModeEnabled(true)
[XPush setSandboxModeEnabled:YES];

e então selecione o gateway sandbox no Xtremepush ao enviar a mensagem. Se você fez uma build de produção ad-hoc ou enterprise para testar com o gateway de produção, o problema será que você definiu o modo sandbox e não removeu.

Se você testar usando builds de desenvolvimento, então deve ativar o Modo Sandbox ao testar, já que a Apple usa um gateway diferente para compilações compiladas com um perfil de provisionamento móvel de desenvolvimento. Se você só fizer builds empresariais, não vai precisar disso. Defina o modo sandbox em uma instrução que só rodará para builds de desenvolvimento, pois não deve ser ativado em produção.

Você também pode ativar os logs de depuração do SDK dessa forma:

[XPush registerForRemoteNotificationTypes:types];
// Only runs for development builds sets push to sandbox mode and turns on debug logs
#if DEBUG
    [XPush setSandboxModeEnabled:YES];
    [XPush setShouldShowDebugLogs:YES];
#endif
[XPush applicationDidFinishLaunchingWithOptions:launchOptions];

Incompatibilidade do ID do feixe

Se a configuração do gateway parecer ok, outra causa provável é enviar um certificado que tenha como alvo um ID de bundle diferente do do app. Por exemplo, o ID do bundle do seu app é com.example.app1 mas o certificado que você enviou é alvo com.example.app2 de .com.example.app1.somethingelse