Uso de cargas útiles de Google Firebase Cloud Messaging v1 en Amazon SNS - Amazon Simple Notification Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de cargas útiles de Google Firebase Cloud Messaging v1 en Amazon SNS

Amazon SNS admite el uso FCM HTTP de API la versión 1 para enviar notificaciones a destinos de Android, iOS y Webpush. En este tema se proporcionan ejemplos de la estructura de carga útil al publicar notificaciones push móviles mediante Amazon o Amazon SNSAPI. CLI

Al enviar una notificación, puedes incluir los siguientes tipos de mensajes en tu carga útil: FCM

  • Mensaje de datos: la aplicación cliente gestiona un mensaje de datos que contiene pares clave-valor personalizados. Al crear un mensaje de datos, debes incluir la data clave con un JSON objeto como valor y, a continuación, introducir los pares clave-valor personalizados.

  • Mensaje de notificación o mensaje de visualización: un mensaje de notificación contiene un conjunto predefinido de claves gestionadas por el. FCM SDK Estas claves varían en función del tipo de dispositivo al que vayas a realizar la entrega. Para obtener más información sobre las claves de notificación específicas de la plataforma, consulta lo siguiente:

Para obtener más información sobre los tipos de FCM mensajes, consulta la sección Tipos de mensajes en la documentación de Firebase de Google.

Uso de la estructura de FCM carga útil de la versión 1 para enviar mensajes

Si va a crear una FCM aplicación por primera vez o desea aprovechar las funciones de la FCM versión 1, puede optar por enviar una carga útil con el formato de la FCM versión 1. Para ello, debes incluir la clave de nivel superior. fcmV1Message Para obtener más información sobre cómo crear cargas útiles en la FCM versión 1, consulta Migrar de la versión antigua FCM APIs a la HTTP versión 1 y Personalizar un mensaje en todas las plataformas en la documentación de Firebase de Google.

FCMEjemplo de carga útil de la versión 1 enviada a AmazonSNS:

nota

El valor GCM clave utilizado en el siguiente ejemplo debe codificarse como una cadena al publicar una notificación mediante 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\" } } } } }" }

Cuando envíes una JSON carga útil, asegúrate de incluir el message-structure atributo en tu solicitud y configúralo en. json

CLIejemplo:

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

Para obtener más información sobre el envío de cargas útiles con formato FCM v1, consulta lo siguiente en la documentación de Firebase de Google:

Uso de la estructura de carga útil heredada para enviar mensajes a la versión 1 FCM API

Al migrar a la FCM versión 1, no es necesario que cambies la estructura de carga que utilizabas para tus credenciales antiguas. Amazon SNS transforma tu carga útil en la nueva estructura de carga FCM de la versión 1 y la envía a Google.

Formato de carga útil del mensaje de entrada:

{ "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\"}}" }

Mensaje enviado a 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" } } }

Riesgos potenciales

  • La asignación desde la versión anterior a la versión 1 no es compatible con el servicio de notificaciones push de Apple (APNS) headers ni con las fcm_options teclas. Si quieres usar estos campos, envía una carga útil de la FCM versión 1.

  • En algunos casos, la versión 1 requiere los encabezados de los mensajes FCM para enviar notificaciones silenciosas a tus APNs dispositivos. Si actualmente envías notificaciones silenciosas a tus APNs dispositivos, no funcionarán con el enfoque anterior. En su lugar, te recomendamos que utilices la FCM carga útil de la versión 1 para evitar problemas inesperados. Para ver una lista de APNs los encabezados y para qué se utilizan, consulta Cómo comunicarse con ellos APNs en la Guía para desarrolladores de Apple.

  • Si utilizas el SNS atributo TTL Amazon al enviar la notificación, solo se actualizará en el android campo. Si quieres establecer el TTL APNS atributo, usa la carga útil de la FCM versión 1.

  • Las webpush claves androidapns, y se mapearán y rellenarán con todas las claves relevantes proporcionadas. Por ejemplo, si proporciona title una clave compartida entre las tres plataformas, el mapeo de la FCM versión 1 rellenará las tres plataformas con el título que proporcionó.

  • Algunas claves compartidas entre plataformas esperan tipos de valores diferentes. Por ejemplo, la badge clave que se pasa apns espera un valor entero, mientras que la badge clave que se pasa webpush espera un valor de cadena. En los casos en los que proporcione la badge clave, la asignación FCM v1 solo rellenará la clave para la que proporcionó un valor válido.

FCMeventos de error en la entrega

La siguiente tabla proporciona el tipo de SNS error de Amazon que corresponde a los códigos de error o estado recibidos de Google para las solicitudes de notificación de la FCM versión 1. Todos los códigos de error observados recibidos en FCM la versión 1 API están disponibles CloudWatch cuando configuras el registro del estado de entrega de tu aplicación.

FCMcódigo de error/estado Tipo de SNS fallo de Amazon Mensaje de error Causa y mitigación

UNREGISTERED

InvalidPlatformToken

El token de plataforma asociado al punto final no es válido.

El token de dispositivo adjunto a su punto final está obsoleto o no es válido. Amazon ha SNS desactivado tu punto de conexión. Actualiza el SNS terminal de Amazon al token de dispositivo más reciente.

INVALID_ARGUMENT

InvalidNotification

El cuerpo de la notificación no es válido.

Es posible que el token del dispositivo o la carga útil del mensaje no sean válidos. Comprueba que la carga útil del mensaje sea válida. Si la carga útil del mensaje es válida, actualiza el SNS terminal de Amazon al token de dispositivo más reciente.

SENDER_ID_MISMATCH

InvalidPlatformToken

El token de plataforma asociado al punto final no es válido.

La aplicación de plataforma asociada al token del dispositivo no tiene permiso para enviar al token del dispositivo. Comprueba que estás utilizando las FCM credenciales correctas en tu aplicación de SNS plataforma Amazon.

UNAVAILABLE

DependencyUnavailable

La dependencia no está disponible.

FCMno ha podido procesar la solicitud a tiempo. Todos los reintentos ejecutados por Amazon SNS han fallado. Puede almacenar estos mensajes en una cola de letra muerta (DLQ) y volver a publicarlos más adelante.

INTERNAL

UnexpectedFailure

Fallo inesperado; ponte en contacto con Amazon. Frase de error [error interno].

El FCM servidor ha detectado un error al intentar procesar la solicitud. Todos los reintentos ejecutados por Amazon SNS han fallado. Puede almacenar estos mensajes en una cola de letra muerta (DLQ) y volver a publicarlos más adelante.

THIRD_PARTY_AUTH_ERROR

InvalidCredentials

Las credenciales de la aplicación de plataforma no son válidas.

No se ha podido enviar un mensaje dirigido a un dispositivo iOS o a un dispositivo Webpush. Compruebe que sus credenciales de desarrollo y producción sean válidas.

QUOTA_EXCEEDED

Throttled

Solicitud restringida por [gcm].

Se ha superado una cuota de velocidad de mensajes, una cuota de velocidad de mensajes de dispositivos o una cuota de velocidad de mensajes por temas. Para obtener información sobre cómo resolver este problema, consulta ErrorCodela documentación de Firebase de Google.

PERMISSION_DENIED

InvalidNotification

El cuerpo de la notificación no es válido.

En el caso de una PERMISSION_DENIED excepción, la persona que llama (tu FCM aplicación) no tiene permiso para ejecutar la operación especificada en la carga útil. Dirígete a FCM la consola y verifica que tus credenciales tengan habilitadas las API acciones necesarias.