Pourquoi mon point de terminaison de notification push n'est-il pas actif ?

Lecture de 5 minute(s)
0

Lorsque j'envoie des notifications push aux points de terminaison Amazon SNS (appareils Android ou iOS), ceux-ci sont désactivés.

Brève description

Amazon Simple Notification Service (Amazon SNS) peut envoyer des messages de notifications push aux appareils mobiles. Ces messages apparaissent dans les applications mobiles sous forme de badges, d'alertes sonores ou d'alertes par message.

L'ajout d'un jeton d'appareil en tant que point de terminaison à l'application de plateforme définit la valeur Enabled de ce point de terminaison sur « True ». Lorsque SNS publie une notification, il contacte le service de notification push, tel que Apple Push Notification Service (APNs) ou Firebase Cloud Messaging (FCM). Le service de notification push envoie ensuite le message à l'appareil mobile.

Si le service de notification push ne parvient pas à communiquer avec l'appareil mobile, il envoie des informations à SNS concernant l'échec de transmission du message. SNS marque le point de terminaison comme désactivé (c'est-à-dire que l'attribut Enabled est défini sur « False ») lorsque le service de notification indique que le point de terminaison n'est pas valide. Une fois le point de terminaison désactivé, SNS rejette les appels de publication suivants envoyés au point de terminaison. Pour en savoir plus, consultez la section GetEndpointAttributes.

Résolution

Les points de terminaison auxquels aucun jeton d'appareil valide n'est associé sont désactivés lorsque des notifications push leur sont envoyées.

Causes de désactivation des points de terminaison

Voici quelques causes courantes de désactivation d'un point de terminaison :

  • L'utilisateur final a désinstallé l'application de l'appareil. Si vous publiez sur le point de terminaison SNS correspondant, le point de terminaison est alors désactivé.
  • L'utilisateur final a réinstallé l'application. L'appareil reçoit à présent un nouveau jeton, puis marque l'ancien jeton comme non valide.
  • L'utilisateur final a mis à niveau le système d'exploitation de l'appareil. Le jeton existant devient alors incompatible avec le logiciel mis à niveau. Votre application doit demander un nouveau jeton.
  • L'utilisateur final a mis à niveau l'application depuis l'App Store d'Apple ou depuis Google Play. Il n'a toutefois pas encore lancé l'application pour lui permettre de mettre à jour son jeton.
  • Dans le cas des services APN, le certificat SSL (Secure Socket Layer) push n'est pas valide ou ne correspond pas à l'environnement (production ou sandbox).
  • L'utilisateur final a restauré l'appareil à partir d'une sauvegarde.
  • Le jeton n'est pas valide et n'appartient pas à une installation active de l'application sur un appareil.
  • L'utilisateur final a effacé les données de l'application, ce qui pousse l'application à obtenir un nouveau jeton.

Activation du point de terminaison

Dans le cas des services APN, l'appareil Apple informe SNS que les informations d'identification ont expiré, ne sont pas valides ou ont été révoquées. Consultez le portail des développeurs Apple pour vérifier leur statut.

Réactivation d’un jeton désactivé

Il ne faut pas activer un point de terminaison désactivé. AWS SNS désactive uniquement une application s'il détermine que tous les messages envoyés aux points de terminaison de l'application échoueront. Vérifiez si le jeton est valide. Si ce n'est pas le cas, commencez par le mettre à jour avec SetEndpointAttributes. Vous pouvez ensuite l’activer.

La réactivation d'un point de terminaison sans mettre à jour son jeton peut uniquement fonctionner si vous désinstallez et réinstallez une application sur l'appareil avec le même jeton.

Vous pouvez utiliser ce pseudo-code pour créer ou activer un point de terminaison :

Retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN isn't stored)
  # this is a first-time registration
  call create platform endpoint
  store the returned platform endpoint ARN
endif

call get endpoint attributes on the platform endpoint ARN

if (you get a not-found exception while getting the attributes)
  # the platform endpoint was deleted
  call create platform endpoint with the latest device token
  store the returned platform endpoint ARN
else
  if (the device token in the endpoint does not match the latest one) or
      (get endpoint attributes shows the endpoint as disabled)
    call set endpoint attributes to set the latest device token and then enable the platform endpoint
  endif
endif

Appliquez les meilleures pratiques décrites dans la section des évènements d'application mobile pour surveiller les modifications (création, mise à jour, suppression ou échec) apportées aux points de terminaison de la plateforme. Les notifications déclenchées par ces événements peuvent permettre à votre application à prendre des mesures programmatiques lorsque l'événement en question se produit.

Pour modifier les attributs des points de terminaison de la plateforme, configurez une destination de rubrique SNS pour EventEndpointUpdated sur votre application de plateforme SNS. Cet exemple présente l'envoi d'une charge utile pour EventEndpointUpdated aux abonnés.

{
"EndpointArn": "arn:aws:sns:us-east-1:<account_ID>:endpoint/GCM/TestApplication/bdf172d4-f9b4-3b76-bc0b-f2XXXXXXXXXX",
"EventType": "EndpointUpdated",
"Resource": "arn:aws:sns:us-east-1:<account_ID>:app/GCM/TestApplication",
"Service": "SNS",
"Time": "2023-07-05T13:04:40.058Z",
"Type": "EndpointUpdated"
}

Informations connexes

Pourquoi mon application de plateforme push est-elle désactivée ?

Résolution des problèmes

Comment accéder aux journaux de transmission des rubriques Amazon SNS pour les notifications push ?

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

Comment créer une application de plateforme Android dans Amazon SNS pour les notifications push ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois