Autor: Jose I. Honrado

El presente documento expone la investigación sobre el sistema de estadísticas para aplicaciones móviles Flurry Analytics.

Introducción

Flurry Analytics es una herramienta gratuita que ofrece estadísticas de uso, trackeo de eventos, segmentación de audiencia personalizada y otras muchas características. Está disponible para las plataformas: Android, iPhone, iPad, Windows Phone, BlackBerry y Java ME.

Con la integración básica Flurry puede recopilar mucha información relevante, como el número de sesiones y su duración, frecuencia de uso, usuarios totales y activos, ubicación geográfica, idioma, versión de la aplicación, modelo del dispositivo, operador, e incluso nos detecta si un dispositivo iOS tiene hecho el Jailbreak.

Adicionalmente podemos trackear información según nuestras necesidades: páginas vistas, eventos, datos demográficos (genero, edad e idioma), localización vía GPS, errores/excepciones y segmentos.

Páginas vistas representa el número de pantallas vistas en nuestra aplicación. Hay que tener en cuenta que solo se realiza un acumulado, no identificando cada una de las distintas páginas por su nombre, con lo que si se quiere conocer este dato habría que optar por añadir un evento en la carga de cada pantalla.

Los eventos pueden ser utilizados para cualquier cosa, por ejemplo: la pulsación en un botón, el alta de un elemento en la aplicación, detectar cuantas veces se comparte nuestra aplicación, etc… Hay dos tipos:

  • eventos simples
  • eventos basados en el tiempo. Éstos últimos nos permiten medir la duración de un suceso.

En ambos casos se nos permite además enviar información adicional en forma de parámetros, por ejemplo, el evento compartir podría ser enviado con los valores “Twitter”, “Facebook”, ”Email”…Cada proyecto Flurry permite un máximo de 300 nombres de eventos, cada uno de los cuales puede tener 10 parámetros como máximo. Cada sesión puede albergar hasta 200 eventos totales hasta un máximo de 100 nombres de evento únicos.

De los datos demográficos se puede destacar que pueden ser obtenidos de dos fuentes:

  • La primera es trackeandolo manualmente desde nuestra aplicación, por ejemplo mediante encuestas o el registro de usuarios.
  • Por otro lado, si nuestra aplicación no puede conocer esta información de los usuarios, se puede obtener de las estimaciones de Flurry, que obtiene estos datos del total de aplicaciones que usan Flurry Analytics y si trackean estos datos.

Flurry mostrará dentro de la correspondiente sección el porcentaje de usuarios cuya edad o género es conocido así como también el porcentaje de los que no se conoce esa información.

Los segmentos son una herramienta que Flurry ha añadido hace unos días (teniendo en cuenta la fecha de este documento). Lo que permite es segmentar la totalidad de los usuarios de la aplicación en grupos más pequeños en función de lo que tienen en común. Para crear segmentos podemos usar la fecha en la que los usuarios usaron la aplicación por primera vez, la frecuencia de uso (poco, normal y mucho), eventos que acometen (incluyo filtrando por sus datos internos), datos demográficos (edad, género e idioma) o su localización. Una vez definidos los segmentos, se puede consultar cualquiera de los datos que Flurry ofrece de manera separada para cada uno de los segmentos.

Actualmente Flurry permite un máximo de 10 segmentos por aplicación.

La integración es un proceso muy sencillo:

  • Primero debemos crear una cuenta en la web de Flurry.
  • Después iniciamos sesión y nos dirigimos a la sección “Applications” donde seleccionaremos “Add a New Application”.
  • Aparecerá una pantalla donde seleccionaremos la plataforma y después el siguiente formulario, donde introducimos el nombre a la aplicación y seleccionaremos su categoría del AppStore o Android Market,
  • Al término se nos proporciona el API KEY asociado a la aplicación y un link para descargar el SDK, que incluye la librería, documentación y un fichero TXT con nuestro API KEY.

Una vez obtenido el API KEY y el SDK lo siguiente es integrarlo en nuestra aplicación. Este documento se centrará en las plataformas iPhone (aunque en iPad es igual) y Android. En ambos casos simplemente hay que añadir la librería correspondiente y añadir algunas líneas para que el sistema pueda empezar a recopilar datos.

En el caso de iOS hay que incluir la siguiente línea en el fichero delegado de nuestra aplicación (AppDelegate):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// La siguiente función manda todas las excepciones no
// controladas a la función “uncaughtExceptionHandler”
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
 // ...
[FlurryAnalytics startSession:FLURRY_API_KEY];
// ...
return YES;
}

Adicionalmente, en plataforma iOS, podemos trackear todas las excepciones no controladas que se produzcan en la aplicación mediante la inserción de una línea dentro de la función “NSSetUncaughtExceptionHandler()”.

void uncaughtExceptionHandler(NSException *exception) {
 [FlurryAnalytics logError:@"Uncaught" message:@"Crash!" exception:exception];
}

En el caso de Android, debemos incluir lo siguiente en los métodos onStart() y onStop() de cada Activity (aquí conviene aprovechar la herencia):

@Override
protected void onStart() { super.onStart();
FlurryAgent.onStartSession(this, Constants.FLURRY_API_KEY);
}
@Override
protected void onStop() { super.onStop();
FlurryAgent.onEndSession(this);
}

También habrá que declarar en nuestro fichero AndroidManifest.xml que la aplicación va a usar el permiso para acceder a Internet así como el permiso para usar la localización (ya sea por GPS, red móvil o ambas).

FLURRY_API_KEY y Constants.FLURRY_API_KEY son constantes que contienen el API KEY de nuestra aplicación en Flurry.

Además de lo indicado anteriormente, Flurry proporciona otras opciones que el desarrollador puede establecer, algunas de las cuales son en función de la plataforma. Por ejemplo podemos establecer (en iOS) el momento en el que queremos enviar los datos (al entrar en pausa o al salir), si queremos usar transporte seguro o si queremos ver por consola lo que va haciendo Flurry.

Una vez realizada la integración básica, se debe proceder a incluir las líneas necesarias para trackear lo que deseemos. Para esto, para no llenarlo todo de código, os emplazo a echar un vistazo a la documentación oficial de Flurry, que expone de forma clara y concisa como llevar a cabo cada tarea.