Configuración de un punto final de SNS la plataforma Amazon para notificaciones 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.

Configuración de un punto final de SNS la plataforma Amazon para notificaciones móviles

Cuando una aplicación y un dispositivo móvil se registran en un servicio de notificaciones push, dicho servicio devuelve un token de dispositivo. Amazon SNS usa el token del dispositivo para crear un punto final móvil al que puede enviar mensajes de notificación push directos. Para obtener más información, consulte Requisitos previos para las notificaciones a los SNS usuarios de Amazon y Configuración de notificaciones push con Amazon SNS.

En esta sección, se describe el procedimiento recomendado para crear un punto de enlace de plataforma.

Creación de un punto de enlace de plataforma

Para enviar notificaciones a una aplicación de AmazonSNS, el token del dispositivo de esa aplicación debe registrarse primero en Amazon SNS mediante una llamada a la acción de creación de punto final de la plataforma. Esta acción toma como parámetros el nombre del recurso de Amazon (ARN) de la aplicación de la plataforma y el token del dispositivo y devuelve el ARN del punto final de la plataforma creado.

La CreatePlatformEndpointacción hace lo siguiente:

  • Si el punto final de la plataforma ya existe, no lo vuelva a crear. Devuelva a la persona que llama el punto final ARN de la plataforma existente.

  • Si ya existe el punto final de la plataforma con el mismo token de dispositivo pero con una configuración diferente, no lo vuelva a crear. Envíe una excepción al intermediario.

  • Si el punto final de la plataforma no existe, créelo. Devuelva a la persona que llama el punto ARN final de la plataforma recién creado.

No debe llamar a la acción de creación de un punto de enlace de plataforma inmediatamente cada vez que se inicie una aplicación; este enfoque no siempre proporciona un punto de enlace que funcione. Esto puede ocurrir, por ejemplo, cuando una aplicación se desinstala y se vuelve a instalar en el mismo dispositivo, y su punto de enlace que ya existe, pero está deshabilitado. Un proceso de registro correcto debe realizar las operaciones siguientes:

  1. Asegurarse de que exista un punto de enlace de plataforma para esta combinación de aplicación y dispositivo.

  2. Asegurarse de que el token de dispositivo del punto de enlace de plataforma es el último token de dispositivo válido.

  3. Asegurarse de que el punto de enlace de plataforma esté habilitado y listo para ser utilizado.

Pseudocódigo

El siguiente pseudocódigo describe una práctica recomendada para crear un punto de enlace de plataforma que funcione, sea actual y esté habilitado en una amplia variedad de condiciones de partida. Este enfoque funciona tanto si se trata de la primera vez que la aplicación se registra o no, como si el punto de enlace de plataforma de esta aplicación ya existe, o si el punto de enlace de plataforma está habilitado, tiene el token de dispositivo correcto, etc. Es seguro llamarlo varias veces seguidas, ya que no creará puntos de enlace de plataforma duplicados ni cambiará un punto de enlace de plataforma si ya está actualizado y activado.

retrieve the latest device token from the mobile operating system if (the platform endpoint ARN is not stored) # this is a first-time registration call create platform endpoint store the returned platform endpoint ARN endif call get endpoint attributes on the platform endpoint ARN if (while getting the attributes a not-found exception is thrown) # the platform endpoint was deleted call create platform endpoint with the latest device token store the returned platform endpoint ARN else if (the device token in the endpoint does not match the latest one) or (GetEndpointAttributes shows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endif endif

Este enfoque se puede utilizar siempre que la aplicación quiera registrarse o volver a registrarse. También se puede usar para notificar a Amazon un cambio SNS de token de dispositivo. En este caso, solo tiene que llamar a la acción con el valor de token del último dispositivo. Tenga en cuenta los elementos siguientes de este enfoque:

  • Hay dos casos en los que puede llamar a la acción de crear un punto de enlace de plataforma. Es posible que se llame desde el principio, ya que la aplicación no conoce el punto final de su plataformaARN, como ocurre cuando se registra por primera vez. También se llama así si la llamada de GetEndpointAttributes acción inicial falla con una excepción no encontrada, como ocurriría si la aplicación conoce su punto final ARN pero se ha eliminado.

  • La GetEndpointAttributes acción se realiza para verificar el estado del punto final de la plataforma, incluso si el punto final de la plataforma se acaba de crear. Esto ocurre cuando el punto de enlace de plataforma ya existe, pero está deshabilitado. En este caso, la acción de creación del punto de enlace de plataforma se realiza correctamente, pero no habilita el punto de enlace de plataforma, por lo que debe comprobar el estado del punto de enlace de plataforma antes de devolver el resultado correcto.

AWS SDKejemplo

El siguiente código muestra cómo implementar el pseudocódigo anterior utilizando los SNS clientes de Amazon proporcionados por. AWS SDKs

Para usar un AWS SDK, debes configurarlo con tus credenciales. Para obtener más información, consulte Los archivos de configuración y credenciales compartidos en la Guía de referencia de herramientas AWS SDKs y herramientas.

CLI
AWS CLI

Para crear un punto de conexión de aplicación de plataforma

En el siguiente ejemplo de create-platform-endpoint, se crea un punto de conexión para la aplicación de plataforma especificada mediante el token especificado.

