AdMob+Firebase 102 Android: ajuste o comportamento do aplicativo sem atualizar o aplicativo

1. Introdução

Vamos supor que você precise ajustar os valores de alguns parâmetros no seu app depois de publicá-lo na Play Store. Normalmente, é necessário republicar uma nova versão do app, e os usuários também precisam atualizá-lo no smartphone.

Em geral, a atualização do app funcionará se você quiser confirmar uma alteração duradoura no seu aplicativo. No entanto, e se você precisar ajustar o valor de alguns parâmetros no seu app com frequência? Ou, e se você quiser fazer alguns experimentos para encontrar a configuração ideal do app?

Nesses casos, as atualizações de apps não funcionam bem. Porque é necessário algum tempo até que a atualização seja totalmente propagada para os usuários. Além disso, é um desafio realizar os experimentos em várias versões do app.

Além disso, como é possível determinar se a jornada do usuário do app está funcionando conforme o esperado? Os comentários dos usuários podem ser usados no Play Console. No entanto, pode não ser preciso o suficiente para tomar uma decisão clara.

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 criar um funil no Google Analytics para Firebase
  • Como usar a Configuração remota do Firebase
  • Como executar o Teste A/B do Firebase

O que é necessário

  • Android Studio versão 4.1 ou mais recente
  • Uma Conta do Google
  • Um dispositivo de teste com Android 5.0 ou versões mais recentes com um cabo USB para conectar o dispositivo ou um Android Emulator executando um AVD(Android Virtual Device) com uma imagem do sistema que oferece suporte à Play Store/APIs do Google.

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

Iniciante Intermediário Proficiente

Como você classificaria seu nível de experiência com o Firebase?

Iniciante Intermediário Proficiente

2. Configurar o ambiente de desenvolvimento

Fazer o download do código

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

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

...ou clonar 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, da seguinte maneira:

  • 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 inicial 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 selecione Import project na tela inicial. Em seguida, selecione o diretório 101-complete_and_102-base no código transferido por download.

O projeto deve estar aberto no Android Studio.

Adicionar o arquivo de configuração do Firebase ao projeto do Android

  1. Na tela de visão geral do projeto Awesome Drawing Quiz, clique no ícone de configurações. 9bacb5ada7cbaaf6.png
  2. Na guia Geral, selecione o app Android para fazer o download do arquivo google-service.json.
  3. Mova o arquivo de configuração para o diretório android_studio_folder.pngapp no projeto. 797cde1881a38fdf.png

3. Abrir o projeto do Firebase no console

Antes de prosseguir, abra o projeto no Console do Firebase que você criou na etapa Configurar o projeto do Firebase do Codelab AdMob+Firebase 101.

e0a028059c9e00cb.png

4. Criar um funil de eventos do app

Você pode adicionar alguns eventos para rastrear a atividade do usuário no aplicativo. Ao ler o relatório de cada evento de app, você pode ver os detalhes associados a ele, como contagens totais, contagens médias por usuário, informações demográficas etc.

Mas e se você quiser conferir a taxa de conclusão de uma série de eventos em vez de se concentrar em um evento específico? No Google Analytics para Firebase, você pode usar o funil para visualizar e otimizar a taxa de conclusão de uma série de eventos do app.

Criar um funil

Para criar um funil, siga estas etapas:

  1. Acesse o Console do Firebase e selecione o projeto do Awesome Drawing Quiz que você criou anteriormente.
  2. Clique em Funis.
  3. Clique em NOVO FUNIL.
  4. Insira um nome e uma descrição para o funil.
  5. Selecione os dois primeiros eventos que você quer usar como etapas no funil.
  6. Clique em ADICIONAR OUTRO EVENTO para cada etapa adicional e selecione um evento.
  7. Clique em CRIAR.

Seguindo as etapas acima, crie os seguintes funis:

1 Nome do funil: taxa de sucesso do nível Eventos: level_start, level_successd3bc78ef61a261d7.png

No 2 Nome do funil: taxa de conclusão de anúncios premiados Eventos: ad_reward_prompt, ad_reward_impression, ad_reward45c9542dfa663014.png

3. Nome do funil: taxa de conclusão do jogo Eventos: game_start, game_completedab25e8501746d5f.png

Ver análise de funil

Depois de criar alguns funis, acesse-os no menu Funis do Console do Firebase. Ao clicar no nome do funil na lista, você pode ver a análise detalhada de cada funil.

620c0e84587c8ad4.png

Por exemplo, clique na Taxa de sucesso do nível. Ele vai mostrar os detalhes do funil da seguinte forma:

c889f9b6ece15847.png

Na captura de tela acima, você pode ver a porcentagem de usuários que concluíram uma fase (acionaram o evento level_success) depois de iniciar uma fase (acionaram o evento level_start). Aqui podemos ver que 46, 2% dos usuários concluíram o nível.

Depois de clicar em Contagem de eventos, as métricas com base no número de eventos serão exibidas da seguinte forma:

d044fb7b07e6e0d9.png

