AdMob+Firebase 102 Unity: ajuste o comportamento do aplicativo sem uma atualização do 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, a atualização do app não funcionaria 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.

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

  • Unity 2018.4.4f1 ou mais recente
  • Xcode 10 ou mais recente (para criar o destino para o iOS)
  • 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.
  • Um dispositivo iOS ou um simulador com iOS 8.0 ou versão mais recente.

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-unity-master.

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

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

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.

Preparar os arquivos necessários

O Awesome Drawing Quiz usa vários códigos de código aberto para compilar e executar o projeto.

Abra o terminal e acesse o diretório raiz do repositório. Em seguida, execute ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles no Windows) no terminal para copiar os arquivos necessários para o projeto.

Importar o app inicial

Inicie o Unity e selecione Open 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 Unity.

Adicionar o plug-in dos anúncios para dispositivos móveis do Google para Unity

Para veicular anúncios da AdMob no app Unity, adicione o plug-in dos anúncios para dispositivos móveis do Google para Unity ao projeto.

  1. Faça o download do pacote do plug-in dos anúncios para dispositivos móveis do Google para Unity 3.18.1. Este codelab pode não ser compatível com a outra versão do plug-in.
  2. No projeto do Unity Awesome Drawing Quiz. No projeto, navegue até Recursos > Importar pacote > Pacote personalizado.
  3. Importe o GoogleMobileAds.unitypackage para o projeto que você baixou.

Também é necessário definir o ID do app AdMob. No editor do Unity, selecione Assets > Anúncios para dispositivos móveis do Google > Configurações no menu.

44fc84fe88235c1f.png

Para ativar a AdMob, clique na caixa de seleção Ativado na seção Google AdMob. Em seguida, insira o ID do app AdMob da seguinte forma:

  • Android: ca-app-pub-3940256099942544~3048611032
  • iOS: ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

Adicionar arquivos de configuração do Firebase ao projeto do Unity

  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 cada app para Android e iOS para fazer o download do arquivo google-service.json (para Android) e GoogleService-Info.plist (para iOS).
  3. Mova os dois arquivos de configuração para a pasta android_studio_folder.pngAssets no projeto do Unity.

704aa8e97df63c4e.png

Adicionar o SDK do Firebase Analytics

  1. Faça o download do SDK do Firebase para Unity 5.5.0 e descompacte-o em um local prático. Pule esta etapa se você já tiver feito o download do SDK.
  2. Abra o projeto do Unity Awesome Drawing Quiz e navegue até Assets > Importar pacote > Pacote personalizado.
  3. No SDK descompactado, importe o SDK do Firebase Analytics (dotnet4/FirebaseAnalytics.unitypackage).
  4. Na janela "Importar pacote do Unity", clique em Importar.

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 o SDK da Configuração remota do Firebase

  1. Faça o download do SDK do Firebase para Unity 5.5.0 e descompacte-o em um local prático.
  2. Abra o projeto do Unity Awesome Drawing Quiz e navegue até Assets > Importar pacote > Pacote personalizado.
  3. No SDK descompactado, importe o SDK da Configuração remota (dotnet4/FirebaseRemoteConfig.unitypackage).
  4. Na janela "Importar pacote do Unity", clique em Importar.

Importar Firebase.RemoteConfig

Modifique o Main.cs para permitir que você use o tipo do Firebase.RemoteConfig sem precisar usar o nome totalmente qualificado.

Scenes/Main.cs (link em inglês)

...

using AwesomeDrawingQuiz.Game;

// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;

namespace AwesomeDrawingQuiz.Scene {
    ...
}

Inicializar e Buscar valores da Configuração remota

Modifique o método InitAndFetchRemoteConfig() no Main.cs para inicializar a instância da Configuração remota, conforme mostrado a seguir. Observe que GameSettings.KEY_REWARD_AMOUNT contém o nome do parâmetro na Configuração remota. (Você vai declarar esse campo em breve neste codelab)

Scenes/Main.cs (link em inglês)

private Task InitAndFetchRemoteConfig() {
    // TODO: Initialize and Fetch values from the Remote Config (102)
    Dictionary<string, object> defaults = new Dictionary<string, object>();
    defaults.Add(GameSettings.KEY_REWARD_AMOUNT, 1);
    FirebaseRemoteConfig.SetDefaults(defaults);

    if (Debug.isDebugBuild) {
        ConfigSettings config = new ConfigSettings();
        config.IsDeveloperMode = true;
        FirebaseRemoteConfig.Settings = config;
        return FirebaseRemoteConfig.FetchAsync(System.TimeSpan.Zero);
    } else {
        return FirebaseRemoteConfig.FetchAsync();
    }
}

Você vai observar que a instância FirebaseRemoteConfig está configurada para buscar os valores mais recentes do servidor no modo de depuração para ajudar no processo de desenvolvimento. (IsDeveloperMode = true e FetchAsync(System.TimeSpan.Zero))

Ativar os valores buscados da Configuração remota

Depois de buscar os valores da Configuração remota, ative esses valores para disponibilizá-los no app. Modifique o método ActivateRemoteConfigValues() desta maneira.

Scenes/Main.cs (link em inglês)

private void ActivateRemoteConfigValues() {
    // TODO: Activate fetched Remote Config values (102)
    FirebaseRemoteConfig.ActivateFetched();
}

Modifique o método Start()

Para fazer o aplicativo buscar e ativa o valor da Configuração remota na inicialização do app, modifique o método Start() no arquivo Main.cs da seguinte maneira.

Scenes/Main.cs (link em inglês)

void Start () {
    ...
    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
        ...
    }).ContinueWith(task => { 
        // TODO: Call InitAndFetchRemoteConfig() (102)
        InitAndFetchRemoteConfig();
    }).ContinueWith(task => {
        // TODO: Call ActivateRemoteConfigValues() (102)
        ActivateRemoteConfigValues();

        // Enable 'Start a game' button
        UnityMainThreadDispatcher.Instance()
            .Enqueue(() => buttonStartGame.interactable = true);
    });
    #else
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);

    // TODO: Call InitAndFetchRemoteConfig() (102)
    InitAndFetchRemoteConfig().ContinueWith(task => {
        // TODO: Call ActivateRemoteConfigValues() (102)
        ActivateRemoteConfigValues();
    });
    #endif
}

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

Modifique a classe GameSettings para buscar o valor do prêmio na Configuração remota.

Game/GameSettings.cs

// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;

namespace AwesomeDrawingQuiz.Game {
    public class GameSettings {

        ...
        
        // TODO: Apply reward amount from the Remote Config (102)
        public const string KEY_REWARD_AMOUNT = "reward_amount";

        public static GameSettings Instance {
            get {
                return instance;
            }
        }

        ...

        public int RewardAmount {
            get {
                // TODO: Apply reward amount from the Remote Config (102)
                return (int) FirebaseRemoteConfig.GetValue(KEY_REWARD_AMOUNT).LongValue;
            }
            private set { }
        }
    }
}

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 um para dois. Assim, o app vai mostrar mais dois personagens como dica depois de assistir 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.

Criar 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

Conferir 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 por um tempo, ele começará a exibir os dados coletados durante o experimento até agora 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 Unity para AdMob+Firebase 102. O código completo deste codelab está na pasta android_studio_folder.png102-complete.