aws sns create-platform-endpoint \ --platform-application-arn arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication \ --token EXAMPLE12345...

Salida:

{ "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }
Java
SDKpara Java 2.x
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreatePlatformEndpointRequest; import software.amazon.awssdk.services.sns.model.CreatePlatformEndpointResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html * * In addition, create a platform application using the AWS Management Console. * See this doc topic: * * https://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-register.html * * Without the values created by following the previous link, this code examples * does not work. */ public class RegistrationExample { public static void main(String[] args) { final String usage = """ Usage: <token> <platformApplicationArn> Where: token - The device token or registration ID of the mobile device. This is a unique identifier provided by the device platform (e.g., Apple Push Notification Service (APNS) for iOS devices, Firebase Cloud Messaging (FCM) for Android devices) when the mobile app is registered to receive push notifications. platformApplicationArn - The ARN value of platform application. You can get this value from the AWS Management Console.\s """; if (args.length != 2) { System.out.println(usage); return; } String token = args[0]; String platformApplicationArn = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); createEndpoint(snsClient, token, platformApplicationArn); } public static void createEndpoint(SnsClient snsClient, String token, String platformApplicationArn) { System.out.println("Creating platform endpoint with token " + token); try { CreatePlatformEndpointRequest endpointRequest = CreatePlatformEndpointRequest.builder() .token(token) .platformApplicationArn(platformApplicationArn) .build(); CreatePlatformEndpointResponse response = snsClient.createPlatformEndpoint(endpointRequest); System.out.println("The ARN of the endpoint is " + response.endpointArn()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); } } }

Para obtener más información, consulte APIAcciones push móviles.

Resolución de problemas

Llamar repetidamente a la acción de creación de un punto de enlace de plataforma con un token de dispositivo obsoleto

Especialmente en el caso de FCM los puntos finales, tal vez piense que es mejor almacenar el primer token de dispositivo que se emite la aplicación y, a continuación, llamar al punto final de la plataforma de creación con ese token de dispositivo cada vez que se inicie la aplicación. Esto puede parecer correcto, ya que libera a la aplicación de tener que gestionar el estado del token del dispositivo y Amazon SNS actualizará automáticamente el token del dispositivo a su valor más reciente. Sin embargo, esta solución presenta una serie de problemas graves:

  • Amazon SNS se basa en los comentarios de FCM los usuarios para actualizar los tokens de dispositivo caducados por nuevos. FCMconserva la información sobre los tokens de dispositivos antiguos durante algún tiempo, pero no de forma indefinida. Cuando FCM se olvide de la conexión entre el token del dispositivo anterior y el nuevo, Amazon ya no SNS podrá actualizar el token del dispositivo almacenado en el punto final de la plataforma a su valor correcto; simplemente deshabilitará el punto final de la plataforma.

  • La aplicación de plataforma contendrá varios puntos de enlace de plataforma correspondientes al mismo token de dispositivo.

  • Amazon SNS impone una cuota a la cantidad de puntos de conexión de la plataforma que se pueden crear a partir del mismo token de dispositivo. Al final, la creación de los nuevos puntos de enlace generará un error con la excepción de parámetro no válido y el siguiente mensaje de error: "This endpoint is already registered with a different token".

Para obtener más información sobre la administración de FCM puntos finales, consulte. SNSAdministración de los puntos de conexión de Firebase Cloud Messaging por parte de Amazon

Reactivación de un punto de enlace de plataforma asociado a un token de dispositivo no válido

Cuando una plataforma móvil (como APNs oFCM) informa a Amazon de SNS que el token de dispositivo utilizado en la solicitud de publicación no es válido, Amazon SNS desactiva el punto final de la plataforma asociado a ese token de dispositivo. Amazon SNS rechazará entonces las publicaciones posteriores en ese token de dispositivo. Aunque le parezca que es mejor volver a activar el punto de enlace de plataforma y seguir publicando, en la mayoría de los casos esta solución no funciona: los mensajes que se publican no se entregan y el punto de enlace de plataforma se vuelve a desactivar poco después.

Esto se debe a que el token de dispositivo asociado al punto de enlace de plataforma en realidad no es válido. Las entregas que se le hacen no pueden realizarse correctamente, puesto que el token ya no corresponde a ninguna aplicación instalada. La próxima vez que se publique en, la plataforma móvil volverá a informar a Amazon de SNS que el token del dispositivo no es válido y Amazon SNS volverá a deshabilitar el punto final de la plataforma.

Para volver a habilitar un punto de enlace de plataforma desactivado, debe asociarlo a un token de dispositivo válido (con una llamada de acción de definición de los atributos del punto de enlace) y después habilitarlo. Solo entonces las entregas a dicho punto de enlace de plataforma se realizarán correctamente. La única vez en que volver a habilitar un punto de enlace de plataforma sin actualizar su token de dispositivo funcione será cuando un token de dispositivo que no era válido y estaba asociado a dicho punto de enlace vuelva a ser válido. Esto puede ocurrir, por ejemplo, cuando se desinstala una aplicación y se vuelve a instalar en el mismo dispositivo móvil y recibe el mismo token de dispositivo. El enfoque que acabamos de presentar realiza esta operación asegurándose de volver a habilitar un punto de enlace de plataforma solo después de comprobar que el token de dispositivo que tiene asociado es el más actual disponible.