1. Introdução
Vamos supor que você precise ajustar os valores de alguns parâmetros no app depois de publicá-lo na Play Store. Normalmente, você precisa republicar uma nova versão do app, e os usuários também precisam atualizar o app no smartphone.
Em geral, a atualização do app funciona se você quiser fazer uma mudança duradoura no app. Mas e se você for ajustar o valor de alguns parâmetros no 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 funcionariam bem. Porque leva algum tempo até que a atualização seja totalmente propagada para os usuários. Além disso, é bastante difícil executar os experimentos em várias versões do app.
Além disso, como você pode determinar se a jornada do usuário do app está funcionando conforme o esperado? Você pode usar os comentários dos usuários no Play Console. No entanto, talvez não seja 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
- 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 seu 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?
Qual é seu nível de experiência com o Firebase?
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-master.
...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:
101-base: código inicial que você vai criar neste codelab.
101-complete_and_102-base: código completo para este codelab e inicialização para o codelab 102.
102-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-complete_and_102-base no código baixado.
Agora o projeto deve estar aberto no Android Studio.
Adicionar o arquivo de configuração do Firebase ao projeto do Android
- Na tela de visão geral do projeto Awesome Drawing Quiz, clique no ícone "Configurações".

- Na guia Geral, selecione o app Android para baixar o arquivo google-service.json.
- Mova o arquivo de configuração para o diretório
app no seu projeto. 
3. Abra o projeto do Firebase no console
Antes de passar para a próxima etapa, abra o projeto no Console do Firebase que você criou na etapa Configurar projeto do Firebase do codelab AdMob+Firebase 101.

4. Criar um funil de eventos do app
Talvez você tenha adicionado alguns eventos do app para rastrear a atividade do usuário dentro dele. Ao ler o relatório de cada evento, você pode conferir os detalhes associados, como contagens totais e médias por usuário, dados demográficos etc.
Mas e se você quiser ver 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:
- Acesse o console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes.
- Clique em Funis.
- Clique em NOVO FUNIL.
- Insira um nome e uma descrição para o funil.
- Selecione os dois primeiros eventos que você quer usar como etapas no funil.
- Clique em ADICIONAR OUTRO EVENTO para cada etapa adicional e selecione um evento.
- Clique em CRIAR.
Seguindo as etapas acima, crie os funis a seguir:
1. Nome do funil:taxa de sucesso do nível Eventos: level_start, level_success
#2 Nome do funil:taxa de conclusão de anúncios premiados Eventos: ad_reward_prompt, ad_reward_impression, ad_reward
3) Nome do funil:taxa de conclusão do jogo Eventos: game_start, game_complete
Ver análise de funil
Depois de criar alguns funis, você pode acessar o menu Funis no Console do Firebase. Clique no nome do funil na lista para conferir a análise detalhada de cada um.

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

Na captura de tela acima, você pode ver a porcentagem de usuários que concluíram um nível (acionaram o evento level_success) depois de começar um nível (acionaram o evento level_start). Aqui, você pode 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 vão aparecer da seguinte forma:

