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 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, a atualização do app não funcionaria 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.

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 do iOS)
  • 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
  • Um dispositivo iOS ou um simulador com iOS 8.0 ou mais recente

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

...ou clone 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:

  • 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.

Preparar os arquivos necessários

O Awesome Drawing Quiz usa vários códigos de código aberto, que são necessários 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 escolha Abrir na tela de boas-vindas. Em seguida, selecione o diretório 101-complete_and_102-base no código baixado.

Agora o projeto vai 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 Google Mobile Ads Unity Plugin 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, acesse Assets > Import Package > Custom Package.
  3. Importe o GoogleMobileAds.unitypackage para o projeto que você baixou.

Você também precisa definir o ID do app da AdMob. No editor do Unity, selecione Assets > Google Mobile Ads > Settings no menu.

44fc84fe88235c1f.png

Para ativar a AdMob, clique na caixa de seleção Ativada na seção Google AdMob. Em seguida, insira o ID do app da 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 "Configurações". 9bacb5ada7cbaaf6.png
  2. Na guia Geral, selecione cada app Android e iOS para baixar o 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 arquivo em um local conveniente. Pule esta etapa se você já tiver baixado o SDK.
  2. Abra o projeto do Unity Awesome Drawing Quiz e acesse Assets > Import Package > Custom Package.
  3. No SDK descompactado, importe o SDK do Analytics do Firebase (dotnet4/FirebaseAnalytics.unitypackage).
  4. Na janela "Import Unity package", clique em Importar.

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.

e0a028059c9e00cb.png

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:

  1. Acesse o console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes.
  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 funis a seguir:

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

#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, 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.

620c0e84587c8ad4.png

Por exemplo, clique em 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 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:

d044fb7b07e6e0d9.png

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.

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 arquivo em um local conveniente.
  2. Abra o projeto do Unity Awesome Drawing Quiz e acesse Assets > Import Package > Custom Package.
  3. No SDK descompactado, importe o SDK da Configuração remota (dotnet4/FirebaseRemoteConfig.unitypackage).
  4. Na janela "Import Unity package", clique em Importar.

Import Firebase.RemoteConfig

Modifique o Main.cs para usar o tipo do Firebase.RemoteConfig sem precisar usar o nome totalmente qualificado.

Scenes/Main.cs

...

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 da seguinte maneira. O 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

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();
    }
}

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

Ativar os valores buscados da Configuração remota

Quando você buscar os valores da Configuração remota, ative-os para que fiquem disponíveis no app. Modifique o método ActivateRemoteConfigValues() da seguinte maneira.

Scenes/Main.cs

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

Modificar o método Start()

Para que o app busque e ative o valor da Configuração remota na inicialização, modifique o método Start() no arquivo Main.cs da seguinte maneira.

Scenes/Main.cs

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 da recompensa na Configuração remota

Modifique a classe GameSettings para buscar o valor da recompensa 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, 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.

7f52617141c53726.png

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.

cbc771fd1685b29c.png

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

d6a6aa4a60e06ee9.png

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.

9a9bd8a26a39bfe3.png

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

d6a6aa4a60e06ee9.png

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.

Criar 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.

f38a85328ab54e7e.png

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

15d552adb61c0b08.png

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

61b316741a63050f.png

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.

694641b57d90ff65.png

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.

10ed7f5b06858519.png

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. Como resultado, você vai ver 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.

ae6477ce79f6265d.png

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.

7131bf9b4fa74fa5.png

8. Gerenciar o experimento

Ver 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.

8a7009bdd8871d95.png

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.

a4e7ca3e3f4711cd.png

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".

e2d00fc27c053fd3.png

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.

c3859d642f85cc52.png

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.

86cb6a6c07516634.png

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 ( 73afe611adf58774.png) e em Implantar variante.

374e1c72be1d0656.png

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.

e176f6e6a72c754.png

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.

d65d545620ce93f6.png

9. Pronto!

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