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?
Como você classificaria seu nível de experiência com o Firebase?
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:
101-base: código inicial que você vai criar neste codelab.
101-complete_and_102-base: código completo para este codelab e inicial para o codelab 102.
102-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
- Na tela de visão geral do projeto Awesome Drawing Quiz, clique no ícone de configurações.
- Na guia Geral, selecione o app Android para fazer o download do arquivo google-service.json.
- Mova o arquivo de configuração para o diretório
app no projeto.
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.
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:
- Acesse o Console do Firebase e selecione o projeto do Awesome Drawing Quiz que você criou anteriormente.
- 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 seguintes funis:
1 Nome do funil: taxa de sucesso do nível Eventos: level_start
, level_success
No 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, 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.
Por exemplo, clique na 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 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:
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.
Nomeie o parâmetro como reward_amount
e defina o valor padrão como 1
. Em seguida, clique no botão Adicionar parâmetro.
Clique no botão Publicar alterações para ativar a alteração para os usuários.
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.
Clique no botão Publicar alterações para ativar a alteração para os usuários.
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.
Nomeie o experimento como Valor do prêmio, conforme mostrado na captura de tela a seguir.
Configure as opções de segmentação. Neste codelab, você segmentará 100% dos usuários do Awesome Drawing Quiz.
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.
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.
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.
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.
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.
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".
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".
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.
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.
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 ( ) e depois em Implantar variante.
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.
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.
9. Pronto!
Você concluiu o codelab do Android AdMob+Firebase 102. O código completo deste codelab está na pasta 102-complete.