Guía de implementación de aplicaciones móviles

Este documento va dirigido a los programadores de dispositivos móviles y en él se describe cómo usar Google Analytics para medir las interacciones de los usuarios y responder a preguntas sobre el uso de las aplicaciones.

Introducción

Google Analytics para aplicaciones móviles proporciona una plataforma para medir las interacciones de usuario, lo que te permite conocer mejor y optimizar la interacción de los usuarios con tu aplicación.

La implementación predeterminada de Google Analytics te ofrece automáticamente la siguiente información sobre tu aplicación:

  • Número de usuarios y sesiones
  • Duración de la sesión
  • Sistemas operativos
  • Modelos de dispositivos
  • Área geográfica

En esta guía se explica cómo puedes implementar otras funciones de Google Analytics para conocer mejor a tus usuarios y su comportamiento.

Antes de empezar

Antes de empezar a utilizar esta guía para configurar Google Analytics para aplicaciones móviles:

Descripción general

Dragon Catcher

En esta guía se utiliza una aplicación de muestra que te guiará por la implementación de características de Google Analytics adicionales. La aplicación se llama Dragon Catcher y tiene las siguientes características de juego:

  • Un nivel consta de un jugador, dragones, un área vallada, un pozo y árboles.
  • El objetivo del jugador es atrapar dragones llevándolos al área vallada.
  • El jugador puede acceder a diferentes áreas del nivel y a objetos, como un pozo o un árbol mágico.
  • El jugador pasa de nivel una vez que ha atrapado todos los dragones.
  • El jugador empieza el juego en el primer nivel, que se llama Barren Fields.

Con Google Analytics, se puede obtener la respuesta a algunas preguntas sobre el comportamiento del usuario en Dragon Catcher:

En el resto de este documento se ilustra cómo se puede responder a estas preguntas mediante la implementación de las funciones de Google Analytics en el juego Dragon Catcher.

¿Qué acciones realizan mis usuarios? (eventos)

Si hay acciones importantes de las que quieres realizar el seguimiento en tu aplicación, se pueden utilizar eventos para describir esta acción en Google Analytics. Un evento consta de cuatro parámetros: category, action, label y value.

Por ejemplo, en Dragon Catcher, rescatar un dragón o visitar un área concreta del nivel son acciones de usuario importantes que queremos medir con eventos. En el fragmento de código siguiente se ilustra cómo medirlo en Google Analytics.

SDK para Android

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Rescue")
    .setLabel("Dragon")
    .setValue(1)
    .build());

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Magic Tree")
    .setValue(1)
    .build());

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Well")
    .setValue(1)
    .build());

SDK para iOS

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Rescue"
                                                       label:@"Dragon"
                                                       value:@1] build]];

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Magic Tree"
                                                       value:@1] build]];

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Well"
                                                       value:@1] build]];

Complemento de GA para Unity

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
googleAnalytics.LogEvent("Barren Fields", "Rescue", "Dragon", 1);

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Magic Tree", 1);

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Well", 1);

Medir los "logros" del jugador

Los "logros" del jugador se pueden medir con eventos en Google Analytics. Por ejemplo, para medir el logro de rescatar cinco dragones, se registra el número de dragones que rescata un usuario y, una vez que ha alcanzado el límite, se envía un evento a Google Analytics.

SDK para Android

if (numDragonsRescued > 5) {
  if (!user.hasAchievement(RESCUED_ACHIEVEMENT) {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Unlocked")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  } else {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Earned")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  }
}

SDK para iOS

if (numDragonsRescued > 5) {
  if (![user hasAchievement:RESCUED_ACHIEVEMENT]) {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Unlocked"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  } else {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Earned"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  }
}

Complemento de GA para Unity

if (numDragonsRescued > 5) {
  if (!user.HasAchievement(RESCUED_ACHIEVEMENT)) {
    googleAnalytics.LogEvent("Achievement", "Unlocked", "5 Dragons Rescued", 1);
  } else {
    googleAnalytics.LogEvent("Achievement", "Earned", "5 Dragons Rescued", 1);
  }
}

Guías para programadores de eventos

