Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Configuration d'un point de terminaison sur la plateforme Amazon SNS pour les notifications mobiles

Mode de mise au point
Configuration d'un point de terminaison sur la plateforme Amazon SNS pour les notifications mobiles - 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.

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.

Lorsqu'une application et un appareil mobile s'enregistrent auprès d'un service de notification push (tel que APNs Firebase Cloud Messaging), le service de notification push renvoie un jeton d'appareil. Amazon SNS utilise ce jeton d'appareil pour créer un point de terminaison de plateforme, qui sert de cible pour envoyer des messages de notification push directs à l'application installée sur l'appareil. Le point de terminaison de la plateforme sert de pont et achemine les messages envoyés par Amazon SNS vers le service de notification push pour qu'ils soient transmis à l'appareil mobile correspondant. Pour plus d’informations, consultez Conditions préalables pour les notifications utilisateur Amazon SNS et Configuration des notifications push avec Amazon SNS.

Comprendre les jetons des appareils et les points de terminaison de la plateforme

Un jeton d'appareil identifie de manière unique un appareil mobile enregistré auprès d'un service de notification push (par exemple APNs, Firebase Cloud Messaging). Lorsqu'une application s'enregistre auprès du service de notification push, elle génère un jeton spécifique à cette application et à cet appareil. Amazon SNS utilise ce jeton d'appareil pour créer un point de terminaison de plateforme dans l'application de plateforme correspondante.

Le point de terminaison de la plateforme permet à Amazon SNS d'envoyer des messages de notification push à l'appareil via le service de notification push, en maintenant la connexion entre votre application et l'appareil de l'utilisateur.

Création d'un point de terminaison de plateforme

Pour envoyer des notifications à une application à l'aide d'Amazon SNS, le jeton d'appareil de cette application doit d'abord être inscrit auprès d'Amazon SNS grâce à l'appel de l'action de création d'un point de terminaison de plateforme. Cette action utilise l'Amazon Resource Name (ARN) de l'application de plateforme et le jeton d'appareil en tant que paramètres et renvoie l’ARN du point de terminaison de plateforme créé.

L'CreatePlatformEndpointaction effectue les opérations suivantes :

  • Si le point de terminaison de la plateforme existe déjà, ne le créez pas à nouveau. Renvoyez à l'appelant l'ARN du point de terminaison de plateforme existant.

  • Si le point de terminaison de la plateforme avec le même jeton d'appareil mais des paramètres différents existe déjà, ne le créez pas à nouveau. Envoyez une exception à l'appelant.

  • Si le point de terminaison de la plateforme n'existe pas, créez-le. Renvoyez à l'appelant l'ARN du point de terminaison de plateforme nouvellement créé.

Vous ne devez pas appeler l'action de création de point de terminaison de plateforme à chaque démarrage d'une application, car cette approche ne fournit pas toujours un point de terminaison en état de fonctionnement. Cela peut se produire, par exemple, lorsqu'une application est désinstallée et réinstallée sur le même appareil et que son point de terminaison existe déjà mais est désactivé. Un processus d'inscription réussi doit effectuer les opérations suivantes :

  1. S'assurer qu'un point de terminaison de plateforme existe pour cette combinaison application-appareil.

  2. Vérifier que le jeton d'appareil dans le point de terminaison de plateforme est le jeton d'appareil valide le plus récent.

  3. S'assurer que le point de terminaison de plateforme est activé et prêt à être utilisé.

Code fictif

Le pseudo-code suivant décrit une pratique recommandée pour la création d'un point de terminaison de plateforme en état de fonctionnement, actuel et activé dans une large gamme de conditions de démarrage. Cette approche fonctionne s’il s'agit de l’enregistrement initial de l'application, si le point de terminaison de plateforme pour cette application existe déjà et si le point de terminaison de plateforme est activé, possède le jeton d'appareil correct, etc. Il n'est pas risqué de l'appeler plusieurs fois d'affilée, car il ne créera pas de points de terminaison de plateforme en double ou ne modifiera pas un point de terminaison de plateforme existant s'il est déjà à jour et activé.

