Utilisation des charges utiles de Google Firebase Cloud Messaging (FCM) v1 sur Amazon SNS - 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.

Utilisation des charges utiles de Google Firebase Cloud Messaging (FCM) v1 sur Amazon SNS

Amazon SNS prend en charge l'FCMHTTPutilisation API de la version 1 pour envoyer des notifications vers des destinations Android, iOS et Webpush. Cette rubrique fournit des exemples de structure de charge utile lors de la publication de notifications push mobiles à l'aide deCLI, ou d'Amazon SNSAPI.

Vous pouvez inclure les types de messages suivants dans votre charge utile lorsque vous envoyez une FCM notification :

  • Message de données : un message de données est géré par votre application cliente et contient des paires clé-valeur personnalisées. Lorsque vous créez un message de données, vous devez inclure la data clé avec un JSON objet comme valeur, puis saisir vos paires clé-valeur personnalisées.

  • Message de notification ou message d'affichage : un message de notification contient un ensemble prédéfini de touches gérées par le FCMSDK. Ces clés varient en fonction du type d'appareil sur lequel vous effectuez la livraison. Pour plus d'informations sur les clés de notification spécifiques à la plate-forme, consultez les rubriques suivantes :

Pour plus d'informations sur les types de FCM messages, consultez la section Types de messages dans la documentation Firebase de Google.

Utilisation de la structure de charge utile FCM v1 pour envoyer des messages

Si vous créez une FCM application pour la première fois ou si vous souhaitez profiter des fonctionnalités de la version FCM 1, vous pouvez choisir d'envoyer une charge utile au format FCM v1. Pour ce faire, vous devez inclure la clé fcmV1Message de niveau supérieur. Pour plus d'informations sur la création de charges utiles FCM v1, consultez Migrer de l'ancienne version vers la FCM APIs version HTTP v1 et Personnalisation d'un message sur toutes les plateformes dans la documentation Firebase de Google.

FCMExemple de charge utile v1 envoyée à Amazon SNS :

Note

La valeur GCM clé utilisée dans l'exemple suivant doit être codée sous forme de chaîne lors de la publication d'une notification via AmazonSNS.

{ "GCM": "{ \"fcmV1Message\": { \"validate_only\": false, \"message\": { \"notification\": { \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataGen\": \"priority message\" }, \"android\": { \"priority\": \"high\", \"notification\": { \"body_loc_args\": [\"string\"], \"title_loc_args\": [\"string\"], \"sound\": \"string\", \"title_loc_key\": \"string\", \"title\": \"string\", \"body\": \"string\", \"click_action\": \"clicky_clacky\", \"body_loc_key\": \"string\" }, \"data\": { \"dataAndroid\": \"priority message\" }, \"ttl\": \"10023.32s\" }, \"apns\": { \"payload\": { \"aps\": { \"alert\": { \"subtitle\": \"string\", \"title-loc-args\": [\"string\"], \"title-loc-key\": \"string\", \"loc-args\": [\"string\"], \"loc-key\": \"string\", \"title\": \"string\", \"body\": \"string\" }, \"category\": \"Click\", \"content-available\": 0, \"sound\": \"string\", \"badge\": 5 } } }, \"webpush\": { \"notification\": { \"badge\": \"5\", \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataWeb\": \"priority message\" } } } } }" }

Lorsque vous envoyez une JSON charge utile, veillez à inclure l'message-structureattribut dans votre demande et à json le définir sur.

CLIexemple :

aws sns publish --topic $TOPIC_ARN --message '{"GCM": "{\"fcmV1Message\": {\"message\":{\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"android\":{\"priority\":\"high\",\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"data\":{\"customAndroidDataKey\":\"custom key value\"},\"ttl\":\"0s\"},\"apns\":{\"payload\":{\"aps\":{\"alert\":{\"title\":\"string\", \"body\":\"string\"},\"content-available\":1,\"badge\":5}}},\"webpush\":{\"notification\":{\"badge\":\"URL\",\"body\":\"Test\"},\"data\":{\"customWebpushDataKey\":\"priority message\"}},\"data\":{\"customGeneralDataKey\":\"priority message\"}}}}", "default": "{\"notification\": {\"title\": \"test\"}"}' --region $REGION --message-structure json

Pour plus d'informations sur l'envoi de charges utiles au format FCM v1, consultez les informations suivantes dans la documentation Firebase de Google :

Utilisation de l'ancienne structure de charge utile pour envoyer des messages à la v1 FCM API

Lors de la migration vers la FCM version 1, vous n'avez pas à modifier la structure de charge utile que vous utilisiez pour vos anciennes informations d'identification. Amazon SNS transforme votre charge utile dans la nouvelle structure de charge utile FCM v1 et l'envoie à Google.

Format de charge utile du message d'entrée :

{ "GCM": "{\"notification\": {\"title\": \"string\", \"body\": \"string\", \"android_channel_id\": \"string\", \"body_loc_args\": [\"string\"], \"body_loc_key\": \"string\", \"click_action\": \"string\", \"color\": \"string\", \"icon\": \"string\", \"sound\": \"string\", \"tag\": \"string\", \"title_loc_args\": [\"string\"], \"title_loc_key\": \"string\"}, \"data\": {\"message\": \"priority message\"}}" }

Message envoyé à Google :