Informes de eventos

Los datos de eventos están disponibles en:

¿Cuánto dinero se gastan los usuarios en mi aplicación? (comercio electrónico mejorado)

Si quieres medir las compras integradas en la aplicación por parte de los usuarios, se puede usar el seguimiento de comercio electrónico para realizar el seguimiento de la compra y conocer el rendimiento de producto relacionado y el comportamiento de los usuarios. El seguimiento de comercio electrónico se puede usar para medir la compra de un artículo específico o una moneda virtual.

Por ejemplo, en Dragon Catcher, para medir la compra de algunos artículos, los datos de transacción se envían a Google Analytics con un evento:

SDK para Android

Product product = new Product()
    .setName("Dragon Food")
    .setPrice(40.00);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345");

// Add the transaction data to the event.
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction data with the event.
tracker.send(builder.build());

SDK para iOS

GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"Dragon Food"];
[product setPrice:@40.00];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T12345"];

GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:nil
                                                                        value:nil];
// Add the transaction data to the event.
[builder setProductAction:productAction];
[builder addProduct:product];

// Send the transaction data with the event.
[tracker send:[builder build]];

Complemento de GA para Unity

// Note: Using Android SDK v3 and standard Ecommerce tracking.

googleAnalytics.LogItem("T12345", "Dragon Food", "Food_SKU", "Items", 40.00, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 40.00, 0.00, 0.00);

Si un usuario compra moneda virtual, es recomendable que midas el cambio de la moneda real al enviar los datos de transacción a Google Analytics. Cuando el usuario gasta la moneda virtual para comprar artículos, mide este hecho con eventos. Por ejemplo:

SDK para Android

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
Product product = new Product()
    .setName("2500 Gems")
    .setPrice(5.99);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T67890");

// Add the transaction to the screenview.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction with the screenview.
tracker.setScreenName("In-Game Store");
tracker.send(builder.build());


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .setLabel("Sword")
    .setValue(35);
tracker.send(builder.build());

SDK para iOS

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"2500 Gems"];
[product setPrice:@5.99];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T67890"];

GAIDictionaryBuilder *viewBuilder = [GAIDictionaryBuilder createScreenView];

// Add the transaction data to the screenview.
[viewBuilder setProductAction:productAction];
[viewBuilder addProduct:product];

// Send the transaction with the screenview.
[tracker set:kGAIScreenName value:@"In-Game Store"];
[tracker send:[viewBuilder build]];


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
GAIDictionaryBuilder *eventBuilder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:@"Sword"
                                                                        value:@35];
[tracker send:[eventBuilder build]];

Complemento de GA para Unity

// Note: Using Android SDK v3 and standard Ecommerce tracking.

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */

googleAnalytics.LogItem("T12345", "2500 Gems", "GEM2500_SKU", "Items", 5.99, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 5.99, 0.00, 0.00);

/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
googleAnalytics.LogEvent("In-Game Store", "Purchase", "Sword", 35);

Guías de comercio electrónico mejorado para desarrolladores

Informes de comercio electrónico mejorado

Los datos de comercio electrónico están disponibles en:

¿Los usuarios cumplen los objetivos de mi aplicación? (objetivos)

Si tienes objetivos específicos en tu aplicación que quieres que completen los usuarios, puedes definirlos y medirlos con los objetivos en Google Analytics. Por ejemplo, un objetivo podría ser que los usuarios lleguen a un determinado nivel del juego o que compren un artículo. Para obtener más información sobre cómo funcionan los objetivos, consulta Acerca de los objetivos (Centro de ayuda).

En el juego Dragon Catcher, se puede configurar un objetivo para medir cuándo se realizan las compras integradas en la aplicación si se envía un evento a Google Analytics por cada compra. El objetivo se puede definir en la administración de la interfaz web, sin código adicional, utilizando los parámetros siguientes:

  • Tipo de objetivo (es igual a): Evento
  • Categoría (es igual a): Tienda en el juego
  • Acción (es igual a): Compra
  • Utilizar el valor del evento como valor del objetivo para la conversión:

Informes de objetivos

