Utilización del atributo de mensaje de Amazon SNS time to live (TTTL) para las notificaciones push de móviles - 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.

Utilización del atributo de mensaje de Amazon SNS time to live (TTTL) para las notificaciones push de móviles

Amazon Simple Notification Service (Amazon SNS) proporciona compatibilidad con la configuración de unTiempo 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 Firebase Cloud Messaging (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 de inserción, como el Servicio de notificaciones de inserción (APNs) o el FCM de Apple, 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 herramientaAWS Management Console,AWSKits de desarrollo de software (SDK) o 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 mensaje TTL para los servicios de notificaciones de inserción que puede utilizar para establecer cuándo utilizar la herramienta deAWSSDK o API de consulta:

Servicio de notificaciones de inserción Atributo de los mensajes TTL
Amazon Device Messaging (ADM) AWS.SNS.MOBILE.ADM.TTL
Apple Push Notification Service (APN) AWS.SNS.MOBILE.APNS.TTL
Entorno de pruebas del servicio de notificaciones de inserción de Apple (APNS_Sandbox) AWS.SNS.MOBILE.APNS_SANDBOX.TTL
Baidu Cloud Push (Baidu) AWS.SNS.MOBILE.BAIDU.TTL
Firebase Cloud Messaging (FCM) AWS.SNS.MOBILE.FCM.TTL
Servicios de notificación push de Windows (WNS) AWS.SNS.MOBILE.WNS.TTL

Cada servicio de notificaciones de inserción administra el TTL de forma distinta. Amazon SNS proporciona una vista resumido de TTL de todos los servicios de notificaciones de inserción, lo que facilita la especificación del TTL. Cuando utiliza laAWS Management ConsolePara 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 TTTL a la notificación de inserción específica. Servicio Si TTTL es inferior al tiempo de permanencia, Amazon SNS no intentará publicar.

Si especifica un TTL para un mensaje de notificación de inserción, el valor TTL debe ser un número entero positivo, a menos que el valor de0tiene un significado específico para el servicio de notificaciones push (por ejemplo, con APN y FCM). Si el valor TTL se establece en0y el servicio de notificaciones de inserción no tiene un significado específico para0, Amazon SNS eliminará el mensaje. Para obtener más información sobre el parámetro TTL establecido en0cuando utilice APN, consulteCuadro A-3 Identificadores de elementos para notificaciones remotasen laAPI de proveedores binarios.

Orden de prioridad para 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. TL predeterminado de Amazon SNS de (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 AWS Management Console

  1. Inicie sesión en laConsola de Amazon SNS.

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

  3. En la páginaNotificaciones de inserción en móvilesPágina Web, en laAplicaciones de plataforma, elija una aplicación.

  4. En la páginaMyApplicationPágina Web, en laPuntos de enlace de, elija un extremo de aplicación y, a continuación, elijaPublicación de mensajes.

  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

LaAWSSDK deproporcionan API en varios idiomas para utilizar el TTL con Amazon SNS.

Para obtener más información acerca del SDK for Java, consulteIntroducción aAWS SDK for Java.

En el siguiente ejemplo de Java se 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, consulteAtributos de mensaje de Amazon SNS.