Cómo extraer datos analíticos de su aplicación iOS

Como empresa basada en datos, es esencial que comprendamos cómo nuestros usuarios trabajan la aplicación para mejorar su experiencia. En este blog, explicaré cómo extraemos y usamos los datos analíticos de la versión iOS de la aplicación.

Analítica móvil | fuente: tatvic.com

Aquí en Revolut, utilizamos dos plataformas principales (Google Analytics y Amplitude) para agregar información de una multitud de puntos de datos. Hoy, le mostraremos cómo crear una solución ampliable, confiable y comprobable para la analítica móvil.

Implementación

Comenzamos definiendo un protocolo para rastrear eventos que pueden ocurrir en nuestra aplicación. Llamémoslo TrackingEventType.

Este protocolo tiene dos atributos: un identificador único, utilizado para diferenciar un evento de otro y propiedades, que usamos para compartir datos con las plataformas de análisis.

A continuación, creamos una enumeración donde cada caso representa un evento único.

Ahora tenemos que implementar TrackingEventType para configurar la relación entre cada caso y sus identificadores y propiedades.

Genial, ahora sabemos qué eventos rastrear, pero no sabemos cómo rastrearlos realmente. Necesitamos definir uno o más proveedores; El proveedor es una clase que representa un sistema de análisis como Google Analytics o Amplitude. Echemos un vistazo a un protocolo que todos los proveedores deben cumplir:

Un proveedor hace 4 cosas:

  • Se configura para rastrear eventos
  • Acepta eventos y los rastrea activamente.
  • Asocia las sesiones de seguimiento con un usuario determinado
  • Desasocia la sesión de seguimiento de un usuario

En nuestro caso, dado que utilizamos tanto GA como Amplitude, necesitamos crear proveedores separados para cada sistema de análisis. Para el seguimiento de eventos en Amplitude, creamos AmplitudeProvider. Echemos un vistazo a la implementación.

Si bien la implementación es bastante sencilla, vale la pena seguir cada paso rápidamente.

  • En el método de configuración, estamos configurando una conexión con Amplitude. Esto generalmente significa que debemos proporcionar algún tipo de clave para el sistema de análisis.
  • En track (event: TrackingEventType) tomamos un identificador junto con las propiedades de un evento y lo enviamos directamente a Amplitude.
  • En asociación (con usuario: Usuario) configuramos variables específicas del usuario para el registro correcto de la sesión. Tenga en cuenta que debe llamar a este método justo después de que un usuario inicie sesión.
  • DissociateUser es un lugar donde debe romper el vínculo entre la sesión de seguimiento actual y el usuario. Debe llamarlo después de que el usuario cierre sesión.

La última clase que necesitamos es un cliente, que hace dos cosas. Almacena todos los proveedores y reenvía eventos a los proveedores. Echemos un vistazo al protocolo:

TrackingClientType hereda de TrackingProviderType ya que reenvía todas las llamadas a un grupo de proveedores. Echemos un vistazo a cómo podemos implementar al cliente.

Como puede ver, el cliente simplemente almacena proveedores y reenvía eventos a todos ellos. En el resto de la aplicación, trabajará casi exclusivamente con una instancia de un cliente.

Uso

La mejor manera de lidiar con nuestro sistema de análisis es crear una instancia de TrackingClient y alimentarla con todos los proveedores requeridos. Un buen lugar para hacerlo es el método didFinishLaunchingWithOptions. A continuación, llame al método setup () para permitir que los proveedores se configuren correctamente.

Cuando es hora de comenzar a rastrear eventos, simplemente necesita pasar un evento al cliente de seguimiento de esta manera:

Eso es todo, ¡estás listo para irte!

Bonus - Testabilidad

Probablemente se esté preguntando por qué hemos ocultado todas las clases detrás de los protocolos. Lo hicimos con un propósito: la capacidad de prueba. Dado que no confiamos en una implementación en particular, podemos crear fácilmente una implementación especial de TrackingClientType, lo que nos permite probar nuestro código.

Imagine que está trabajando en una página donde los usuarios pueden comprar sus productos y desea poder ver todas las compras realizadas en Google Analytics.

Para que esto sea posible, crearemos un proveedor ficticio que expondrá todos los eventos rastreados.

¡Ahora puede reemplazar un cliente normal por uno ficticio y probarlo!

Debido a que TestTrackingClient expone todos los eventos rastreados a través de la propiedad de eventos, es realmente fácil verificar qué rastreó nuestro código.

Conclusión

En este momento, debería ser capaz de crear su propia solución extensible, confiable y comprobable para su aplicación iOS. La solución se basa en una programación orientada al protocolo y enumeraciones con valores asociados; no dude en consultar el código fuente.

Como siempre, agradecemos sus comentarios, comentarios y sugerencias.