Amazon Simple Notification Service
Guía para desarrolladores

Utilización del atributo de mensaje de tiempo de vida (TTL) de Amazon SNS para las notificaciones de inserción en móviles

Amazon Simple Notification Service (Amazon SNS) admite la configuración de un atributo de mensaje de tiempo de vida (TTL) para los mensajes de notificaciones de inserción en móviles. Esto se suma a la capacidad de configuración del TTL dentro del cuerpo del mensaje de Amazon SNS para los servicios de notificaciones push en móviles compatibles con dicha capacidad, como Amazon Device Messaging (ADM) y Mensajería de la nube de Firebase (FCM).

El atributo de mensaje TTL se utiliza para especificar metadatos de vencimiento de un mensaje. Esto le permite especificar de cuánto tiempo dispone el servicio de notificaciones push, como Apple Push Notification Service (APNs) o FCM, para entregar el mensaje al punto de enlace. Si, por algún motivo, (por ejemplo, el dispositivo móvil se ha apagado) no se puede entregar el mensaje en el TTL especificado, se abandonará dicho mensaje y no se realizará ningún otro intento de entrega. Para especificar el TTL en los atributos de los mensajes, puede utilizar la Consola de administración de AWS, los kit de desarrollo de software de AWS (SDK) o la API de consultas.

Atributos de los mensajes TTL para los servicios de notificaciones de inserción

A continuación, se ofrece una lista de atributos de los mensajes TTL para los servicios de notificaciones de inserción que puede utilizar para establecer cuando utilice los SDK de AWS o la API de consultas:

Servicio de notificaciones automatizado Atributo de los mensajes TTL
Amazon Device Messaging (ADM) AWS.SNS.MOBILE.ADM.TTL
Apple Push Notification Service (APNs) AWS.SNS.MOBILE.APNS.TTL
Entorno de pruebas de Apple Push Notification Service (APNs_SANDBOX) AWS.SNS.MOBILE.APNS_SANDBOX.TTL
Baidu Cloud Push (Baidu) AWS.SNS.MOBILE.BAIDU.TTL
Mensajería de la nube de Firebase (FCM) AWS.SNS.MOBILE.FCM.TTL
Windows Push Notification Services (WNS) AWS.SNS.MOBILE.WNS.TTL

Cada servicio de notificaciones push administra el TTL de forma distinta. Amazon SNS proporciona una vista resumida de TTL de todos los servicios de notificaciones push, lo que facilita la especificación del TTL. Si utiliza la Consola de administración de AWS para especificar el TTL (en segundos), solo tendrá que especificar el valor de TTL una vez y Amazon SNS lo calculará para cada uno de los servicios de notificaciones de inserción seleccionados al publicar el mensaje.

El TTL depende de la hora de publicación. Antes de entregar un mensaje de notificación de inserción a un servicio de notificaciones de inserción concreto, Amazon SNS calcula el tiempo de permanencia (la marca de tiempo entre la publicación y el momento previo a la entrega de un servicio de notificaciones de inserción) de la notificación de inserción y traslada el resto del TTL al servicio de notificaciones de inserción específico. Si TTL es inferior al tiempo de permanencia, Amazon SNS no intentará publicar.

Si especifica un TTL para un mensaje de notificación push, el valor de TTL debe ser un número entero positivo, a menos que el valor 0 tenga un significado específico para el servicio de notificaciones push (como es el caso en APNs y FCM). Si el valor de TTL se establece en 0 y el servicio de notificaciones de inserción no tiene un significado específico para 0, Amazon SNS eliminará el mensaje. Para obtener más información sobre el parámetro TTL establecido en 0 cuando se utiliza APNs, consulte Table A-3 Item identifiers for remote notifications en la documentación de Binary Provider API.

Orden de prioridad al determinar el TTL

La prioridad que Amazon SNS utiliza para determinar el TTL de un mensaje de notificación de inserción sigue el orden siguiente, donde el número más bajo tiene la máxima prioridad:

  1. TTL del atributo de mensaje

  2. TTL del cuerpo del mensaje

  3. TTL predeterminado del servicio de notificaciones de inserción (varía según el servicio)

  4. TTL predeterminado de Amazon SNS (4 semanas)

Si configura diferentes valores de TTL (uno en los atributos del mensaje y otro en el cuerpo del mensaje) para el mismo mensaje, Amazon SNS modificará el TTL del cuerpo del mensaje para que coincida con el TTL especificado en el atributo del mensaje.

Especificación del TTL mediante la Consola de administración de AWS

  1. Inicie sesión en la consola de Amazon SNS.

  2. En el panel de navegación, elija Mobile (Móvil), Push notifications (Notificaciones push).

  3. Seleccione una aplicación en la sección Platform applications (Aplicaciones de la plataforma) de la página Mobile push notifications (Notificaciones push en móviles).

  4. En la sección Endpoints (Puntos de enlace) de la página MiAplicación, seleccione un punto de enlace de la aplicación y, a continuación, elija Publish message (Publicar mensaje).

  5. En la sección Message details (Detalles del mensaje), escriba el TTL (los segundos que tiene el servicio de notificaciones push para entregar el mensaje al punto de enlace).

  6. Elija Publish message (Publicar mensaje).

Especificación del TTL con los SDK de AWS

Los AWS SDK proporcionan API en varios lenguajes para utilizar el TTL con Amazon SNS.

Para obtener más información sobre SDK para Java, consulte Introducción al AWS SDK for Java.

El siguiente ejemplo de Java muestra cómo configurar un atributo de mensaje TTL y cómo publicar el mensaje en un punto de enlace, que en este ejemplo se registra en Baidu Cloud Push:

Map<String, MessageAttributeValue> messageAttributes = new HashMap<String, MessageAttributeValue>(); // Insert your desired value (in seconds) of TTL here. For example, a TTL of 1 day would be 86,400 seconds. messageAttributes.put("AWS.SNS.MOBILE.BAIDU.TTL", new MessageAttributeValue().withDataType("String").withStringValue("86400")); PublishRequest publishRequest = new PublishRequest(); publishRequest.setMessageAttributes(messageAttributes); String message = "{\"title\":\"Test_Title\",\"description\":\"Test_Description\"}"; publishRequest.setMessage(message); publishRequest.setMessageStructure("json"); publishRequest.setTargetArn("arn:aws:sns:us-east-2:999999999999:endpoint/BAIDU/TestApp/318fc7b3-bc53-3d63-ac42-e359468ac730"); PublishResult publishResult = snsClient.publish(publishRequest);

Para obtener más información sobre cómo usar los atributos del mensaje con Amazon SNS, consulte Atributos de los mensajes de Amazon SNS.