Guia de implementação de apps para dispositivos móveis

Este documento é voltado para desenvolvedores de dispositivos móveis e descreve como usar o Google Analytics para avaliar as interações dos usuários e responder a perguntas sobre o uso do aplicativo.

Introdução

O Google Analytics para aplicativos para dispositivos móveis fornece uma plataforma para avaliar as interações do usuário, permitindo que você compreenda e otimize melhor o engajamento dos usuários com seu aplicativo.

A implementação padrão do Google Analytics fornece automaticamente as seguintes informações sobre seu aplicativo:

  • Número de usuários e sessões
  • Duração da sessão
  • sistemas operacionais
  • modelos de dispositivos
  • Geografia

Este guia explica como você pode implementar recursos adicionais do Google Analytics para entender melhor seus usuários e o comportamento deles.

Antes de começar

Antes de analisar este guia de configuração do Google Analytics para aplicativos para dispositivos móveis:

Visão geral

Dragon Catcher

Este guia usa um aplicativo de exemplo para oferecer a você orientações detalhadas sobre os recursos adicionais do Google Analytics. O aplicativo é chamado de Dragon Catcher e tem as seguintes características de jogabilidade:

  • Um nível consiste em um jogador, dragões, uma área cercada, um poço e árvores.
  • O objetivo do jogador é capturar dragões e prendê-los na área cercada.
  • O jogador pode visitar diferentes áreas do nível e objetos como um poço ou uma árvore mágica.
  • O jogador avança para o próximo nível depois de capturar todos os dragões.
  • O jogador começa o jogo no primeiro nível, que se chama "Barren Fields".

Usando o Google Analytics, algumas das perguntas sobre o comportamento do usuário que podem ser respondidas sobre o Dragon Catcher são:

O restante deste documento ilustra como essas perguntas podem ser respondidas com a implementação de recursos do Google Analytics ao jogo Dragon Catcher.

Que ações meus usuários estão realizando? (Eventos)

Se houver ações importantes que você quer acompanhar no seu aplicativo, os eventos poderão ser usados para descrevê-las no Google Analytics. Um evento consiste em quatro parâmetros: category, action, label e value.

Por exemplo, no Dragon Catcher, a captura de um dragão ou a visita a uma área específica no nível são ações importantes que queremos medir com o uso de eventos. O snippet de código abaixo ilustra como avaliar esses pontos no 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]];

Plug-in do 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);

Avaliação das "conquistas" do jogador

As "conquistas" dos jogadores podem ser avaliadas usando os eventos no Google Analytics. Por exemplo, para avaliar a conquista de capturar cinco dragões, o número de dragões que o jogador capturou é registrado e, em seguida, quando o jogador atinge o limite, um evento é enviado ao 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]];
  }
}

Plug-in do 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);
  }
}

Guias do desenvolvedor sobre eventos

Relatório de eventos

Os dados de eventos estão disponíveis:

Quanto os usuários estão gastando no meu aplicativo? (Comércio eletrônico avançado)

Se você quiser avaliar as compras no aplicativo dos usuários, o acompanhamento de comércio eletrônico pode ser usado para acompanhar a compra e entender o desempenho do produto relacionado e o comportamento do usuário. Esse recurso pode ser usado para avaliar a compra de um item específico ou uma moeda virtual.

Por exemplo, no Dragon Catcher, para avaliar a compra de alguns itens, os dados da transação são enviados para o Google Analytics com um 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]];

Plug-in do 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);

Se um usuário compra moeda virtual, convém avaliar o câmbio de dinheiro real ao enviar os dados da transação para o Google Analytics. Quando o usuário gasta a moeda virtual para comprar itens, avalie essa ação usando eventos. Por exemplo:

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]];

Plug-in do 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);

Guias do desenvolvedor para comércio eletrônico avançado

Relatório de comércio eletrônico avançado

Os dados de comércio eletrônico estão disponíveis:

Os usuários estão concluindo os objetivos do meu aplicativo? (Metas)

Se você quiser que os usuários concluam objetivos específicos no seu aplicativo, defina e avalie esses objetivos usando as metas do Google Analytics. Por exemplo, uma meta poderia ser chegar a um determinado nível do jogo ou comprar um item. Para saber mais sobre como as metas funcionam, consulte Sobre as metas (Central de Ajuda).

No jogo Dragon Catcher, uma meta poderá ser configurada para avaliar a realização de compras no aplicativo se um evento for enviado ao Google Analytics para cada compra. A meta pode ser definida no administrador da interface da Web sem qualquer código adicional, utilizando os seguintes parâmetros:

  • Tipo de meta (é igual a): evento
  • Categoria (é igual a): loja no jogo
  • Ação (é igual a): compra
  • Usar o valor do evento como o valor da meta para a conversão: sim

Relatórios de metas

Os dados de metas estão disponíveis:

Como se comportam os usuários com uma característica específica? (dimensões e métricas personalizadas)

Se você quer acompanhar os usuários com atributos/características/metadados específicos, as dimensões personalizadas podem ser utilizadas para enviar esse tipo de dados para o Google Analytics e para análise. Veja a Referência do recurso de dimensões e métricas personalizadas para saber mais sobre como as dimensões personalizadas funcionam.

Por exemplo, no Dragon Catcher, para descobrir a porcentagem de usuários que estão no primeiro nível, segundo nível etc., uma dimensão personalizada pode ser definida com o nível atual do usuário e enviada para o Google Analytics. As etapas são:

  1. Criar uma dimensão personalizada com um escopo User. O escopo User é usado porque esse valor deve persistir em todas as sessões desse usuário. Consulte Configurar ou editar dimensões personalizadas (Central de Ajuda).
  2. Atualizar o valor da dimensão personalizada quando o nível do usuário tiver mudado.

O snippet a seguir ilustra como atualizar o estado do usuário no Google Analytics, onde o índice de dimensão personalizada do nível do usuário é 1, e o nível do usuário mudou para 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]];

Plug-in do 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"));

Guias do desenvolvedor para dimensões e métricas personalizadas

Relatório de dimensões e métricas personalizadas

As dimensões personalizadas podem ser aplicadas como um segmento e incluídas:

Aplicar a dimensão personalizada como um segmento permite a você analisar os usuários que estão atualmente em um nível específico do jogo.

Quanto tempo um usuário leva para realizar uma tarefa? (tempos personalizados)

Se você quer avaliar quanto tempo leva para uma tarefa ser realizada no aplicativo, a velocidade do usuário pode ser usada para avaliações com base em tempo no Google Analytics. A velocidade do usuário é semelhante aos eventos, mas tem o tempo como base e pode incluir category, value, name (variable) e label. Para saber mais sobre como a velocidade do usuário funciona, consulte Sobre a velocidade do site.

Por exemplo, no Dragão Catcher, para avaliar quanto tempo leva para um usuário para capturar seu primeiro dragão, você pode enviar algo como:

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]];

Plug-in do GA para Unity

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

Guias do desenvolvedor sobre tempos personalizados

Relatório de tempos personalizados

Os dados de tempos personalizados estão disponíveis:

  • Analytics Academy: melhore suas habilidades no Google Analytics com cursos on-line gratuitos, incluindo os princípios básicos do Mobile App Analytics.
  • APIs e SDKs de coleta: conheça todas as maneiras de enviar dados ao Google Analytics.