Los datos de objetivos están disponibles en:

¿Cómo se comportan los usuarios que presentan una característica concreta? (dimensiones y métricas personalizadas)

Si quieres realizar el seguimiento de los usuarios con determinados atributos, características o metadatos, se pueden usar dimensiones personalizadas para enviar este tipo de datos a Google Analytics y al análisis. Consulta la Referencia de funciones de las dimensiones y las métricas personalizadas para obtener más información sobre cómo funcionan las dimensiones personalizadas.

Por ejemplo, en Cazador de dragones, para averiguar el porcentaje de usuarios que están en el primer nivel, en el segundo nivel, etc., se puede configurar una dimensión personalizada con el nivel actual del usuario y enviarlo a Google Analytics. Estos son los pasos:

  1. Crea una dimensión personalizada con un ámbito User. Se utiliza el ámbito User porque este valor debe permanecer en todas las sesiones de ese usuario. Consulta Configurar o modificar dimensiones personalizadas (Centro de ayuda).
  2. Actualiza el valor de dimensión personalizada cuando cambia el nivel de usuario.

En el siguiente fragmento se ilustra cómo actualizar el estado del usuario en Google Analytics, donde el índice de dimensión personalizada del nivel de usuario es 1 y dicho nivel ha cambiado a Barren Fields:

SDK para Android

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
tracker.setScreenName("BarrenFields");
tracker.send(new HitBuilders.ScreenViewBuilder()
    .setCustomDimension(1, "Barren Fields")
    .build()
);

SDK para iOS

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
[tracker set:kGAIScreenName value:@"BarrenFields"];
[tracker send:[[[GAIDictionaryBuilder createScreenView]
         set:@"Barren Fields"
      forKey:[GAIFields customDimensionForIndex:1]] build]];

Complemento de GA para Unity

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
googleAnalytics.LogScreen(new AppViewHitBuilder()
    .SetScreenName("BarrenFields").SetCustomDimension(1, "Barren Fields"));

Guías de dimensiones y métricas personalizadas para desarrolladores

Informes de dimensiones y métricas personalizadas

Las dimensiones personalizadas se pueden incluir y aplicar como un segmento a:

Aplicar la dimensión personalizada como un segmento te permitirá analizar a los usuarios que están en un nivel específico del juego.

¿Cuánto tarda un usuario en conseguir una tarea? (tiempos personalizados)

Si quieres medir cuánto tarda algo en completarse en la aplicación, puedes usar los tiempos de usuario en las mediciones basadas en tiempo en Google Analytics. Los tiempos de usuario son similares a los eventos, pero se basan en el tiempo y pueden incluir una categoría, un valor, un nombre (variable) y una etiqueta. Para obtener información sobre cómo funcionan los tiempos de usuario, consulta Acerca de la velocidad del sitio.

Por ejemplo, en Dragon Catcher para medir cuánto tarda un usuario en rescatar su primer dragón, puedes utilizar un fragmento de código parecido a este:

SDK para Android

// Build and send a timing hit.
tracker.send(new HitBuilders.TimingBuilder()
    .setCategory("Barren Fields")
    .setValue(45000)  // 45 seconds.
    .setVariable("First Rescue")
    .setLabel("Dragon")
    .build());

SDK para iOS

[tracker send:[[GAIDictionaryBuilder createTimingWithCategory:@"Barren Fields"
                                                     interval:@45000   // 45 seconds.
                                                         name:@"First Rescue"
                                                        label:@"Dragon"] build]];

Complemento de GA para Unity

// Build and send a timing hit.
googleAnalytics.LogTiming("Barren Fields",45000,"First Rescue","Dragon");

Guías de tiempos personalizados para desarrolladores

Informes de tiempos de usuario

Los datos de tiempos de usuario están disponibles en:

  • Analytics Academy: mejora tus conocimientos de Analytics con cursos online gratuitos, incluidos los conceptos básicos de la analítica de aplicaciones para dispositivos móviles.
  • APIs y SDKs de recopilación de datos: puedes obtener información sobre todas las formas en que puedes enviar datos a Google Analytics.