Contenido del curso

Cómo aislar Analytics con interfaces en mobile

Resumen

¿Alguna vez te preguntaste por qué después de mirar un anuncio te aparecen otros similares? Detrás está la analítica móvil, el sistema que recopila eventos del usuario y los convierte en decisiones de producto y publicidad. Si eres desarrollador mobile, entender cómo implementar analíticas con una arquitectura limpia te ahorra dolores de cabeza cuando cambias de proveedor.

¿Cómo funciona el flujo de un evento de analítica?

La analítica empieza con algo tan simple como un clic. El usuario interactúa con la app, la app envía el evento, y un proveedor externo procesa esa información para generar reportes.

Imagina que tienes una app de e-commerce. El usuario toca el botón Comprar sobre un producto con ID 15. Tu aplicación móvil construye un evento con dos piezas clave:

  • Una descripción del evento, por ejemplo click on buy.
  • Un identificador del recurso involucrado, en este caso product ID 15.

Ese evento viaja hacia un proveedor de analítica que recibe millones de eventos similares cada día. Lo procesa, lo agrupa y devuelve un informe que el equipo usa para tomar decisiones, incluso aplicando machine learning para que una inteligencia artificial decida qué anuncios promover a quién.

¿Qué es un evento de analítica? Es un registro estructurado que describe una acción del usuario dentro de la app. Suele incluir un nombre o descripción y datos asociados, como el ID del producto con el que interactuó.

¿Qué proveedores de analítica usar en mobile?

En el desarrollo móvil hay dos nombres que dominan la conversación. Google Analytics y Amplitude son los proveedores más reconocidos para procesar eventos a gran escala.

Ambos reciben los eventos, los almacenan, los analizan y exponen dashboards donde puedes ver patrones de uso. La elección depende de tu equipo, tu presupuesto y las integraciones que necesites, pero la realidad es que hoy usas uno y mañana puedes necesitar otro.

Y aquí viene lo interesante: las analíticas son volátiles. Un proveedor cambia de precio, otro deprecia un SDK, o tu empresa decide migrar. Si tu código está casado con un proveedor específico, la migración se vuelve un infierno.

¿Cómo implementar analíticas con capas aisladas?

La clave está en no acoplar tu código de negocio al SDK del proveedor. Para lograrlo, necesitas pensar en capas aisladas y comunicarte con ellas a través de interfaces.

Vista, ViewModel y la capa de analítica

El flujo de implementación se ve así:

  1. La vista captura la interacción del usuario, por ejemplo el toque en el botón comprar.
  2. Un presenter o ViewModel recibe esa acción y decide qué hacer con el evento.
  3. El ViewModel se comunica con la capa de analítica, pero no con el SDK directamente, sino con una interfaz.

Esa interfaz, llamémosla AnalyticsInterface, define qué métodos existen para enviar eventos. Luego, una clase concreta la implementa usando Google Analytics, Amplitude o el proveedor del momento.

Por qué usar una interfaz para la analítica

Cuando el ViewModel habla con una abstracción y no con una implementación, cambiar de proveedor no afecta al resto de la aplicación. Migras la clase concreta y listo, el ViewModel ni se entera.

Esto se conoce como inversión de dependencias: tu código de alto nivel depende de abstracciones, no de detalles. Y en una app que necesita ser escalable y mantenible, este principio marca la diferencia entre una refactorización de horas y una de semanas.

¿Por qué aislar la capa de analítica con una interfaz? Porque los proveedores cambian. Si tu ViewModel depende de una interfaz, puedes cambiar Google Analytics por Amplitude sin tocar la lógica de negocio ni la vista.

¿Qué pasa si no aíslas la capa de analítica?

Acá va una lección de experiencia real. Muchos desarrolladores, al principio, importan directamente el SDK de Google Analytics o Amplitude donde lo necesitan. Funciona rápido, sí, pero el problema llega después.

Cuando toca cambiar de proveedor o cuando uno de ellos cancela su servicio, tienes que tocar cada archivo que usaba esa dependencia. Multiplica eso por cientos de pantallas y entiendes por qué la arquitectura importa desde el día uno.

La recomendación es clara: trata la analítica como cualquier otra dependencia externa y escóndela detrás de una interfaz. Tu yo del futuro te lo agradecerá.

¿Ya tienes una capa de analítica aislada en tu app o sigues llamando al SDK directamente desde tus pantallas? Cuéntame en los comentarios cómo manejas esta parte de tu arquitectura.