

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 des points de terminaison Firebase Cloud Messaging par Amazon SNS
<a name="sns-fcm-endpoint-management"></a>

## Gestion et maintenance des jetons d'appareils
<a name="sns-managing-device-tokens"></a>

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, le point de terminaison ARNs Amazon SNS correspondant et les horodatages sur votre serveur d'applications.

1. Supprimez tous les jetons périmés et supprimez le point de terminaison Amazon ARNs SNS correspondant.

Au 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 émis par le système d'exploitation de l'appareil et est lié à votre application FCM. Une fois que vous avez 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 persistant. Pour configurer votre application FCM afin de récupérer et de stocker les jetons d'appareil, consultez la section [Récupérer et stocker les jetons d'enregistrement](https://firebase.google.com/docs/cloud-messaging/manage-tokens#retrieve-and-store-registration-tokens) dans la documentation *Firebase* de Google.

Il est important que vous conserviez up-to-date les jetons. Les jetons de l'appareil de votre utilisateur peuvent changer dans les conditions suivantes :

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

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

1. 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 poursuivre la communication 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 plateforme activés. Cette approche peut être exécutée à chaque démarrage des applications mobiles ou sous forme de tâche planifiée en arrière-plan.

### Code fictif
<a name="sns-device-token-pseudo-code"></a>

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 relatives à la mise à [jour des jetons, consultez la section Mettre à jour régulièrement](https://firebase.google.com/docs/cloud-messaging/manage-tokens#update-tokens-on-a-regular-basis) les jetons dans la documentation *Firebase* de Google.

## Détection de jetons non valides
<a name="sns-detecting-invalid-tokens"></a>

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 identifiant `FailureType` de`InvalidPlatformToken`, et un *jeton de plateforme `FailureMessage` of associé au point de terminaison n'est pas valide*. Amazon SNS désactivera 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](https://firebase.google.com/docs/reference/fcm/rest/v1/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 « de »`InvalidNotification`, et le *corps `FailureType` de notification « `FailureMessage` of » n'est* pas valide. Lorsque vous recevez cette erreur, vérifiez que votre charge utile est correcte. Si c'est correct, vérifiez que le jeton de l'appareil l'est up-to-date. Amazon SNS ne désactive pas le point de terminaison de votre plateforme en cas d'échec d'une livraison, à cette exception près.

Un autre cas où vous rencontrerez un échec de `InvalidPlatformToken` livraison est lorsque le jeton de l'appareil enregistré n'appartient pas à l'application qui tente d'envoyer ce message. Dans ce cas, Google renverra une *erreur SENDER\$1ID\$1MISMATCH*. Amazon SNS désactivera 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 disponibles CloudWatch lorsque vous configurez l'[enregistrement de l'état de livraison](topics-attrib.md) pour votre application. 

Pour recevoir les événements de livraison de votre application, consultez[Événements d'application disponibles](application-event-notifications.md#application-event-notifications-events).

## Supprimer les jetons périmés
<a name="sns-removing-stale-tokens"></a>

Les jetons sont considérés comme périmés une fois que les envois de messages au terminal commencent à échouer. Amazon SNS définit ces jetons périmés comme des points de terminaison désactivés pour votre application de plateforme. Lorsque vous publiez sur un point de terminaison désactivé, Amazon SNS renvoie un `EventDeliveryFailure` événement avec le point de terminaison `FailureType` of`EndpointDisabled`, et le *point `FailureMessage` de terminaison est* désactivé. Pour recevoir les événements de livraison de votre application, consultez[Événements d'application disponibles](application-event-notifications.md#application-event-notifications-events).

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