retrieve the latest device token from the mobile operating system if (the platform endpoint ARN is not 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 (while getting the attributes a not-found exception is thrown) # 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 (GetEndpointAttributes shows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endif endif

Cette approche peut servir chaque fois que l'application veut s'enregistrer ou se ré-enregistrer. Elle peut également être utilisée lors de la notification d'une modification du jeton d'appareil à Amazon SNS. Dans ce cas, il vous suffit d'appeler l'action avec la dernière valeur de jeton d'appareil. Voici quelques points à prendre en compte à propos de cette approche :

  • Il existe deux cas dans lesquels elle peut appeler l'action de création de point de terminaison de plateforme. Elle peut être appelée au tout début, lorsque l'application ne connaît pas son propre ARN de point de terminaison de plateforme, comme cela se produit lors d'une inscription initiale. Il est également appelé si l'appel GetEndpointAttributes d'action initial échoue avec une exception introuvable, comme cela se produirait si l'application connaît son ARN de point de terminaison mais qu'il a été supprimé.

  • L'GetEndpointAttributesaction est appelée pour vérifier l'état du point de terminaison de la plate-forme même si le point de terminaison de la plate-forme vient d'être créé. Cela se produit lorsque le point de terminaison de plateforme existe déjà mais est désactivé. Dans ce cas, l'action de création de point de terminaison de plateforme réussit, mais n'active pas le point de terminaison de plateforme. Vous devez donc vérifier l'état du point de terminaison de plateforme avant d'indiquer la réussite.

AWS Exemple de SDK

Le code suivant montre comment implémenter le pseudo code précédent à l'aide des clients Amazon SNS fournis par le. AWS SDKs

Pour utiliser un AWS SDK, vous devez le configurer avec vos informations d'identification. Pour plus d'informations, consultez la section Les fichiers de configuration et d'identification partagés dans le guide de référence des outils AWS SDKs et des outils.

CLI
AWS CLI

Pour créer un point de terminaison d'application de plateforme

L'exemple create-platform-endpoint suivant crée un point de terminaison pour l'application de plateforme spécifiée à l'aide du jeton spécifié.

aws sns create-platform-endpoint \ --platform-application-arn arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication \ --token EXAMPLE12345...

Sortie :

{ "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }
Java
SDK pour Java 2.x
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreatePlatformEndpointRequest; import software.amazon.awssdk.services.sns.model.CreatePlatformEndpointResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html * * In addition, create a platform application using the AWS Management Console. * See this doc topic: * * https://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-register.html * * Without the values created by following the previous link, this code examples * does not work. */ public class RegistrationExample { public static void main(String[] args) { final String usage = """ Usage: <token> <platformApplicationArn> Where: token - The device token or registration ID of the mobile device. This is a unique identifier provided by the device platform (e.g., Apple Push Notification Service (APNS) for iOS devices, Firebase Cloud Messaging (FCM) for Android devices) when the mobile app is registered to receive push notifications. platformApplicationArn - The ARN value of platform application. You can get this value from the AWS Management Console.\s """; if (args.length != 2) { System.out.println(usage); return; } String token = args[0]; String platformApplicationArn = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); createEndpoint(snsClient, token, platformApplicationArn); } public static void createEndpoint(SnsClient snsClient, String token, String platformApplicationArn) { System.out.println("Creating platform endpoint with token " + token); try { CreatePlatformEndpointRequest endpointRequest = CreatePlatformEndpointRequest.builder() .token(token) .platformApplicationArn(platformApplicationArn) .build(); CreatePlatformEndpointResponse response = snsClient.createPlatformEndpoint(endpointRequest); System.out.println("The ARN of the endpoint is " + response.endpointArn()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); } } }
AWS CLI

Pour créer un point de terminaison d'application de plateforme

L'exemple create-platform-endpoint suivant crée un point de terminaison pour l'application de plateforme spécifiée à l'aide du jeton spécifié.

aws sns create-platform-endpoint \ --platform-application-arn arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication \ --token EXAMPLE12345...

Sortie :

{ "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }

Pour de plus amples informations, veuillez consulter Actions d'API push mobile.

Résolution des problèmes

Appel répété de la création du point de terminaison de plateforme avec un jeton d'appareil obsolète

En particulier pour les points de terminaison FCM, vous pensez peut-être qu'il est préférable de stocker le premier jeton d'appareil émis par l'application, puis d'appeler le point de terminaison de la plateforme de création avec ce jeton d'appareil à chaque fois que l'application démarre. Cela peut sembler correct dans la mesure où l'application n'a pas à gérer l'état du jeton d'appareil et où Amazon SNS met automatiquement à jour le jeton d'appareil à l'aide de sa valeur la plus récente. Cependant, cette solution présente un certain nombre de problèmes graves :

  • Amazon SNS s'appuie sur les retours de FCM pour remplacer les jetons d'appareil expirés par de nouveaux jetons d'appareil. FCM conserve les informations concernant les anciens jetons d'appareil un certain temps, mais pas indéfiniment. Une fois que FCM a oublié la connexion entre l'ancien jeton d'appareil et le nouveau, Amazon SNS ne peut plus mettre à jour le jeton d'appareil stocké dans le point de terminaison de plateforme avec la valeur correcte ; au lieu de cela, il désactive simplement le point de terminaison de plateforme.

  • L'application de plateforme contient plusieurs points de terminaison de plateforme correspondant au même jeton d'appareil.

  • Amazon SNS impose un quota au nombre de points de terminaison de plateforme qui peuvent être créés en commençant par le même jeton d'appareil. Enfin, la création de nouveaux points de terminaison échoue avec une exception de paramètre non valide et le message d'erreur suivant : « This endpoint is already registered with a different token (Ce point de terminaison est déjà enregistré avec un jeton différent) ».

Pour plus d'informations sur la gestion des points de terminaison FCM, consultez. Gestion des points de terminaison Firebase Cloud Messaging par Amazon SNS

Réactivation d'un point de terminaison de plateforme associé à un jeton d'appareil non valide

Lorsqu'une plateforme mobile (telle que APNs FCM) informe Amazon SNS que le jeton d'appareil utilisé dans la demande de publication n'était pas valide, Amazon SNS désactive le point de terminaison de plateforme associé à ce jeton d'appareil. Amazon SNS rejettera ensuite les publications ultérieures sur ce jeton d'appareil. Bien que vous puissiez penser qu'il est préférable de simplement réactiver le point de terminaison de plateforme et de continuer la publication, dans la plupart des cas, cela ne fonctionnera pas : les messages qui sont publiés ne sont pas diffusés et le point de terminaison de plateforme est à nouveau désactivé peu de temps après.

En effet, cela vient du fait que le jeton d'appareil associé au point de terminaison de plateforme est réellement non valide. Les diffusions à ce point de terminaison ne peuvent pas réussir, car il ne correspond plus à aucune application installée. Lors de la prochaine publication, la plateforme mobile informera à nouveau Amazon SNS que le jeton d'appareil n'est pas valide et Amazon SNS désactivera à nouveau le point de terminaison de plateforme.

Pour réactiver un point de terminaison de plateforme désactivé, ce dernier doit être associé à un jeton d'appareil valide (avec un appel d'action de définition d'attributs de point de terminaison), puis activé. Les diffusions à ce point de terminaison de plateforme ne réussiront qu'à ce moment-là. La seule fois où la réactivation d'un point de terminaison de plateforme fonctionne sans mise à jour de son jeton d'appareil est lorsqu'un jeton d'appareil associé à ce point de terminaison qui était non valide redevient valide. Cela peut se produire, par exemple, lorsqu'une application a été désinstallée, puis réinstallée sur le même appareil mobile et reçoit le même jeton d'appareil. L'approche présentée ci-dessus effectue cette opération, en s'assurant de ne réactiver un point de terminaison de plateforme qu'après avoir vérifié que le jeton d'appareil qui lui est associé est le dernier en date disponible.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.