AdMob+Firebase 101 Android: configuração e Princípios básicos do Google Analytics

1. Introdução

Os anúncios são uma parte crucial da experiência geral do usuário no seu app. Boas implementações de anúncios podem ajudar a melhorar a experiência geral do app e até mesmo a retenção e o engajamento dos usuários. Por exemplo, com os anúncios premiados, você pode oferecer aos usuários moedas ou itens no app por assistir anúncios em vídeo. Assim, eles podem alcançar novos níveis, em vez de ficarem presos e desistirem.

No entanto, criar uma excelente experiência de anúncios não é fácil. Você pode ter dúvidas como: com que frequência devo mostrar esses anúncios? Onde e quando você deve mostrá-los? Qual deve ser o prêmio? Infelizmente, a resposta varia de app para app e de posição para posição. Não existe uma resposta única para todos os casos.

Com o Google Analytics para Firebase, a AdMob e várias outras ferramentas eficientes e fáceis de usar oferecidas pelo Firebase, ficou muito mais fácil e simples ajustar seu app com base em dados. Hoje, vamos mostrar como começar!

O que você vai criar

Este é o primeiro de três codelabs que vão ajudar você a criar um app chamado Awesome Drawing Quiz, um jogo em que os jogadores adivinham o nome do desenho. Ele vai mostrar como incorporar anúncios premiados e serviços do Firebase no seu jogo.

Neste codelab, você vai integrar o Google Analytics para Firebase e registrar alguns eventos importantes do app. Além disso, você vai aprender a ler as análises de aplicativos mostradas no console do Firebase.

Se você encontrar algum problema (bugs no código, erros gramaticais, instruções pouco claras, etc.) neste codelab, informe o problema no link Informar um erro no canto inferior esquerdo do codelab.

O que você vai aprender

  • Como configurar o Google Analytics para Firebase no seu app
  • Como gravar os eventos do app
  • Como ler a análise de aplicativos mostrada no console do Firebase

O que é necessário

  • O Android Studio versão 4.1 ou mais recente.
  • Uma Conta do Google
  • Um dispositivo de teste com Android 5.0 ou mais recente e um cabo USB para conectar o dispositivo ou um Android Emulator executando AVD (dispositivo virtual Android) com uma imagem do sistema compatível com a Google Play Store/APIs do Google

Como você classificaria seu nível de experiência com a AdMob?

Iniciante Intermediário Proficiente

Qual é seu nível de experiência com o Firebase?

Iniciante Intermediário Proficiente

2. Configurar o ambiente de desenvolvimento

Baixar o código

Clique no botão abaixo para fazer o download de todo o código deste codelab:

Descompacte o arquivo ZIP transferido por download. Isso vai descompactar uma pasta raiz chamada admob-firebase-codelabs-android.

...ou clone o repositório do GitHub pela linha de comando.

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

O repositório contém quatro pastas:

  • android_studio_folder.png101-base: código inicial que você vai criar neste codelab.
  • android_studio_folder.png101-complete_and_102-base: código completo para este codelab e inicialização para o codelab 102.
  • android_studio_folder.png102-complete: código completo para o codelab 102.

Importar o app inicial

Inicie o Android Studio e escolha Import project na tela de boas-vindas. Em seguida, selecione o diretório 101-base no código baixado.

Agora o projeto deve estar aberto no Android Studio.

3. Configurar um bloco de anúncios em vídeo premiado (opcional)

Para sua conveniência, o app inicial já inclui um bloco de anúncios em vídeo premiado dedicado. Você pode pular esta etapa se não quiser criar uma nova conta na AdMob.

Para criar um novo app da AdMob na sua conta, siga estas instruções:

  1. Acesse o Console da AdMob.
  2. No menu Apps, clique em Adicionar app.
  3. Quando perguntarem "Você publicou seu app no Google Play ou na App Store?", responda NÃO.
  4. Dê o nome "Awesome Drawing Quiz" ao app, escolha "Android" como plataforma e clique em Adicionar.

Depois de criar um app da AdMob na sua conta, siga as etapas descritas abaixo para criar um bloco de anúncios em vídeo premiados.

  1. Clique no menu Apps no front-end da AdMob e selecione Awesome Drawing Quiz na lista de apps.
  2. Clique em ADICIONAR BLOCO DE ANÚNCIOS para criar um bloco de anúncios em vídeo premiados.
  3. Selecione Premiado para o formato do anúncio.

