Publication avec une charge utile spécifique à la plateforme - Amazon Simple Notification Service

Publication avec une charge utile spécifique à la plateforme

Vous pouvez utiliser les API AWS Management Console ou Amazon SNS pour envoyer des messages personnalisés avec des charges utiles propres à une plateforme pour appareils mobiles. Pour plus d'informations sur l'utilisation des API Amazon SNS, consultez l'Actions d'API push mobile et le fichier SNSMobilePush.java dans snsmobilepush.zip.

Envoi de messages au format JSON

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":"{ \"notification\": { \"body\": \"Sample message for Android or iOS endpoints\", \"title\":\"TitleTest\" } }" }

Envoi de messages de notification silencieuse

Si vous souhaitez envoyer le message sous forme de notification silencieuse, vous devez définir l'attribut content_available sur true dans le message au format JSON.

Les exemples suivants montrent un message de notification silencieuse pour la plateforme FCM.

{ "GCM": "{ \"notification\" : {\"content_available\" : true }, \"data\": { \"body\": \"Sample message for Android or iOS endpoints\", \"title\":\"Hello world\"}" }

Envoi de messages propres à une plateforme

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": "{\"notification\": { \"body\": \"Sample message for Android or iOS endpoints\", \"title\":\"TitleTest\" },\"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 :

Envoi de messages à une application sur plusieurs plateformes

Pour envoyer un message à une application installée sur les appareils de plusieurs plateformes, comme FCM et APNs, vous devez commencer par abonner les points de terminaison mobiles à une rubrique dans Amazon SNS, puis publier le message dans la rubrique.

L'exemple suivant montre un message à envoyer aux points de terminaison 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 en tant qu'alertes ou notifications en arrière-plan

Amazon SNS peut envoyer des messages à APNs en tant que notifications alert ou background (pour plus d'informations, reportez-vous à la section Transmettre les mises à jour en arrière-plan à votre application dans la documentation APNs).

  • Une notification APNs d'alert informe l'utilisateur en affichant un message d'alerte, en émettant un avertissement sonore ou en ajoutant un badge à l'icône de votre application.

  • Une notification APNs d'background réveille votre application ou lui indique d'agir sur le contenu de la notification, sans en informer l'utilisateur.

Spécification des valeurs d'en-tête APNs personnalisées

Nous vous recommandons de spécifier des valeurs personnalisées pour l'attribut de message réservé AWS.SNS.MOBILE.APNS.PUSH_TYPE à l'aide de l'action d'API Amazon SNS Publish, des kits SDK AWS ou de 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

Inférence de l'en-tête de type push APNs à partir de la charge utile

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

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 pour APNs en tant que notification en arrière-plan uniquement, vous devez inclure content-available défini sur 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'en-tête APNs apns-push-type sur background pour le message. 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.