Mejores prácticas para la gestión de tokens de registro de FCM

Si usa las API de FCM para crear solicitudes de envío de manera programática, es posible que, con el tiempo, esté desperdiciando 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 Firebase console o los datos exportados a BigQuery, lo que se manifiesta como una caída dramática (pero no realmente válida) en las tasas de entrega. Esta guía analiza algunas de las medidas que puede tomar para ayudar a garantizar una segmentación eficaz de los mensajes y unos informes de entrega válidos.

Mejores prácticas básicas

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

  • Almacene los tokens de registro en su servidor. Un papel importante para el 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.
  • Retire fichas almacenadas que se vuelven obsoletos. Además de eliminar tokens en casos obvios de respuestas de token no válidas, probablemente necesitará monitorear otros signos 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 a temas para la segmentación de temas.

Como se ha señalado en nuestras guías de configuración del cliente, su aplicación debe recuperar este token en el arranque inicial y guardarlo en el servidor de aplicación junto con una marca de tiempo. Esta marca de tiempo debe ser implementada por su código y sus servidores, 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 cada vez 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.

Detecta 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 apuntó a tokens obsoletos o inválidos:

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

Ver ErrorCodes para más información.

Si recibe cualquiera de estas respuestas para un token de destino, es seguro eliminar su registro de este token, ya que nunca volverá a ser válido. Sin embargo, tenga en cuenta que todavía 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 de forma permanente.

Garantizar la frescura del token de registro

Determinar si un token es nuevo o 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 de más de dos meses sea un dispositivo inactivo; de lo contrario, un dispositivo activo habría actualizado su token.

Actualice los tokens de forma regular

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

  • Añadir la lógica de la aplicación en su aplicación cliente para recuperar el actual símbolo utilizando la llamada a la API apropiado (como token(completion): para las plataformas de Apple o getToken() para Android) y luego enviar el símbolo actual en el servidor de aplicaciones para el almacenamiento (con fecha y hora ). 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.

Cualquiera que sea el 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 logra 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 quede 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 a la semana.

Cancelar la suscripción de tokens obsoletos de temas

La gestión de las suscripciones a temas para eliminar los tokens de registro obsoletos es otra consideración. Consiste en dos pasos:

  1. Su aplicación debe volver a suscribirse a los temas una vez al mes y / 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 se vuelve a activar.
  2. Si una instancia de aplicación está inactivo durante 2 meses (o su propia ventana estancamiento) que debe darse de baja de los temas que utilizando el SDK del administrador Firebase a eliminar la asignación / tema token de la FCM backend.

El beneficio de estos dos pasos es que sus distribuciones se producirá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 vuelvan a estar activas.

Medir el éxito de la entrega

En general, recomendamos dirigir 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 con regularidad a temas con un gran número de suscriptores; Si una parte de esos suscriptores está inactiva, el impacto en sus estadísticas de entrega puede ser significativo con el tiempo.

Antes de dirigir los mensajes a un token, considere:

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

Para obtener más información acerca de la entrega, vea la entrega de mensajes entendimiento .