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, veuillez consulter la rubrique 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 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 des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente de l'AWS CLI.

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

  1. Vérifier d'abord l'identifiant de lot enregistré sur APNs pour votre application
  2. Mettez à jour l'identifiant de lot de l'application pour qu'il corresponde à celui enregistré sur APNs 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 Name (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 vérifier que vous utilisez le bon identifiant de lot, confirmez-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. Sélectionnez votre application.
  5. Copiez l'identifiant de lot qui se trouve dans le champ Name (Nom). Il s'agit de l'identifiant de lot enregistré sur APNs 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'identifiant de lot Apple est le bon identifiant de lot.

Pour mettre à jour l'identifiant de lot de l'application afin qu'il corresponde à celui d'APNs

  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 identifiant 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 les attributs suivants :
    - Activé sur « true ».
    - 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. Modifiez les attributs suivants :
    - Address (Adresse), spécifiez le jeton d'appareil que vous venez de générer.

Pour plus d'informations, veuillez consulter la rubrique Créer un point de terminaison de plateforme dans le Guide du développeur Amazon SNS et Ajouter des points de terminaison à Amazon Pinpoint.


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


Avez-vous besoin d'aide pour une question technique ou de facturation ?