7672f41ec611101b.png

  1. Dê o nome que preferir ao bloco de anúncios. Em seguida, defina o valor da recompensa como 1 e o item como "dica". Essa é a recompensa que o app oferece aos usuários atualmente. Clique em CRIAR BLOCO DE ANÚNCIOS para criar um bloco de anúncios em vídeo premiados.

6d067814a2c38264.png

  1. Quando a criação for concluída, você verá instruções semelhantes a estas: ff872a005a07b75e.png
  2. Volte ao Projeto do Android e atualize as constantes de ID do app da AdMob e ID do bloco de anúncios para as que você criou na etapa anterior.

strings.xml

<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>

GameActivity.kt

// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

4. Configurar projeto do Firebase

Criar um projeto no console do Firebase

  1. Acesse o Console do Firebase.
  2. Selecione Adicionar projeto e nomeie o projeto como "Awesome Drawing Quiz". Verifique se o botão de opção Ativar o Google Analytics neste projeto está ativado.
  3. Selecione a conta do Google Analytics que você planeja usar. Para a maioria das pessoas, basta selecionar a opção Conta padrão para Firebase. No entanto, se você quiser usar outra conta do Google Analytics, selecione-a aqui.
  4. Clique em Criar projeto.

Adicionar o app Android

  1. Na tela de visão geral do novo projeto, clique em Adicionar o Firebase ao app Android.
  2. Insira o nome do pacote do codelab: com.codelab.awesomedrawingquiz
  3. Defina um apelido para o app: Awesome Drawing Quiz
  4. Deixe o campo SHA-1 em branco, já que ele não é necessário para este projeto.
  5. Selecione Registrar app para registrar seu app.

Adicionar o arquivo google-services.json ao app

Em seguida, uma tela vai aparecer para que você faça o download de um arquivo de configuração com todos os metadados necessários do Firebase para seu app. Clique em Fazer o download do google-service.json e copie o arquivo para o diretório android_studio_folder.pngapp no seu projeto.

32419a0fa25a1405.png

Declarar versões de dependência

Vamos começar adicionando a versão de cada dependência necessária para integrar o Firebase ao projeto. Abra o arquivo dependencies.gradle localizado na raiz do projeto e adicione o plug-in google-services, o SDK do Analytics e a versão do SDK do Firebase Core.

dependencies.gradle

ext {
    ...

    // TODO: Declare google-services plugin version (101)
    googleServicesPluginVersion = '4.3.4'

    ...

    // TODO: Declare Firebase BOM version (101)                                                                                                                                                                                                   
    firebaseBomVersion = '26.2.0'

    ...
}

Aplicar o plug-in google-services ao seu app

O plug-in google-services usa o arquivo google-services.json para configurar seu aplicativo para usar o Firebase.

Adicione google-services como um caminho de classe no arquivo build.gradle localizado no diretório raiz do projeto.

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ...
    
    dependencies {
        classpath "com.android.tools.build:gradle:$androidPluginVersion"

        // TODO: Add google-services plugin (101)
        classpath "com.google.gms:google-services:$googleServicesPluginVersion"

        ...
    }
}

...

Em seguida, aplique o plug-in google-services adicionando uma linha no arquivo app/build.gradle da seguinte maneira:

app/build.gradle

apply plugin: 'com.android.application'

// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'

android {
    ...
}

dependencies {
    ...
}

Adicionar o SDK do Firebase ao projeto

Ainda no arquivo app/build.gradle, adicione o SDK do Analytics às dependências do app.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Import the Firebase BoM (101)
    implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")

    // COMPLETE: Add Firebase Analytics dependency (101)
    implementation 'com.google.firebase:firebase-analytics-ktx'

    ...
}

...

Sincronize seu projeto com arquivos do Gradle

Para garantir que todas as dependências estejam disponíveis para seu app, sincronize o projeto com os arquivos do Gradle. Selecione o menu File > Sync Project with Gradle Files para sincronizar seu projeto com arquivos do Gradle.

5. Vincular a AdMob ao projeto do Firebase

