Comment résoudre les erreurs « DeviceTokenNotForTopic » lors de la publication de notifications push APNs via Amazon SNS ou Amazon Pinpoint ?

Dernière mise à jour : 17-08-2022

Les notifications push mobiles de mon Apple Push Notification Service (APNs) ne parviennent pas à être envoyées via Amazon Simple Notification Service (Amazon SNS) ou Amazon Pinpoint. Lorsque les notifications push échouent, APNs renvoie un code d'état 400/410 avec un message d'erreur « DeviceTokenNotForTopic ». Pourquoi est-ce que je reçois cette erreur et comment puis-je résoudre le problème ?

Brève description

Lors de la création d'une application de plateforme Amazon SNS ou de la configuration d'un canal APNs Amazon Pinpoint, un certificat/jeton lié à un identifiant de lot spécifique est requis. Votre application génère un jeton d'appareil avec cet ID de lot. Lors de l'envoi d'un message à un point de terminaison d'appareil, APNs attend le même identifiant de lot pour ce jeton d'appareil.

Si APNs récupère un jeton d'appareil avec un identifiant de lot différent, il renvoie un code d'état 400/410 et l'erreur suivante : « DeviceTokenNotForTopic ». Lorsque cette erreur se produit, APN désactive le point de terminaison de plateforme associé et affiche l'état « désactivé » pour ce point de terminaison sur SNS.

Pour plus d'informations, consultez les rubriques Présentation du processus de notification utilisateur et Méthodes d'authentification Apple dans le Guide du développeur Amazon SNS. Consultez également la rubrique Gestion des réponses aux notifications d'APNs (langue française non garantie) sur le site web Apple Developer.

Remarque : vous pouvez configurer des notifications d'événement d'application mobile lorsque certains événements d'application se produisent, afin de pouvoir effectuer des actions programmatiques sur cet événement. Par exemple, vous pouvez configurer une notification d'événement lorsqu'un point de terminaison de plateforme est désactivé.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Pour résoudre l'erreur lors de l'utilisation d'Amazon SNS ou d'Amazon Pinpoint pour envoyer des notifications push aux APN

1.    Vérifier d'abord l'identifiant de lot enregistré sur les APN pour votre application.

2.    Mettez à jour l'ID de lot de l'application pour qu'il corresponde à celui enregistré sur les APN et générez un nouveau jeton d'appareil.

3.    Ensuite, mettez à jour le point de terminaison de la plateforme avec le nouveau jeton d'appareil généré.

Vérifier l'identifiant de lot enregistré sur APNs pour votre application

Authentification basée sur des certificats

1.    Connectez-vous à votre compte Apple Developer.

2.    Dans la barre de navigation de gauche, choisissez Certificates, IDs & Profiles (Certificats, identifiants et profils).

3.    Dans la barre de navigation de gauche, choisissez Identifiers (Identifiants).

4.    Sélectionnez votre application.

       Remarque : pour vérifier que votre application est liée à un certificat, accédez à Certificates (Certificats), puis affichez l'ID du lot sous Name (Nom).

5.    Copiez l'identifiant de lot qui se trouve dans le champ Nom. Il s'agit de l'identifiant de lot enregistré sur APNs pour votre application.

Authentification basée sur des jetons

Pour l'authentification basée sur des jetons, vous pouvez mapper plusieurs ID de lot (applications) avec un seul jeton. Pour vous assurer d'utiliser le bon ID de lot, vérifiez-le sur votre compte Apple Developer ou sur votre console SNS.

1.    Connectez-vous à votre compte Apple Developer.

2.    Dans la barre de navigation de gauche, choisissez Certificates, IDs & Profiles (Certificats, identifiants et profils).

3.    Dans la barre de navigation de gauche, choisissez Identifiers (Identifiants). Ensuite, App IDs (ID d'application).

4.    Choisissez votre application.

5.    Copiez l'identifiant de lot qui se trouve dans le champ Nom. Il s'agit de l'ID de lot enregistré sur les APN pour votre application.

6.    Connectez-vous à votre console SNS.

7.    Accédez à Push Notification (Notification Push) sous Mobile.

8.    Choisissez votre application de plateforme.

9.    Vérifiez que l'ID de lot Apple est correct.

Pour mettre à jour l'ID de lot de l'application afin qu'il corresponde à celui des APN

1.    Téléchargez Xcode, si ce n'est déjà fait.

2.    Ouvrez Xcode.

3.    Choisissez le dossier de projet racine de votre application.

4.    Choisissez Signing & Capabilities (Signature et fonctionnalités).

5.    Dans le champ de texte Bundle Identifier (Identificateur de lot), saisissez l'identifiant de lot enregistré sur APNs pour votre application. Le nouvel ID de lot est enregistré automatiquement.

6.    Exécutez votre application pour générer un nouveau jeton d'appareil à l'aide de l'ID de lot correct.

Mettre à jour le point de terminaison de plateforme

Pour Amazon SNS

1.    Exécutez la commande AWS CLI set-endpoint-attributes.

2.    Modifiez l'attribut Enabled (Activé) sur true (vrai). Puis, pour Token (Jeton), spécifiez le jeton d'appareil que vous venez de générer.

Pour Amazon Pinpoint

1.    Exécutez la commande AWS CLI update-endpoint.

2.    Pour l'attribut Address (Adresse), spécifiez le jeton d'appareil nouvellement généré.

Pour plus d'informations, consultez la rubrique Création d'un point de terminaison de plateforme dans le Guide du développeur Amazon SNS et Ajout de points de terminaison à Amazon Pinpoint.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?