View a markdown version of this page

Gestion par Amazon SNS des terminaux Firebase Cloud Messaging - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion par Amazon SNS des terminaux Firebase Cloud Messaging

Gestion et maintenance des jetons d'appareils

Vous pouvez garantir la délivrabilité des notifications push de votre application mobile en suivant ces étapes :

  1. Stockez tous les jetons de l'appareil, les ARN des points de terminaison Amazon SNS correspondants et les horodatages sur votre serveur d'applications.

  2. Supprimez tous les jetons périmés et supprimez les ARN des points de terminaison Amazon SNS correspondants.

Lors du démarrage initial de votre application, vous recevrez un jeton d'appareil (également appelé jeton d'enregistrement) pour l'appareil. Ce jeton d'appareil est créé par le système d'exploitation de l'appareil et est lié à votre application FCM. Après avoir reçu ce jeton d'appareil, vous pouvez l'enregistrer auprès d'Amazon SNS en tant que point de terminaison de plateforme. Nous vous recommandons de stocker le jeton de l'appareil, l'ARN du point de terminaison de la plateforme Amazon SNS et l'horodatage en les enregistrant sur votre serveur d'applications ou sur un autre magasin permanent. Pour configurer votre application FCM afin de récupérer et de stocker les jetons d'appareil, voir Récupérer et stocker les jetons d'enregistrement dans la documentation Firebase de Google.

Il est important que vous mainteniez vos jetons à jour. Les jetons d'appareil de votre utilisateur peuvent changer dans les conditions suivantes :

  1. L'application mobile est restaurée sur un nouvel appareil.

  2. L'utilisateur désinstalle ou met à jour l'application.

  3. L'utilisateur efface les données de l'application.

Lorsque le jeton de votre appareil change, nous vous recommandons de mettre à jour le point de terminaison Amazon SNS correspondant avec le nouveau jeton. Cela permet à Amazon SNS de continuer à communiquer avec l'appareil enregistré. Vous pouvez le faire en implémentant le pseudo code suivant dans votre application mobile. Il décrit une pratique recommandée pour créer et gérer des points de terminaison de plate-forme activés. Cette approche peut être exécutée à chaque démarrage des applications mobiles ou en tant que tâche planifiée en arrière-plan.

Code fictif

Utilisez le pseudo-code FCM suivant pour gérer et gérer les jetons de l'appareil.

retrieve the latest token from the mobile OS if (endpoint arn not stored) # first time registration call CreatePlatformEndpoint store returned endpoint arn endif call GetEndpointAttributes on the endpoint arn if (getting attributes encountered NotFound exception) #endpoint was deleted call CreatePlatformEndpoint store returned endpoint arn else if (token in endpoint does not match latest) or (GetEndpointAttributes shows endpoint as disabled) call SetEndpointAttributes to set the latest token and enable the endpoint endif endif

Pour en savoir plus sur les exigences en matière de mise à jour des jetons, consultez la section Mettre à jour régulièrement les jetons dans la documentation Firebase de Google.

Détection de jetons non valides

Lorsqu'un message est envoyé à un point de terminaison FCM v1 avec un jeton d'appareil non valide, Amazon SNS reçoit l'une des exceptions suivantes :

  • UNREGISTERED(HTTP 404) — Lorsqu'Amazon SNS reçoit cette exception, vous recevez un événement d'échec de livraison avec un « FailureType of InvalidPlatformToken » et un jeton FailureMessage de plateforme associé au point de terminaison n'est pas valide. Amazon SNS désactive le point de terminaison de votre plateforme en cas d'échec d'une livraison, à cette exception près.

  • INVALID_ARGUMENT(HTTP 400) — Lorsqu'Amazon SNS reçoit cette exception, cela signifie que le jeton de l'appareil ou la charge utile du message n'est pas valide. Pour plus d'informations, consultez ErrorCode la documentation Firebase de Google.

Comme il INVALID_ARGUMENT peut être renvoyé dans l'un ou l'autre de ces cas, Amazon SNS renverra un FailureType of InvalidNotification et un corps FailureMessage de notification n'est pas valide. Lorsque cette erreur s'affiche, vérifiez que votre charge utile est correcte. S'il est correct, vérifiez que le jeton de l'appareil est à jour. Amazon SNS ne désactivera pas le point de terminaison de votre plateforme en cas d'échec d'une livraison, à cette exception près.

Un autre cas d'échec de InvalidPlatformToken livraison peut survenir lorsque le jeton d'appareil enregistré n'appartient pas à l'application qui tente d'envoyer ce message. Dans ce cas, Google renverra une erreur SENDER_ID_MISMATCH. Amazon SNS désactive le point de terminaison de votre plateforme en cas d'échec d'une livraison, à cette exception près.

Tous les codes d'erreur observés reçus de l'API FCM v1 sont à votre disposition CloudWatch lorsque vous configurez la journalisation de l'état de livraison pour votre application.

Pour recevoir les événements de diffusion relatifs à votre application, consultezÉvénements d'application disponibles.

Supprimer les jetons périmés

Les jetons sont considérés comme périmés lorsque la distribution des messages au terminal commence à échouer. Amazon SNS définit ces jetons périmés comme points de terminaison désactivés pour l'application de votre plateforme. Lorsque vous publiez sur un point de terminaison désactivé, Amazon SNS renvoie un EventDeliveryFailure événement avec le signe « FailureType of EndpointDisabled » et un «  point FailureMessage de terminaison » est désactivé. Pour recevoir les événements de diffusion relatifs à votre application, consultezÉvénements d'application disponibles.

Lorsque vous recevez cette erreur d'Amazon SNS, vous devez supprimer ou mettre à jour le jeton obsolète dans l'application de votre plateforme.