

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.

# Administración de los puntos de conexión de Firebase Cloud Messaging en Amazon SNS
<a name="sns-fcm-endpoint-management"></a>

## Administración y mantenimiento de los tokens de dispositivo
<a name="sns-managing-device-tokens"></a>

Puede garantizar la capacidad de entrega de las notificaciones push de su aplicación móvil siguiendo estos pasos:

1. Guarde todos los tokens del dispositivo, el punto final ARNs de Amazon SNS correspondiente y las marcas de tiempo en el servidor de aplicaciones.

1. Elimine todos los tokens obsoletos y elimine el punto de enlace de Amazon ARNs SNS correspondiente.

Cuando la aplicación se inicie por primera vez, recibirá un token de dispositivo (también llamado token de registro) para el dispositivo. Este token de dispositivo lo crea el sistema operativo del dispositivo y está vinculado a su aplicación de FCM. Una vez que reciba este token de dispositivo, podrá registrarlo en Amazon SNS como punto de conexión de la plataforma. Le recomendamos que almacene el token de dispositivo, el ARN del punto de conexión de la plataforma de Amazon SNS y la marca de tiempo guardándolos en su servidor de aplicaciones o en otro almacén persistente. Para configurar su aplicación de FCM para recuperar y almacenar tokens de dispositivos, consulte [Retrieve and store registration tokens](https://firebase.google.com/docs/cloud-messaging/manage-tokens#retrieve-and-store-registration-tokens) en la documentación de *Firebase* de Google.

Es importante que mantenga up-to-date los tokens. Los tokens de los dispositivos de sus usuarios pueden cambiar si se produce alguna de las circunstancias siguientes:

1. La aplicación móvil se restaura en un dispositivo nuevo.

1. El usuario desinstala o actualiza la aplicación.

1. El usuario borra los datos de la aplicación.

Cuando el token de su dispositivo cambie, le recomendamos que actualice el punto de conexión de Amazon SNS correspondiente con el nuevo token. Esto permite a Amazon SNS seguir comunicándose con el dispositivo registrado. Puede hacerlo implementando el siguiente pseudocódigo en su aplicación móvil. Describe una práctica recomendada para crear y mantener puntos de conexión de plataforma habilitados. Este enfoque se puede utilizar cada vez que se inician las aplicaciones móviles o como un trabajo programado en segundo plano.

### Pseudocódigo
<a name="sns-device-token-pseudo-code"></a>

Use el siguiente pseudocódigo de FCM para administrar y mantener los tokens de dispositivo.

```
retrieve the latest token from the mobile OS
if (endpoint arn not stored)
    # first time registration
    call CreatePlatformEndpoint
    store returned endpoint arn
endif

call GetEndpointAttributes on the endpoint arn 

if (getting attributes encountered NotFound exception)
    #endpoint was deleted 
    call CreatePlatformEndpoint
    store returned endpoint arn
else 
    if (token in endpoint does not match latest) or 
        (GetEndpointAttributes shows endpoint as disabled)
        call SetEndpointAttributes to set the 
                     latest token and enable the endpoint
    endif
endif
```

Para obtener más información sobre los requisitos de actualización de los tokens, consulte [Update Tokens on a Regular Basis](https://firebase.google.com/docs/cloud-messaging/manage-tokens#update-tokens-on-a-regular-basis) en la documentación de *Firebase* de Google.

## Detección de tokens no válidos
<a name="sns-detecting-invalid-tokens"></a>

Cuando se envíe un mensaje a un punto de conexión de FCM v1 con un token de dispositivo no válido, Amazon SNS recibirá una de las siguientes excepciones:
+ `UNREGISTERED` (HTTP 404): cuando Amazon SNS reciba esta excepción, usted recibirá un error en la entrega con un `FailureType` de `InvalidPlatformToken` y un `FailureMessage` de *Platform token associated with the endpoint is not valid*. Amazon SNS deshabilitará el punto de conexión de la plataforma cuando se produzca un error en una entrega con esta excepción.
+ `INVALID_ARGUMENT` (HTTP 400): cuando Amazon SNS recibe esta excepción, significa que el token del dispositivo o la carga útil del mensaje no son válidos. Para obtener más información, consulta [ErrorCode](https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode)la documentación de *Firebase* de Google.

Como `INVALID_ARGUMENT` se puede devolver en cualquiera de estos casos, Amazon SNS devolverá un `FailureType` de `InvalidNotification` y un `FailureMessage` de *Notification body is invalid*. Cuando reciba este error, compruebe que la carga útil es correcta. Si es correcto, verifica que el token del dispositivo lo sea up-to-date. Amazon SNS deshabilitará el punto de conexión de la plataforma cuando se produzca un error en una entrega con esta excepción.

Otro caso en el que se producirá un evento de error de entrega `InvalidPlatformToken` es cuando el token de dispositivo registrado no pertenezca a la aplicación que intenta enviar ese mensaje. En este caso, Google devolverá un error *SENDER\_ID\_MISMATCH*. Amazon SNS deshabilitará el punto de conexión de la plataforma cuando se produzca un error en una entrega con esta excepción.

Todos los códigos de error observados recibidos de la API v1 de FCM están disponibles CloudWatch cuando configuras el [registro del estado de entrega](topics-attrib.md) de tu aplicación. 

Para recibir los eventos de entrega de su aplicación, consulte [Eventos de aplicaciones disponibles](application-event-notifications.md#application-event-notifications-events).

## Eliminación de tokens obsoletos
<a name="sns-removing-stale-tokens"></a>

Los tokens se consideran obsoletos una vez que la entrega de mensajes al dispositivo de punto de conexión comienza a fallar. Amazon SNS establece estos tokens obsoletos como puntos de conexión deshabilitados para su aplicación de plataforma. Cuando publique en un punto de conexión deshabilitado, Amazon SNS devolverá un evento `EventDeliveryFailure` con el `FailureType` de `EndpointDisabled` y un `FailureMessage` de *Endpoint is disabled*. Para recibir los eventos de entrega de su aplicación, consulte [Eventos de aplicaciones disponibles](application-event-notifications.md#application-event-notifications-events).

Cuando reciba este error de Amazon SNS, tendrá que eliminar o actualizar el token obsoleto de su aplicación de plataforma.