¿Cómo soluciono los errores de “DeviceTokenNotForTopic” al publicar notificaciones push de APNs a través de Amazon SNS o Amazon Pinpoint?

5 minutos de lectura
0

Las notificaciones push móviles del servicio de notificaciones push de Apple (APNs) no se envían a través de Amazon Simple Notification Service (Amazon SNS) o Amazon Pinpoint. Cuando las notificaciones push fallan, APNs devuelve un código de estado 400/410 con el mensaje de error “DeviceTokenNotForTopic”. ¿Por qué recibo este error y cómo lo soluciono?

Descripción corta

Al crear una aplicación de plataforma de Amazon SNS o configurar un canal de APNs de Amazon Pinpoint, se requiere un certificado/token vinculado a un identificador de paquete específico. La aplicación genera un token de dispositivo con ese ID de paquete. Al enviar un mensaje a un punto de conexión de dispositivo, los APNs esperan el mismo ID de paquete para este token de dispositivo.

Si el APNs recoge un token de dispositivo con un ID de paquete diferente, devuelve un código de estado 400/410 y el siguiente error: “DeviceTokenNotForTopic”. Cuando se produce este error, los APNs desactivan el punto conexión de la plataforma asociado y muestran un estado “deshabilitado” para este punto de conexión en SNS.

Para obtener más información, consulte Información general del proceso de notificación de usuario y Métodos de autenticación de Apple en la Guía para desarrolladores de Amazon SNS. Además, consulte Handling Notification Responses from APNs (Gestionar las respuestas a las notificaciones de APNs) en el sitio web Apple Developer.

Nota: Puede configurar notificaciones de eventos de aplicaciones móviles para cuando se produzcan ciertos eventos de aplicaciones, de modo que pueda realizar una acción programática en ese evento. Por ejemplo, puede configurar una notificación de eventos cuando se desactiva un punto de conexión de la plataforma.

Solución

Nota: Si recibe errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de AWS CLI.

Para resolver el error al usar Amazon SNS o Amazon Pinpoint para enviar notificaciones push a APNs

1.    Compruebe primero el ID del paquete registrado en APNs para su aplicación.

2.    Actualice el ID del paquete de la aplicación para que coincida con el ID del paquete registrado en APNs y genere un nuevo token del dispositivo.

3.    A continuación, actualice el punto de conexión de la plataforma con el token de dispositivo recién generado.

Comprobar el identificador del paquete registrado en APNs para su aplicación

Autenticación basada en certificados

1.    Inicie sesión en su cuenta de Apple Developer.

2.    En la barra de navegación izquierda, elija Certificates, IDs & Profiles (Certificados, ID y perfiles).

3.    En la barra de navegación izquierda, elija Identifiers (Identificadores).

4.    Elija su aplicación.

Nota: Para comprobar que la aplicación está vinculada a un certificado, vaya a Certificates (Certificados) y, a continuación, consulte el ID del paquete en Name (Nombre).

5.    Copie el identificador del paquete que está en el campo Name (Field). Este es el ID del paquete que está registrado en APNs para su aplicación.

Autenticación basada en tokens

Para la autenticación basada en tokens, puede asignar varios ID de paquete (aplicaciones) con un único token. Para comprobar que está usando el ID de paquete correcto, confírmelo en su cuenta de Apple Developer o en la consola de SNS.

1.    Inicie sesión en su cuenta de Apple Developer.

2.    En la barra de navegación izquierda, elija Certificates, IDs & Profiles (Certificados, ID y perfiles).

3.    En la barra de navegación izquierda, elija Identifiers (Identificadores). A continuación, App IDs (ID de aplicaciones).

4.    Elija su aplicación.

5.    Copie el identificador del paquete que está en el campo Name (Field). Este es el ID del paquete que está registrado en APNs para su aplicación.

6.    Inicie sesión en la consola de SNS.

7.    Vaya a Push Notification (Notificación push) en Mobile (Móvil).

8.    Elija su aplicación de plataforma.

9.    Verifique que el ID del paquete de Apple sea el ID de paquete correcto.

Para actualizar el ID del paquete de la aplicación para que coincida con el ID del paquete registrado en APNs

1.    Descargue Xcode, si aún no lo ha hecho.

2.    Abra Xcode.

3.    Elija la carpeta raíz del proyecto de su aplicación.

4.    Elija Signing & Capabilities (Firma y capacidades).

5.    En el campo de texto Bundle Identifier (Identificador del paquete), ingrese el ID del paquete que está registrado en APNs para su aplicación. El nuevo ID del paquete se guarda automáticamente.

6.    Ejecute la aplicación para generar un nuevo token de dispositivo con el ID del paquete correcto.

Actualizar el punto de conexión de la plataforma

Para Amazon SNS

1.    Ejecute el comando set-endpoint-attributes de la AWS CLI.

2.    Cambie el atributo de Enabled (Habilitado) a true (Verdadero). Luego, en Token, especifique el token del dispositivo recién generado.

Para Amazon Pinpoint

1.    Ejecute el comando update-endpoint de la AWS CLI.

2.    En el atributo Address (Dirección), especifique el token de dispositivo recién generado.

Para obtener más información, consulte Creación de un punto de conexión de plataforma en la Guía para desarrolladores de Amazon SNS y Adding endpoints to Amazon Pinpoint (Adición de puntos de conexión a Amazon Pinpoint).


Información relacionada

Mobile push API errors (Errores de API push móvil)