Entérate de todos los anuncios de Firebase Summit y descubre cómo Firebase puede ayudarte a acelerar el desarrollo de las apps y a ejecutarlas con confianza. Más información

Prácticas recomendadas para la gestión de tokens de registro de FCM

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Si usa las API de FCM para crear solicitudes de envío mediante programación, es posible que, con el tiempo, desperdicie recursos al enviar mensajes a dispositivos inactivos con tokens de registro obsoletos. Esta situación puede afectar los datos de entrega de mensajes informados en la consola de Firebase o los datos exportados a BigQuery, lo que muestra una caída drástica (pero no válida) en las tasas de entrega. Esta guía analiza algunas medidas que puede tomar para ayudar a garantizar una orientación eficiente de los mensajes y un informe de entrega válido.

Mejores prácticas básicas

Hay algunas prácticas fundamentales que debe seguir en cualquier aplicación que use las API de FCM para crear solicitudes de envío mediante programación. Las mejores prácticas principales son:

  • Almacene tokens de registro en su servidor. Una función importante del servidor es realizar un seguimiento del token de cada cliente y mantener una lista actualizada de los tokens activos. Recomendamos encarecidamente implementar una marca de tiempo de token en su código y sus servidores, y actualizar esta marca de tiempo a intervalos regulares.
  • Elimine los tokens almacenados que se vuelvan obsoletos . Además de eliminar tokens en casos obvios de respuestas de token no válidas, probablemente deba monitorear otras señales de que el token está obsoleto. Esta guía analiza algunas de sus opciones para lograrlo.

Recuperar y almacenar tokens de registro

En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente. Este es el token que debe incluir en las solicitudes de envío dirigidas desde la API o agregar a las suscripciones de temas para la orientación de temas.

Como se indica en nuestras guías de configuración de clientes, su aplicación debe recuperar este token en el inicio inicial y guardarlo en su servidor de aplicaciones junto con una marca de tiempo . Su código y sus servidores deben implementar esta marca de tiempo, ya que los SDK de FCM no la proporcionan.

Además, es importante guardar el token en el servidor y actualizar la marca de tiempo siempre que cambie, como cuando:

  • La aplicación se restaura en un nuevo dispositivo
  • El usuario desinstala/reinstala la aplicación
  • El usuario borra los datos de la aplicación.

Detectar respuestas de token no válidas del backend de FCM

Asegúrese de detectar respuestas de token no válidas de FCM y responda eliminando de su sistema cualquier token de registro que se sepa que no es válido. Con la API HTTP v1, estos mensajes de error pueden indicar que su solicitud de envío estaba dirigida a tokens obsoletos o no válidos:

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

Consulte Códigos de error para obtener más información.

Si recibe alguna de estas respuestas para un token objetivo, es seguro eliminar su registro de este token, ya que nunca más será válido. Sin embargo, tenga en cuenta que aún habrá casos en los que un token no sea válido, pero no hay indicios de ello. Por ejemplo, a veces el backend de FCM no puede verificar si un dispositivo se ha desconectado permanentemente o no.

Garantizar la frescura del token de registro

Determinar si un token es nuevo o está obsoleto no siempre es sencillo. Para cubrir todos los casos, debe adoptar un umbral para cuando considere que los tokens están obsoletos; nuestra recomendación es de dos meses. Es probable que cualquier token que tenga más de dos meses sea un dispositivo inactivo; de lo contrario, un dispositivo activo habría actualizado su token.

Actualice los tokens periódicamente

Le recomendamos que recupere y actualice periódicamente todos los tokens de registro en su servidor. Esto requiere que usted:

  • Agregue la lógica de la aplicación en su aplicación cliente para recuperar el token actual usando la llamada API adecuada (como token(completion): para plataformas Apple o getToken() para Android) y luego envíe el token actual a su servidor de aplicaciones para almacenamiento (con marca de tiempo ). Este podría ser un trabajo mensual configurado para cubrir todos los clientes/tokens.
  • Agregue lógica de servidor para actualizar la marca de tiempo del token a intervalos regulares, independientemente de si el token ha cambiado o no.

Independientemente del patrón de tiempo que siga, asegúrese de actualizar los tokens periódicamente. Una frecuencia de actualización de una vez al mes probablemente logre un buen equilibrio entre el impacto de la batería y la detección de tokens de registro inactivos. Al hacer esta actualización, también se asegura de que cualquier dispositivo que se vuelva inactivo actualizará su registro cuando vuelva a estar activo. No hay ningún beneficio en realizar la actualización con más frecuencia que una vez por semana.

Darse de baja de tokens obsoletos de temas

Administrar suscripciones de temas para eliminar tokens de registro obsoletos es otra consideración. Implica dos pasos:

  1. Su aplicación debe volver a suscribirse a los temas una vez al mes o cada vez que cambie el token de registro. Esto forma una solución de recuperación automática, donde las suscripciones reaparecen automáticamente cuando una aplicación vuelve a estar activa.
  2. Si una instancia de la aplicación está inactiva durante 2 meses (o su propia ventana de obsolescencia), debe cancelar su suscripción a los temas mediante el SDK de administrador de Firebase para eliminar la asignación de token/tema del backend de FCM.

El beneficio de estos dos pasos es que sus fanouts ocurrirán más rápido ya que hay menos tokens obsoletos para distribuir, y sus instancias de aplicaciones obsoletas se volverán a suscribir automáticamente una vez que estén activas nuevamente.

Medir el éxito de la entrega

En general, recomendamos orientar los mensajes en función de las acciones observadas o capturadas de instancias de aplicaciones utilizadas activamente. Esto es especialmente importante si envía mensajes regularmente a temas con una gran cantidad de suscriptores; si una parte de esos suscriptores está realmente inactiva, el impacto en sus estadísticas de entrega puede ser significativo con el tiempo.

Antes de dirigir mensajes a un token, considere:

  • ¿Google Analytics, los datos capturados en BigQuery u otras señales de seguimiento indican que el token está activo?
  • ¿Los intentos de entrega anteriores han fallado constantemente durante un período de tiempo?
  • ¿Se ha actualizado el token de registro en sus servidores en los últimos dos meses?
  • Para dispositivos Android, ¿la API de datos de FCM informa un alto porcentaje de fallas en la entrega de mensajes debido a droppedDeviceInactive ?

Para obtener más información sobre la entrega, consulte Descripción de la entrega de mensajes .