Siga estas etapas para vincular seus apps ao Firebase:

  1. Faça login na sua conta da AdMob em https://apps.admob.com.
  2. Clique em "Apps" na barra lateral.
  3. Selecione "Awesome Drawing Quiz". Se ele não aparecer na lista de apps recentes, clique em Ver todos os aplicativos para pesquisar todos aqueles que você adicionou à AdMob.
  4. Clique em Configurações do app na barra lateral.
  5. Clique em Vincular ao Firebase.
  6. Selecione a opção Vincular a um projeto do Firebase e criar um novo app do Firebase. Em seguida, selecione o projeto "Awesome Drawing Quiz" no menu suspenso.
  7. Depois de clicar no botão CONTINUAR, você vai ver a mensagem Vinculação concluída. Clique no botão "CONCLUÍDO" para terminar.

Depois de vincular seu app da AdMob ao Projeto do Firebase, você vai desbloquear alguns recursos adicionais no console da AdMob e no console do Firebase, como:

Card de receita (AdMob)

No card "Receita", você pode conferir todas as possíveis fontes de receita em um só lugar. As fontes de receita aceitas são as seguintes:

  • AdMob (estimada)
  • Redes de publicidade de mediação (observadas)
  • Compras no app
  • Compras de e-commerce

10fe118249e11150.png

Card de métricas do usuário (AdMob)

No card de métricas do usuário, você pode conferir como as mudanças na experiência dos anúncios podem afetar o comportamento do usuário.

5f56366f1b31d4a1.png

Relatório de anúncios premiados (AdMob)

O relatório de anúncios premiados oferece várias métricas que ajudam os editores a entender como os usuários interagem com os anúncios premiados.

658a2868777690ea.png

Card "Total de receita" (Firebase)

Depois de vincular seu app da AdMob ao Firebase, o card "Receita total" no painel do Firebase vai mostrar a receita da AdMob, além das compras no app e de e-commerce.

98cb283977b023a.png

Relatórios de eventos de anúncio (Firebase)

Os eventos específicos de anúncios (clique, impressão e recompensa) são coletados automaticamente e podem ser usados no Google Analytics para Firebase.

bf77bd8c00c1441b.png

6. Executar o projeto

Depois de compilar e executar o projeto, a tela abaixo vai aparecer quando o app for iniciado.

15f1d8041988974c.png

Depois de clicar em INICIAR UM JOGO,um desenho vai aparecer na tela. Sua missão é adivinhar o nome do desenho usando a dica mostrada na parte de cima, com base na qual você pode deduzir a primeira letra e o comprimento do nome do desenho.

8e87e96256d6874a.png 9c4a0143c3234cb2.png

Se você não tiver ideia de qual é o nome do desenho, clique no botão PULAR para pular a fase.

Talvez você queira uma pista extra para adivinhar a resposta. Para receber uma dica extra, clique no botão DICA e assista um anúncio em vídeo premiado. Depois de assistir o anúncio, uma letra extra será revelada como recompensa.

edcf6f0d833ea4ea.png 47ab9a07b1c71711.png

7. Adicionar eventos do app

Para entender melhor a jornada do usuário no Awesome Drawing Quiz,defina alguns eventos personalizados que rastreiam o comportamento do usuário no jogo da seguinte forma:

Nome do evento

Acionado…

Parâmetros

game_start

quando um usuário inicia um novo jogo.

nenhum

level_start

quando um usuário inicia um novo nível (um novo teste de desenho) em uma fase. (há seis níveis em um estágio)

level_name

level_wrong_answer

quando um usuário envia uma resposta errada.

level_name

ad_reward_prompt

quando um usuário toca no botão de dica e é solicitado a assistir um anúncio em vídeo premiado.

ad_unit_id

ad_reward_impression

quando um usuário começa a assistir um anúncio em vídeo premiado.

ad_unit_id

level_success

quando um usuário envia uma resposta correta (conclui um nível).

level_name, number_of_attempts, elapsed_time_sec, hint_used

level_fail

quando um usuário pula um nível.

level_name, number_of_attempts, elapsed_time_sec, hint_used

game_complete

quando o jogo terminar

number_of_correct_answers

Confira a descrição de cada parâmetro associado a cada evento:

Nome do evento

Nome do parâmetro

Descrição

level_start

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_wrong_answer

level_name

quando um usuário envia uma resposta errada.

ad_reward_prompt

ad_unit_id

Um ID de bloco de anúncios usado para mostrar um anúncio em vídeo premiado.

ad_reward_impression

ad_unit_id

Um ID de bloco de anúncios usado para mostrar um anúncio em vídeo premiado.

level_success

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_success

number_of_attempts

Número de tentativas feitas para limpar um nível