Com base nas métricas da captura de tela acima, houve 116 tentativas (acionaram o evento level_start) e 57 apagões (acionado o evento level_success) durante o período.

Como a taxa de conclusão com base nos eventos(49,1%) é um pouco mais alta do que a taxa com base no usuário(46,2%), podemos dizer que algumas pessoas têm uma performance melhor do que as outras.

5. Integrar a Configuração remota ao app

Como você pode receber alguns insights sobre seu app com base nos eventos do app e no funil, convém otimizá-lo. Geralmente, ele inclui um ajuste do valor do parâmetro no app. Para modificar o valor desses parâmetros, atualize o app para que as mudanças sejam aplicadas aos usuários.

Ao usar a Configuração remota no Firebase, você pode ajustar esses valores sem uma atualização do app, o que significa que é possível alterar o comportamento do app sem incomodar os usuários, forçando-os a fazer o download da atualização.

Neste codelab, você aprenderá a ajustar o valor do prêmio (número de letras que serão divulgados depois de assistir um anúncio em vídeo premiado) sem atualizar o app usando a Configuração remota.

Adicionar a Configuração remota à dependência do app

Para começar, adicione a Configuração remota do Firebase à dependência do app.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Add Firebase Remote Config dependency (102)
    implementation 'com.google.firebase:firebase-config-ktx'

    ...
}

...

Sincronizar seu projeto com arquivos do Gradle

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

Definir um valor padrão do parâmetro da Configuração remota

Para buscar os valores da Configuração remota, é necessário ter uma conexão de rede. Quando a rede não estiver disponível, defina um valor padrão para cada parâmetro da Configuração remota.

Crie o arquivo remote_config_defaults.xml na pasta res/xml. Em seguida, defina um valor padrão do prêmio (reward_amount)conforme mostrado a seguir.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>reward_amount</key>
        <value>1</value>
    </entry>
</defaultsMap>

Observe que reward_amount é o nome do parâmetro na Configuração remota.

Buscar o valor do prêmio na Configuração remota

Modifique o AwesomeDrawingQuiz.kt para criar a classe GameSettings e manter uma referência à instância RemoteConfig.

A instância RemoteConfig está configurada para buscar os valores mais recentes do servidor no modo de depuração para ajudar no processo de desenvolvimento. Defina o intervalo mínimo de busca como zero segundo chamando fetch(0L).

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    // COMPLETE: Provide FirebaseRemoteConfig instance (102)
    private fun provideGameSettings() = GameSettings(provideRemoteConfig())

    // COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
    private fun provideRemoteConfig(): FirebaseRemoteConfig {
        val rc = Firebase.remoteConfig.apply {
            setDefaultsAsync(R.xml.remote_config_defaults)
        }
        val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
        fetchTask.addOnCompleteListener {
            if (it.isSuccessful) {
                Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
                rc.activate()
            }
        }
        return rc
    }
}

Em seguida, mude a classe GameSettings para buscar o valor do prêmio na Configuração remota.

GameSettings.kt

// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {

  ...

  // TODO: Apply reward amount from the Remote Config (102)
  val rewardAmount: Int
    get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()

  companion object {
    ...

    // TODO: Add a key for 'reward_amount' Remote Config parameter (102)
    private const val KEY_REWARD_AMOUNT = "reward_amount"
  }
}

Criar um parâmetro da Configuração remota no console

Em seguida, você criará um novo parâmetro da Configuração remota para o valor do prêmio e poderá ajustá-lo em tempo real.

Para criar um novo parâmetro, acesse o Console do Firebase e selecione o projeto do Awesome Drawing Quiz que você criou anteriormente. Clique em Configuração remota -> ADICIONAR SEU PRIMEIRO PARÂMETRO.

7f52617141c53726.png

Nomeie o parâmetro como reward_amount e defina o valor padrão como 1. Em seguida, clique no botão Adicionar parâmetro.

cbc771fd1685b29c.png

Clique no botão Publicar alterações para ativar a alteração para os usuários.

d6a6aa4a60e06ee9.png

6. Mudar o comportamento do app com a Configuração remota

O valor do prêmio do Awesome Drawing Quiz agora pode ser configurado no Console do Firebase sem você precisar atualizar o código do app.

Nesta seção, você vai mudar o valor da recompensa de 1 para 2 para que o app mostre mais dois personagens como dica depois de assistir a um anúncio premiado.

Atualizar o valor padrão do parâmetro recompensa_amount

Acesse o Console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou anteriormente. Clique em Configuração remota e em reward_amount na lista. Em seguida, altere o valor padrão para 2 e clique no botão Atualizar.

9a9bd8a26a39bfe3.png

Clique no botão Publicar alterações para ativar a alteração para os usuários.

d6a6aa4a60e06ee9.png

Verificar a mudança de comportamento do app

Para confirmar a mudança de comportamento do app, execute o projeto novamente. Ao terminar de assistir um anúncio premiado, você verá que o app agora mostra duas letras como recompensa, conforme configurado no console da Configuração remota.

Antes de assistir um anúncio premiado

Revelou duas letras extras como recompensa

