

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.

# Publication de notifications Amazon SNS avec des charges utiles spécifiques à la plate-forme
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

Vous pouvez utiliser Amazon SNS AWS Management Console ou Amazon APIs pour envoyer des messages personnalisés avec des charges utiles spécifiques à la plate-forme vers des appareils mobiles. Pour plus d'informations sur l'utilisation d'Amazon SNS APIs, consultez la section [Actions d'API push mobile](mobile-push-api.md) et le `SNSMobilePush.java` fichier dans. `[snsmobilepush.zip](samples/snsmobilepush.zip)` 

## Envoi de messages au format JSON
<a name="mobile-push-send-json"></a>

Lors de l'envoi de charges utiles propres à une plateforme, les données doivent être formatées en tant que chaînes de paire valeur clé JSON, avec les guillemets dans une séquence d'échappement.

Les exemples suivants montrent un message personnalisé pour la plateforme FCM.

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"Hello\", \"body\": \"This is a test.\"}, \"data\": {\"dataKey\": \"example\"}}}}"
}
```

## Envoi de messages propres à une plateforme
<a name="mobile-push-send-platform"></a>

En plus d'envoyer des données personnalisées en tant que paires valeur clé, vous pouvez envoyer des paires valeur clé propres à une plateforme.

L'exemple suivant illustre l'inclusion des paramètres FCM `time_to_live` et `collapse_key` après les paires valeur clé de données personnalisées dans le paramètre FCM `data`.

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"TitleTest\", \"body\": \"Sample message for Android or iOS endpoints.\"}, \"data\":{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}}}}"
}
```

Pour une liste des paires valeur clé prises en charge dans chacun des services de notification push pris en charge dans Amazon SNS, consultez les liens suivants : 

**Important**  
Amazon SNS prend désormais en charge l'API HTTP v1 de Firebase Cloud Messaging (FCM) pour envoyer des notifications push mobiles aux appareils Android.  
26 mars 2024 — Amazon SNS prend en charge l'API FCM HTTP v1 pour les appareils Apple et les destinations Webpush. Nous vous recommandons de migrer vos applications push mobiles existantes vers la dernière API HTTP v1 de FCM au plus tard le 1er juin 2024 afin d'éviter toute interruption des applications.
+ [Référence clé de charge utile](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1) dans la documentation APNs 
+ [Protocole HTTP de Firebase Cloud Messaging](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) dans la documentation FCM
+ [Envoi d'un message](https://developer.amazon.com/sdk/adm/sending-message.html) dans la documentation ADM

## Envoi de messages à une application sur plusieurs plateformes
<a name="mobile-push-send-multiplatform"></a>

Pour envoyer un message à une application installée sur des appareils pour plusieurs plateformes, telles que FCM APNs, vous devez d'abord abonner les points de terminaison mobiles à une rubrique sur Amazon SNS, puis publier le message dans cette rubrique.

L'exemple suivant montre un message à envoyer aux terminaux mobiles abonnés sur APNs, FCM et ADM : 

```
{ 
  "default": "This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for 
one of the notification platforms.",     
  "APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\"} }",
  "GCM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}",
  "ADM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}" 
}
```

## Envoi de messages APNs sous forme d'alerte ou de notifications en arrière-plan
<a name="mobile-push-send-message-apns-background-notification"></a>

Amazon SNS peut envoyer des messages `alert` ou des `background` notifications (pour plus d'informations, consultez la section Envoyer des [mises à jour en arrière-plan à votre application](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app) dans la APNs documentation). APNs 
+ Une `alert` APNs notification informe l'utilisateur en affichant un message d'alerte, en émettant un son ou en ajoutant un badge à l'icône de votre application.
+ Une `background` APNs notification active ou demande à votre application d'agir en fonction du contenu de la notification, sans en informer l'utilisateur.

### Spécification de valeurs APNs d'en-tête personnalisées
<a name="specify-custom-header-value"></a>

Nous vous recommandons de spécifier des valeurs personnalisées pour l'[attribut de message `AWS.SNS.MOBILE.APNS.PUSH_TYPE` réservé](sns-message-attributes.md#sns-attrib-mobile-reserved) à l'aide de l'action d'`Publish`API Amazon SNS AWS SDKs, ou du. AWS CLI L'exemple DE CLI suivant définit `content-available` pour `1` et `apns-push-type` `background` pour la rubrique spécifiée. 

```
aws sns publish \
--endpoint-url https://sns.us-east-1.amazonaws.com \
--target-arn arn:aws:sns:us-east-1:123456789012:endpoint/APNS_PLATFORM/MYAPP/1234a567-bc89-012d-3e45-6fg7h890123i \
--message '{"APNS_PLATFORM":"{\"aps\":{\"content-available\":1}}"}' \
--message-attributes '{ \
  "AWS.SNS.MOBILE.APNS.TOPIC":{"DataType":"String","StringValue":"com.amazon.mobile.messaging.myapp"}, \
  "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"background"}, \
  "AWS.SNS.MOBILE.APNS.PRIORITY":{"DataType":"String","StringValue":"5"}}' \
--message-structure json
```

**Note**  
Assurez-vous que la structure JSON est valide. Ajoutez une virgule après chaque paire clé-valeur, sauf la dernière.

### Déduire l'en-tête de type APNs push à partir de la charge utile
<a name="inferring-push-type-header-from-payload"></a>

Si vous ne définissez pas l'`apns-push-type` APNs en-tête, Amazon SNS définit l'en-tête `background` selon `alert` ou selon la `content-available` clé du `aps` dictionnaire de votre configuration de charge utile au format JSON APNs .

**Note**  
Amazon SNS est capable de déduire uniquement les en-têtes `alert` ou `background`, bien que l'en-tête `apns-push-type` puisse être défini sur d'autres valeurs.
+ `apns-push-type` a la valeur `alert`
  + Si le `aps` dictionnaire contient `content-available` défini sur `1` et *une ou plusieurs clés* qui déclenchent des interactions utilisateur.
  + Si le dictionnaire `aps` contient `content-available` défini sur `0` *ou* si la clé `content-available` est absente.
  + Si la valeur de la clé `content-available` n'est pas un entier ou un booléen.
+ `apns-push-type` a la valeur `background`
  + Si le dictionnaire `aps` contient *uniquement* la valeur `content-available` définie sur `1` et *aucune clé* qui déclenchent des interactions utilisateur.
**Important**  
Si Amazon SNS envoie un objet de configuration brut APNs sous forme de notification de fond uniquement, vous devez inclure `content-available` set to `1` dans le dictionnaire. `aps` Bien que vous puissiez inclure des clés personnalisées, le dictionnaire `aps` ne doit contenir aucune clé qui déclenche des interactions utilisateur (par exemple, des alertes, des badges ou des sons).

Voici un exemple d'objet de configuration brut.

```
{
  "APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}"
}
```

Dans cet exemple, Amazon SNS définit l'`apns-push-type` APNs en-tête du message sur. `background` Lorsqu'Amazon SNS détecte que le dictionnaire `apn` contient la clé `content-available` définie sur `1` et ne contient aucune autre clé pouvant déclencher des interactions utilisateur, il définit l'en-tête sur `background`.