level_success

elapsed_time_sec

Tempo decorrido para concluir um nível, em segundos

level_success

hint_used

Se um usuário usou uma dica (assistiu um anúncio em vídeo premiado) ou não para passar de um nível (1: usou uma dica / 0: passou de um nível sem uma dica)

level_fail

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_fail

number_of_attempts

Número de tentativas feitas para limpar um nível

level_fail

elapsed_time_sec

Tempo decorrido para concluir um nível, em segundos

level_fail

hint_used

Se um usuário usou uma dica (assistiu um anúncio em vídeo premiado) ou não para passar de um nível (1: usou uma dica / 0: passou de um nível sem uma dica)

game_complete

number_of_correct_answers

Número de fases concluídas no jogo

Criar uma classe auxiliar para registrar eventos personalizados

Para registrar o evento do Google Analytics com facilidade, crie uma classe auxiliar para gerenciar eventos personalizados.

Primeiro, crie um novo arquivo Kotlin (não uma classe Kotlin) e nomeie-o como QuizAnalytics.kt no pacote com.codelab.awesomedrawingquiz. Crie campos que definam o nome dos seus eventos personalizados e os parâmetros deles.

QuizAnalytics.kt

private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"

private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"

private const val EVENT_LEVEL_FAIL = "level_fail"

private const val EVENT_LEVEL_SUCCESS = "level_success"

private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"

private const val EVENT_GAME_START = "game_start"

private const val EVENT_GAME_COMPLETE = "game_complete"

private const val PARAM_AD_UNIT_ID = "ad_unit_id"

private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"

private const val PARAM_HINT_USED = "hint_used"

private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"

private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"

Em seguida, adicione funções de extensão que ajudam a registrar eventos personalizados no jogo. A maioria dos eventos personalizados inclui parâmetros para que você tenha mais contexto de cada um deles. Além disso, alguns nomes e parâmetros de eventos (FirebaseAnalytics.Event.LEVEL_NAME e FirebaseAnalytics.Event.LEVEL_START) já estão definidos pelo Google Analytics, então vamos usá-los.

QuizAnalytics.kt

...

fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)

fun FirebaseAnalytics.logLevelStart(levelName: String) {
    logEvent(FirebaseAnalytics.Event.LEVEL_START) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
    logEvent(EVENT_LEVEL_WRONG_ANSWER) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_PROMPT) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_IMPRESSION) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logLevelSuccess(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_SUCCESS) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logLevelFail(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_FAIL) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logGameComplete(
    numberOfCorrectAnswers: Int
) {
    logEvent(EVENT_GAME_COMPLETE) {
        param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
    }
}

Registrar eventos de análise no jogo

Na classe GameViewModel, adicione uma nova propriedade para a instância FirebaseAnalytics.

GameViewModel.kt

class GameViewModel(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModel() {
   ...
}

Em seguida, na classe AwesomeDrawingQuizViewModelFactory, adicione uma nova propriedade como fez anteriormente em GameViewModel.

AwesomeDrawingQuizViewModelFactory.kt

class AwesomeDrawingQuizViewModelFactory(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
    ...
}

Em seguida, na classe AwesomeDrawingQuiz, adicione a função provideFirebaseAnalytics() e atualize a função provideViewModelFactory() para transmitir a instância FirebaseAnalytics ao AwesomeDrawingViewModelFactory.

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
        this,
        provideGameSettings(),
        // TODO: Pass FirebaseAnalytics instance as a parameter (101)
        provideFirebaseAnalytics(),
    )

    // TODO: Provide FirebaseAnalytics instance (101)
    private fun provideFirebaseAnalytics() = Firebase.analytics

    ...

}

Agora você já pode implementar eventos personalizados. Primeiro, na função startGame(), chame logGameStart() para indicar que um jogo começou.

Como logGameStart() é uma função de extensão da classe FirebaseAnalytics, é possível chamá-la da instância da classe FirebaseAnalytics.

GameViewModel.kt

fun startGame() {
    ...

    // TODO: Log game_start event (101)
    analytics.logGameStart()

    ...
}

Em seguida, na função checkAnswer(), adicione eventos level_success e level_wrong_answer.

GameViewModel.kt