7. Crie o experimento para otimizar o valor do prêmio

Agora você pode mudar o valor do prêmio sem precisar publicar uma atualização do app. No entanto, como você pode determinar o valor que mudou é bom para o app?

Com o Teste A/B do Firebase, você pode realizar experimentos para otimizar a experiência geral do usuário no app sem precisar atualizar um app ou criar uma ferramenta separada para executar e acompanhar o desempenho de cada experimento.

Elabore o experimento

Antes de criar um novo experimento, defina um objetivo ou uma meta claros para ele. Siga a lista de verificação a seguir antes de criar um novo experimento.

  • O que: o que você quer otimizar? Por exemplo, dificuldade do jogo, tempo/visibilidade do anúncio etc.
  • Motivo: qual é sua meta de negócios para realizar o experimento? Por exemplo, para maximizar a receita de publicidade, aumentar a retenção etc.
  • Quem: quem está sujeito ao experimento? (por exemplo, todos os usuários, público-alvo específico etc.)

Neste codelab, você criará um experimento para otimizar o valor do prêmio e maximizar o engajamento diário do usuário com o Teste do Awesome Drawing.

Criar o experimento

Abra o projeto do Awesome Drawing Quiz no Console do Firebase. Selecione o menu Teste A/B e clique no botão Criar experimento.

Selecione Configuração remota para criar um experimento.

f38a85328ab54e7e.png

Nomeie o experimento como Valor do prêmio, conforme mostrado na captura de tela a seguir.

15d552adb61c0b08.png

Configure as opções de segmentação. Neste codelab, você segmentará 100% dos usuários do Awesome Drawing Quiz.

61b316741a63050f.png

Como o objetivo principal do experimento é encontrar um valor ideal que maximize o engajamento diário do usuário, selecione Engajamento diário do usuário como a métrica principal a ser acompanhada.

694641b57d90ff65.png

Por fim, configure o controle e o grupo de variantes para descobrir qual deles tem o melhor desempenho. Selecione reward_amount no grupo de controle e deixe o valor inalterado. Para o grupo de variantes, nomeie-o como 'Menos recompensa' e mude o valor de reward_amount para 1.

10ed7f5b06858519.png

Com essa configuração, as pessoas no grupo Menos prêmio vão receber uma letra como prêmio, e as pessoas no Grupo de controle vão receber duas letras. Como resultado, você verá como o valor da recompensa afeta os usuários.

Depois de clicar no botão Revisar, você terá uma visão geral do experimento, como mostrado a seguir.

ae6477ce79f6265d.png

Executar o experimento

Clique no botão Iniciar experimento para realizar o experimento. Não é possível mudar a configuração do experimento depois que ele começa.

7131bf9b4fa74fa5.png

8. Gerenciar o experimento

Confira o progresso do experimento.

É possível verificar o progresso do experimento no menu Teste A/B do Console do Firebase, que será parecido com a captura de tela a seguir. Também é possível ver o número de usuários que participaram do experimento nos últimos 30 minutos no card.

8a7009bdd8871d95.png

Para acessar os detalhes, clique no experimento na lista. Até que o experimento possa declarar uma variante líder (ou seja, a variante com melhor desempenho), você vai receber a mensagem "É muito cedo para declarar uma variante líder".

a4e7ca3e3f4711cd.png

Depois que o experimento estiver em execução há algum tempo, ele começará a exibir os dados coletados durante o experimento até o momento na seção Visão geral da melhoria. Você pode comparar o desempenho de cada variante para ver qual delas tem o melhor desempenho. A captura de tela abaixo mostra um exemplo da seção "Visão geral da melhoria".

e2d00fc27c053fd3.png

Na tabela abaixo da seção Visão geral da melhoria, é possível verificar os detalhes das métricas de meta do experimento, bem como métricas adicionais que estão sendo acompanhadas. A captura de tela abaixo mostra um exemplo da seção de detalhes das métricas.

c3859d642f85cc52.png

Implantar líder para todos os usuários

Você pode lançar o experimento para 100% dos usuários depois que o experimento tiver uma variante líder ou vencedora. Quando o teste A/B encontrar um líder claro, ele vai incentivar você a implantar a variante com melhor desempenho para todos os usuários.

86cb6a6c07516634.png

No entanto, mesmo que o experimento não tenha declarado um líder claro, ainda é possível implantar uma variante para todos os usuários.

Na tela de detalhes do experimento, clique no menu de contexto ( 73afe611adf58774.png) e depois em Implantar variante.

374e1c72be1d0656.png

Escolha uma variante para implantar a todos os usuários e clique no botão Revisar na Configuração remota para analisar as mudanças antes de fazer mudanças na Configuração remota.

e176f6e6a72c754.png

Depois de confirmar que não há problemas no rascunho, clique no botão Publicar alterações para disponibilizar a alteração a todos os usuários.

d65d545620ce93f6.png

9. Pronto!

Você concluiu o codelab do Android AdMob+Firebase 102. O código completo deste codelab está na pasta android_studio_folder.png102-complete.