

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.

# Publicación de notificaciones de Amazon SNS con cargas útiles específicas de la plataforma
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

Puede usar Amazon SNS Consola de administración de AWS o Amazon APIs para enviar mensajes personalizados con cargas útiles específicas de la plataforma a dispositivos móviles. Para obtener información sobre el uso de Amazon SNS APIs, consulte [Acciones de la API de inserción móvil](mobile-push-api.md) y el `SNSMobilePush.java` archivo en. `[snsmobilepush.zip](samples/snsmobilepush.zip)` 

## Envío de mensajes con formato JSON
<a name="mobile-push-send-json"></a>

Cuando envíe cargas específicas de la plataforma, los datos deben tener un formato de cadenas de pares de clave-valor JSON, con las comillas incluidas entre caracteres de escape.

En los siguientes ejemplos, se muestra un mensaje personalizado para la plataforma de FCM.

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

## Envío de mensajes específicos de la plataforma
<a name="mobile-push-send-platform"></a>

Además de enviar datos personalizados como pares de clave-valor, puede enviar pares de clave-valor específicos de la plataforma.

En el siguiente ejemplo, se muestra la inclusión de los parámetros de `time_to_live` y `collapse_key` después de los pares clave-valor de datos personalizados en el parámetro `data` de FCM.

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

Para obtener una lista de los pares de clave-valor admitidos en cada uno de los servicios de notificaciones push admitidos en Amazon SNS, consulte lo siguiente: 

**importante**  
Amazon SNS ahora admite la API de HTTP v1 de Firebase Cloud Messaging (FCM) para enviar notificaciones push para móvil a dispositivos Android.  
26 de marzo de 2024: Amazon SNS admite la API de HTTP v1 de FCM para dispositivos Apple y destinos de Webpush. Le recomendamos que migre sus aplicaciones de notificaciones push para el móvil existentes a la última API de HTTP v1 de FCM el 1 de junio de 2024 o antes para evitar que se interrumpan las aplicaciones.
+ [Referencia clave de carga útil en la](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1) documentación APNs 
+ [Protocolo HTTP de Firebase Cloud Messaging](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) en la documentación de FCM
+ [Enviar un mensaje](https://developer.amazon.com/sdk/adm/sending-message.html) en la documentación de ADM

## Envío de mensajes a una aplicación en varias plataformas
<a name="mobile-push-send-multiplatform"></a>

Para enviar un mensaje a una aplicación instalada en dispositivos para varias plataformas, como FCM y APNs, primero debes suscribir los puntos de enlace móviles a un tema de Amazon SNS y, a continuación, publicar el mensaje en el tema.

El siguiente ejemplo muestra un mensaje para enviar a los puntos de enlace móviles suscritos en APNs FCM y 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\"}}" 
}
```

## Enviar mensajes APNs como alertas o notificaciones en segundo plano
<a name="mobile-push-send-message-apns-background-notification"></a>

Amazon SNS puede enviar mensajes a APNs as `alert` o `background` notificaciones (para obtener más información, consulte Cómo enviar [actualizaciones en segundo plano a su aplicación](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app) en la APNs documentación).
+ Una `alert` APNs notificación informa al usuario mediante la visualización de un mensaje de alerta, la reproducción de un sonido o la adición de una insignia al icono de la aplicación.
+ Una `background` APNs notificación activa o indica a la aplicación que actúe en función del contenido de la notificación, sin informar al usuario.

### Especificar valores de encabezado personalizados APNs
<a name="specify-custom-header-value"></a>

Recomendamos especificar valores personalizados para el [atributo de mensaje `AWS.SNS.MOBILE.APNS.PUSH_TYPE` reservado](sns-message-attributes.md#sns-attrib-mobile-reserved) mediante la acción de la `Publish` API Amazon SNS AWS SDKs, o la. AWS CLI En el siguiente ejemplo de la CLI `content-available` se establece como `1` y `background` como `apns-push-type` para el tema especificado. 

```
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
```

**nota**  
Asegúrese de que la estructura JSON sea válida. Añada una coma después de cada par de clave-valor, excepto en el último.

### Deducir el encabezado del tipo APNs push a partir de la carga útil
<a name="inferring-push-type-header-from-payload"></a>

Si no establece el `apns-push-type` APNs encabezado, Amazon SNS establece el encabezado en `alert` o en `background` función de la `content-available` clave del `aps` diccionario de la configuración de carga con formato JSON. APNs 

**nota**  
Amazon SNS se puede inferir solo en encabezados `alert` o `background`, aunque el encabezado `apns-push-type` se puede establecer en otros valores.
+ `apns-push-type` toma el valor `alert`
  + Si el diccionario `aps` contiene `content-available` defina en `1` y *una o varias claves* que activan las interacciones del usuario.
  + Si el diccionario `aps` contiene `content-available` defina en `0` *o* si la clave `content-available` está ausente.
  + Si el valor de la clave `content-available` no es un entero o un booleano.
+ `apns-push-type` toma el valor `background`
  + Si el diccionario de `aps` *solo* contiene `content-available` ajustado en `1` y *ninguna otra clave* que desencadene las interacciones del usuario.
**importante**  
Si Amazon SNS envía un objeto de configuración sin procesar APNs como notificación solo en segundo plano, debes incluir `content-available` set to `1` en el diccionario. `aps` Aunque puede incluir claves personalizadas, el diccionario de `aps` no debe contener ninguna clave que desencadene las interacciones del usuario (por ejemplo, alertas, insignias o sonidos).

A continuación se muestra un ejemplo de objeto de configuración sin procesar.

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

En este ejemplo, Amazon SNS establece el `apns-push-type` APNs encabezado del mensaje en. `background` Cuando Amazon SNS detecta que en el diccionario de `apn` se encuentra la clave de `content-available` definida en `1`, pero no hay ninguna otra clave que pueda desencadenar las interacciones del usuario, establece el encabezado en `background`.