fun checkAnswer(userAnswer: String) {
    ...
    if (correct) {
        ...

        // TODO: Log level_success event (101)
        analytics.logLevelSuccess(
            levelName = drawing.word,
            numberOfAttempts = numAttempts,
            elapsedTimeSec = elapsedTimeInSeconds,
            hintUsed = isHintUsed,
        )

        ...
    } else {
        // TODO: Log level_wrong_answer event (101)
        analytics.logLevelWrongAnswer(levelName = drawing.word)

        ...
    }
}

Em seguida, na função skipLevel(), adicione o evento level_fail para marcar o nível como falho.

GameViewModel.kt

fun skipLevel() {
   ...

    // TODO: Log level_fail event (101)
    analytics.logLevelFail(
        levelName = drawing.word,
        numberOfAttempts = numAttempts,
        elapsedTimeSec = elapsedTimeInSeconds,
        hintUsed = isHintUsed,
    )

    ...
}

Em seguida, implemente as funções logAdRewardPrompt() e logAdRewardImpression() para rastrear o comportamento do usuário em relação ao anúncio em vídeo premiado.

GameViewModel.kt

fun logAdRewardPrompt(adUnitId: String) {
    // TODO: Log ad_reward_prompt event (101)
    analytics.logAdRewardPrompt(adUnitId)
}

fun logAdRewardImpression(adUnitId: String) {
    // TODO: Log ad_reward_impression event (101)
    analytics.logAdRewardImpression(adUnitId)
}

Por fim, modifique as funções requestNewDrawing() e finishGame() para adicionar os eventos personalizados level_start e game_complete.

GameViewModel.kt

private fun requestNewDrawing() {
    ...

    drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { d ->
            ...

            // TODO: Log level_start event (101)
            analytics.logLevelStart(d.word)

            ...
        }
}

private fun finishGame() {
    // TODO: Log game_complete event (101)
    analytics.logGameComplete(numCorrectAnswers)

    ...
}

8. Depurar eventos do Google Analytics

Use o DebugView no Console do Firebase para verificar se os eventos estão sendo registrados corretamente. Com o DebugView, você pode ver dados brutos de eventos registrados pelo seu app quase em tempo real em dispositivos de desenvolvimento.

Isso é muito útil para fins de validação durante a fase de instrumentação do desenvolvimento e pode ajudar você a descobrir erros na sua implementação do Analytics.

Ativar o modo de depuração

Em geral, os eventos registrados no seu app são agrupados durante um período de aproximadamente uma hora e depois são carregados juntos. Para validar sua implementação de análises em tempo real, ative o modo de depuração no seu dispositivo de desenvolvimento para fazer upload de eventos com atrasos mínimos.

Para ativar o modo de depuração, siga estas etapas:

  1. Abra a janela de ferramentas Terminal no Android Studio (View > Tool Windows > Terminal).

c8dc1b4f08a224b8.png

  1. Execute o seguinte comando (verifique se o dispositivo Android de teste está conectado ao computador ou se o Android Emulator está em execução):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz

O modo de depuração vai permanecer ativado até que você execute a linha de comando a seguir:

adb shell setprop debug.firebase.analytics.app .none.

Depurar eventos do Google Analytics com o DebugView

Depois de ativar o modo de depuração no seu dispositivo de teste, acesse o projeto no Console do Firebase e selecione Analytics > DebugView no menu. Em seguida, no dispositivo de teste, jogue para ver os eventos sendo registrados e mostrados no relatório do DebugView.

827059255d09ac00.png

Clique no nome de um evento para acessar informações detalhadas sobre ele. Por exemplo, a captura de tela a seguir mostra detalhes de parâmetros associados ao evento level_start.

475db00d05d03ab8.png

Consulte o artigo da Central de Ajuda sobre a DebugView para mais detalhes.

9. Ativar dimensões e métricas personalizadas

Por padrão, o Google Analytics para Firebase coleta o número total de eventos. Para cada parâmetro de evento que você quer analisar, é necessário ativar explicitamente a geração de relatórios. Em seguida, o Google Analytics para Firebase pode mostrar outros cards com as estatísticas dos parâmetros personalizados.

Para registrar dimensões e métricas personalizadas:

  1. Acesse o console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes.
  2. Clique em Analytics > Eventos no menu de navegação.
  1. Clique em Gerenciar definições personalizadas.
  2. Na guia "Dimensões personalizadas", clique em Criar dimensões personalizadas.
  3. No campo "Nome do parâmetro do evento", digite level_name e clique em Salvar para concluir o registro do parâmetro.