Com base nas métricas da captura de tela acima, houve 116 tentativas (que acionaram o evento level_start) e 57 conclusões (que acionaram o evento level_success) durante o período.
Como a taxa de conclusão com base nos eventos(49,1%) é um pouco maior do que a taxa com base no usuário(46,2%), podemos dizer que há algumas pessoas com desempenho melhor do que as outras.
5. Integrar a Configuração remota ao app
Como você pode receber alguns insights sobre o app com base nos eventos e no funil, talvez queira otimizá-lo. Isso geralmente inclui um ajuste fino do valor do parâmetro no app. Para modificar o valor desses parâmetros, é necessário atualizar o app para que as mudanças possam ser aplicadas aos usuários.
Ao usar a Configuração remota no Firebase, você pode ajustar esses valores sem uma atualização do app. Isso significa que é possível mudar o comportamento do app sem incomodar os usuários, forçando-os a baixar a atualização.
Neste codelab, você vai aprender a ajustar o valor da recompensa (número de letras a serem reveladas após assistir um anúncio em vídeo premiado) sem uma atualização do app usando a Configuração remota.
Adicione a Configuração remota à dependência do app
Vamos começar adicionando 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'
...
}
...
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 gradle.
Definir um valor padrão para o parâmetro da Configuração remota
Para buscar os valores da Configuração remota, é necessário ter uma conexão de rede. Para o caso em que a rede não está 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 para o valor da recompensa (reward_amount)) da seguinte forma.
res/xml/remote_config_defaults.xml
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>reward_amount</key>
<value>1</value>
</entry>
</defaultsMap>
reward_amount é o nome do parâmetro na Configuração remota.
Buscar o valor da recompensa na Configuração remota
Modifique o AwesomeDrawingQuiz.kt para que a classe GameSettings contenha 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 e ajudar no processo de desenvolvimento. (Defina o intervalo mínimo de busca como zero segundos 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 da recompensa 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, crie um parâmetro da Configuração remota para o valor da recompensa e ajuste esse valor conforme necessário.
Para criar um parâmetro, acesse o Console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes. Clique no botão Configuração remota -> ADICIONAR SEU PRIMEIRO PARÂMETRO.

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

Clique no botão Publicar mudanças para disponibilizar a mudança aos usuários.

6. Mudar o comportamento do app com a Configuração remota
Agora, o valor da recompensa no Awesome Drawing Quiz pode ser configurado no console do Firebase sem 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 revele mais dois caracteres como uma dica depois de assistir um anúncio premiado.
Atualizar o valor padrão do parâmetro "reward_amount"
Acesse o console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes. Clique em Configuração remota e em reward_amount na lista. Em seguida, mude o valor padrão para 2 e clique no botão Atualizar.

Clique no botão Publicar mudanças para disponibilizar a mudança aos usuários.

Verificar a mudança no comportamento do app
Para confirmar a mudança no comportamento do app, execute o projeto novamente. Depois de assistir um anúncio premiado, você vai notar que o app agora revela duas letras como recompensa, conforme configuramos no console da Configuração remota.
Antes de assistir um anúncio premiado | Revelou duas letras extras como recompensa |
7. Criar o experimento para otimizar o valor da recompensa
Agora é possível mudar o valor da recompensa sem precisar publicar uma atualização do app. No entanto, como determinar se a quantidade de mudanças feitas é boa para o app?
Com o Teste A/B do Firebase, é possível executar experimentos para otimizar a experiência geral do usuário no app sem precisar atualizar o app ou criar uma ferramenta separada para executar e acompanhar o desempenho de cada experimento.
Elaborar o experimento
Antes de criar um experimento, defina um objetivo ou meta clara. Confira a lista de verificação a seguir antes de criar um experimento.
- O quê: o que você quer otimizar? (por exemplo, dificuldade do jogo, tempo/visibilidade do anúncio etc.)
- Por quê: qual é a meta de negócios ao realizar o experimento? (por exemplo, para maximizar a receita de publicidade, aumentar a retenção etc.)
- Quem: quem pode participar do experimento? (por exemplo, "Todos os usuários", "Público-alvo de um usuário específico" etc.)
Neste codelab, você vai criar um experimento para otimizar o valor da recompensa e maximizar o engajamento diário dos usuários do Awesome Drawing Quiz.
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.

Nomeie o experimento como "Valor da recompensa", conforme mostrado na captura de tela a seguir.

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

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

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

Com essa configuração, as pessoas do grupo Menos recompensa vão receber uma carta como recompensa, enquanto as pessoas do grupo de controle vão receber duas cartas. Assim, você vai entender como o valor da recompensa afeta os usuários.
Depois de clicar no botão Analisar, você vai ver uma visão geral do experimento, como mostrado abaixo.

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

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á semelhante à captura de tela a seguir. Também é possível conferir o número de usuários que participaram do experimento nos últimos 30 minutos no card.

Depois de clicar no experimento na lista, você pode conferir os detalhes dele. Até que o experimento possa declarar um líder (ou seja, a variante com melhor desempenho), você vai ver a mensagem Ainda é cedo para declarar um líder.

Depois de um tempo, o experimento vai começar a mostrar os dados coletados até o momento na seção Visão geral da melhoria. É possível comparar a performance de cada variante para saber qual delas tem o melhor desempenho. A captura de tela a seguir mostra um exemplo da seção "Visão geral das melhorias".

Na tabela abaixo da seção Visão geral da melhoria, você pode conferir os detalhes das métricas de objetivo do experimento, além de outras métricas que estão sendo rastreadas. A captura de tela a seguir mostra um exemplo da seção de detalhes das métricas.

Lançar o líder para todos os usuários
Depois que o experimento for executado por tempo suficiente para que você tenha uma variante líder ou vencedora, será possível lançar o experimento para 100% dos usuários. Quando o Teste A/B encontrar um líder claro, ele vai incentivar você a lançar a variante principal para todos os usuários.

No entanto, mesmo que o experimento não tenha declarado um líder claro, ainda é possível lançar uma variante para todos os usuários.
Na tela de detalhes do experimento, clique no menu de contexto (
) e em Implantar variante.

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

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

9. Pronto!
Você concluiu o codelab AdMob+Firebase 102 para Android. O código completo deste codelab está na pasta
102-complete.