{ "message": { "token": "***", "notification": { "title": "string", "body": "string" }, "android": { "priority": "high", "notification": { "body_loc_args": [ "string" ], "title_loc_args": [ "string" ], "color": "string", "sound": "string", "icon": "string", "tag": "string", "title_loc_key": "string", "title": "string", "body": "string", "click_action": "string", "channel_id": "string", "body_loc_key": "string" }, "data": { "message": "priority message" } }, "apns": { "payload": { "aps": { "alert": { "title-loc-args": [ "string" ], "title-loc-key": "string", "loc-args": [ "string" ], "loc-key": "string", "title": "string", "body": "string" }, "category": "string", "sound": "string" } } }, "webpush": { "notification": { "icon": "string", "tag": "string", "body": "string", "title": "string" }, "data": { "message": "priority message" } }, "data": { "message": "priority message" } } }

Risques potentiels

  • Le mappage de l'ancienne version à la version v1 ne prend pas en charge le service de notification push Apple (APNS) headers ni les fcm_options touches. Si vous souhaitez utiliser ces champs, envoyez une charge utile FCM v1.

  • Dans certains cas, les en-têtes de message sont requis par la version FCM 1 pour envoyer des notifications silencieuses à vos APNs appareils. Si vous envoyez actuellement des notifications silencieuses à vos APNs appareils, elles ne fonctionneront pas avec l'ancienne approche. Nous vous recommandons plutôt d'utiliser la charge utile FCM v1 pour éviter des problèmes inattendus. Pour obtenir la liste des APNs en-têtes et leur utilité, consultez la section Communiquer avec APNs dans le manuel Apple Developer Guide.

  • Si vous utilisez l'SNSattribut TTL Amazon lors de l'envoi de votre notification, celui-ci ne sera mis à jour que dans le android champ. Si vous souhaitez définir l'TTLAPNSattribut, utilisez la charge utile FCM v1.

  • Les webpush touches androidapns, et seront mappées et renseignées avec toutes les clés pertinentes fournies. Par exemple, si vous fournissez title une clé partagée entre les trois plateformes, le mappage FCM v1 remplira les trois plateformes avec le titre que vous avez fourni.

  • Certaines clés partagées entre plateformes supposent des types de valeur différents. Par exemple, la badge clé transmise à apns attend une valeur entière, tandis que la badge clé transmise à webpush attend une valeur String. Dans les cas où vous fournissez la badge clé, le mappage FCM v1 ne renseigne que la clé pour laquelle vous avez fourni une valeur valide.

FCMévénements d'échec de livraison

Le tableau suivant indique le type d'SNSéchec Amazon correspondant aux codes d'erreur/d'état reçus de Google pour les demandes de notification FCM v1. Tous les codes d'erreur observés reçus de la FCM version 1 API sont disponibles CloudWatch lorsque vous configurez l'enregistrement de l'état de livraison pour votre application.

FCMcode d'erreur/d'état Type de SNS panne Amazon Message d'échec Cause et atténuation

UNREGISTERED

InvalidPlatformToken

Le jeton de plateforme associé au point de terminaison n'est pas valide.

Le jeton d'appareil attaché à votre terminal est périmé ou non valide. Amazon a SNS désactivé votre terminal. Mettez à jour le point de SNS terminaison Amazon avec le jeton d'appareil le plus récent.

INVALID_ARGUMENT

InvalidNotification

Le corps de notification n'est pas valide.

Le jeton ou la charge utile du message de l'appareil n'est peut-être pas valide. Vérifiez que la charge utile de votre message est valide. Si la charge utile du message est valide, mettez à jour le point de SNS terminaison Amazon avec le jeton d'appareil le plus récent.

SENDER_ID_MISMATCH

InvalidPlatformToken

Le jeton de plateforme associé au point de terminaison n'est pas valide.

L'application de plateforme associée au jeton d'appareil n'est pas autorisée à envoyer au jeton d'appareil. Vérifiez que vous utilisez les FCM informations d'identification correctes dans votre application de SNS plateforme Amazon.

UNAVAILABLE

DependencyUnavailable

La dépendance n'est pas disponible.

FCMImpossible de traiter la demande à temps. Toutes les tentatives effectuées par Amazon SNS ont échoué. Vous pouvez stocker ces messages dans une file d'attente de lettres mortes (DLQ) et les rediffuser ultérieurement.

INTERNAL

UnexpectedFailure

Défaillance inattendue ; veuillez contacter Amazon. Phrase d'échec [Erreur interne].

Le FCM serveur a rencontré une erreur lors de la tentative de traitement de votre demande. Toutes les tentatives effectuées par Amazon SNS ont échoué. Vous pouvez stocker ces messages dans une file d'attente de lettres mortes (DLQ) et les rediffuser ultérieurement.

THIRD_PARTY_AUTH_ERROR

InvalidCredentials

Les informations d'identification de l'application de plateforme ne sont pas valides.

Impossible d'envoyer un message destiné à un appareil iOS ou à un appareil Webpush. Vérifiez que vos informations de développement et de production sont valides.

QUOTA_EXCEEDED

Throttled

Demande limitée par [gcm].

Le quota de débit de messages, le quota de débit de messages de l'appareil ou le quota de débit de messages par sujet a été dépassé. Pour plus d'informations sur la manière de résoudre ce problème, consultez ErrorCodela documentation Firebase de Google.

PERMISSION_DENIED

InvalidNotification

Le corps de notification n'est pas valide.

Dans le cas d'une PERMISSION_DENIED exception, l'appelant (votre FCM application) n'est pas autorisé à exécuter l'opération spécifiée dans la charge utile. Accédez à votre FCM console et vérifiez que les API actions requises sont activées sur vos informations d'identification.