3d20ee9d7de74e9b.png

  1. Em seguida, selecione a guia Métricas personalizadas e clique em Criar métricas personalizadas.
  2. Insira o nome e a unidade de medida para os seguintes parâmetros.

Nome do parâmetro

Tipo de parâmetro

Unidade de medida

number_of_attempts

Número

Padrão

hint_used

Número

Padrão

elapsed_time_sec

Número

Segundos

number_of_correct_answers

Número

Padrão

10. Receber insights do relatório de eventos

Como você adicionou alguns eventos ao jogo, já é possível responder às perguntas sobre o comportamento do usuário. Confira alguns insights que você pode receber do relatório de eventos do Firebase.

Qual nível tem o maior número de respostas erradas?

Para responder a essa pergunta, descubra quantos eventos level_wrong_answer foram acionados por nível.

Clique no level_wrong_answer no relatório de eventos. No relatório de eventos level_wrong_answer, encontre o card level_name. Os valores associados ao parâmetro level_name vão aparecer no card da seguinte forma:

25da426bbc0c612c.png

De acordo com a captura de tela acima, é fácil descobrir que o horizonte tem o maior número de respostas erradas, o que significa que é difícil para os usuários em comparação com os outros níveis.

Com base no insight que você teve aqui, é possível decidir não oferecer níveis difíceis para usuários iniciantes e manter uma alta taxa de retenção.

Em média, quantas tentativas foram feitas para passar de fase?

No Awesome Drawing Quiz, os usuários podem enviar a resposta de cada nível quantas vezes quiserem.

Como você ativou os relatórios de parâmetros no parâmetro number_of_attempts do evento level_success, é possível conferir as métricas detalhadas desse parâmetro.

Clique no evento level_success no relatório de eventos. No relatório de eventos level_success, encontre o card number_of_attemps. O número médio de tentativas vai aparecer no card da seguinte forma:

43de290f9f1a0ac9.png

Use esse insight para otimizar a dificuldade média do jogo. Por exemplo, se o número médio de tentativas estiver muito próximo de 1, considere tornar o jogo um pouco mais desafiador.

Os usuários tentaram resolver a questão recebendo uma dica, mesmo que não tenham conseguido passar de um nível no final?

Quando um usuário decide pular um nível, um evento level_fail é acionado. Há muitos motivos para a decisão do usuário.

No entanto, como o jogo pode dar uma dica depois que o usuário assiste a um anúncio em vídeo premiado, é importante saber se ele tentou passar de fase com a ajuda da dica.

Clique no evento level_fail no relatório de eventos. No relatório de eventos level_fail, encontre o card hint_used. Você vai ver o número médio de parâmetros de evento hint_used. O valor do parâmetro é 1 se uma dica foi usada e 0 se não foi.

313814372cd7c8a4.png

Se os números no card hint_used estiverem próximos de zero, isso significa que a recompensa (dica) não é útil o suficiente para esses usuários. Além disso, você perde a oportunidade de aumentar a receita com um anúncio em vídeo premiado.

Portanto, considere oferecer uma recompensa maior para que os usuários se envolvam mais com o jogo, aumentando a receita dos anúncios em vídeo premiados.

Em média, quantas fases foram concluídas em cada jogo?

Cada jogo do Awesome Drawing Quiz tem seis níveis. Quando o usuário termina seis níveis (não importa se ele passou ou não em cada um), um evento game_complete é acionado com number_of_correct_answers como parâmetro. O parâmetro number_of_correct_answers indica o número de níveis em que o usuário deu uma resposta correta.

Clique no evento game_complete no relatório de eventos. No relatório de eventos game_complete, encontre o card number_of_correct_answers. Você vai ver o número médio de parâmetros de evento number_of_correct_answers.

d9eeaa019d1bceb4.png

Se o número médio de níveis concluídos for muito baixo, considere reorganizar os níveis do jogo para ajudar as pessoas a passar dos primeiros níveis com mais facilidade e continuar jogando sem perder o interesse.

11. Pronto!

Você concluiu o codelab do Android AdMob+Firebase 101. O código completo deste codelab está na pasta android_studio_folder.png101-complete_and_102-base.

Na próxima parte do codelab AdMob + Firebase, você vai aprender a usar um funil para visualizar o fluxo de eventos do app. A próxima parte também vai abordar como usar a Configuração remota e o teste A/B para otimizar o valor de parâmetro no jogo sem uma atualização do app.