Como soluciono problemas de erros “DeviceTokenNotForTopic” ao publicar notificações por push do APNs por meio do Amazon SNS ou do Amazon Pinpoint?

Última atualização: 17/8/2022

Mão estou conseguindo enviar notificações por push móveis do Apple Push Notification Service (APNs) pelo Amazon Simple Notification Service (Amazon SNS) ou pelo Amazon Pinpoint. Quando as notificações por push falham, o APNs retorna um código de status 400/410 com uma mensagem de erro “DeviceTokenNotForTopic”. Por que estou recebendo esse erro e como faço para resolvê-lo?

Breve descrição

Ao criar uma aplicação da plataforma Amazon SNS ou configurar um canal do Amazon Pinpoint APNs, é necessário um certificado/token vinculado a um ID de pacote específico. A aplicação gera um token de dispositivo com esse ID de pacote. Ao enviar uma mensagem para um endpoint de dispositivo, o APN espera o mesmo ID de pacote para esse token de dispositivo.

Se o APN captar um token de dispositivo com um ID de pacote diferente, ele retornará um código de status 400/410 e o seguinte erro: “DeviceTokenNotForTopic”. Quando esse erro ocorre, o APNs desativa o endpoint de plataforma associado e exibe um status de “disabled” (desabilitado) para esse endpoint no SNS.

Para obter mais informações, consulte User notification process overview (Visão geral do processo de notificação do usuário) e Apple authentication methods (Métodos de autenticação da Apple) no Guia do desenvolvedor do Amazon SNS. E também Handling notification responses from APNs (Como lidar com respostas de notificação do APNs) no site Apple Developer.

Observação: você pode configurar notificações de eventos de aplicativos móveis para quando determinados eventos de aplicativo ocorrerem, a fim de que você possa realizar ações programáticas nesse evento. Por exemplo, você pode configurar uma notificação de evento quando um endpoint da plataforma for desativado.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Para resolver o erro ao usar o Amazon SNS ou o Amazon Pinpoint para enviar notificações por push para o APNs

1.    Primeiro, verifique o ID do pacote registrado no APNs para o seu aplicativo.

2.    Atualize o ID do pacote do aplicativo para corresponder ao ID do pacote registrado no APNs e gere um novo token de dispositivo.

3.    Em seguida, atualize o endpoint da plataforma com o token de dispositivo recém-gerado.

Verificar o ID do pacote registrado no APNs para a aplicação

Autenticação baseada em certificado

1.    Faça login na sua conta do Apple Developer.

2.    Na barra de navegação esquerda, escolha Certificates, IDs & Profiles (Certificados, IDs e perfis).

3.    Na barra de navegação esquerda, escolha Identifiers (Identificadores).

4.    Escolha o seu aplicativo.

Observação: para verificar se o seu aplicativo está vinculado a um certificado, navegue até Certificates (Certificados) e visualize o ID do pacote em Name (Nome).

5.    Copie o ID do pacote que está no campo Name (Nome). Esse é o ID do pacote registrado no APNs para a aplicação.

Autenticação baseada em token

Para autenticação baseada em token, você pode mapear vários IDs de pacote (aplicações) com um único token. Para verificar se você está usando o ID de pacote correto, confirme-o na sua conta do Apple Developer ou no seu console do SNS.

1.    Faça login na sua conta do Apple Developer.

2.    Na barra de navegação esquerda, escolha Certificates, IDs & Profiles (Certificados, IDs e perfis).

3.    Na barra de navegação esquerda, escolha Identifiers (Identificadores). Em seguida, App IDs (IDs de aplicação).

4.    Escolha sua aplicação.

5.    Copie o ID do pacote que está no campo Name (Nome). Esse é o ID do pacote registrado no APNs para o seu aplicativo.

6.    Faça login no Console do SNS.

7.    Navegue até Push Notifications (Notificação por push) em Mobile (Móvel).

8.    Escolha o seu aplicativo da plataforma.

9.    Verifique se o ID de pacote da Apple é o ID de pacote correto.

Para atualizar o ID de pacote do aplicativo para que ele corresponda ao ID de pacote registrado no APNs

1.    Baixe o Xcode, se ainda não tiver feito isso.

2.    Abra o Xcode.

3.    Escolha a pasta do projeto raiz da sua aplicação.

4.    Escolha Signing & Capabilities (Assinatura e recursos).

5.    No campo de texto Bundle Identifier (Identificador do pacote), insira o ID do pacote registrado no APNs para sua aplicação. O novo ID de pacote é salvo automaticamente.

6.    Execute o aplicativo para gerar um novo token de dispositivo com o ID de pacote correto.

Atualize o endpoint da plataforma

Para o Amazon SNS

1.    Execute o comando set-endpoint-attributes da AWS CLI.

2.    Altere o atributo Enabled (Habilitado) para true (verdadeiro). Depois, para Token, especifique o token de dispositivo recém-gerado.

Para o Amazon Pinpoint

1.    Execute o comando update-endpoint da AWS CLI.

2.    Para o atributo Address (Endereço), especifique o token de dispositivo recém-gerado.

Para obter mais informações, consulte Creating a platform endpoint (Como criar um endpoint de plataforma), no Guia do desenvolvedor do Amazon SNS, e Adding endpoints to Amazon Pinpoint (Como adicionar endpoints ao Amazon Pinpoint).


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?