Conceitos básicos do Unity na AdMob e no Firebase Princípios básicos do Google Analytics

1. Introdução

Os anúncios são uma parte crucial da experiência geral do usuário no seu app. Boas implementações de anúncios podem ajudar a melhorar a experiência geral do app e até mesmo a retenção e o engajamento dos usuários. Por exemplo, com os anúncios premiados, você pode recompensar os usuários com moedas ou itens no app por assistir anúncios em vídeo. Assim, eles podem alcançar novos níveis, em vez de ficarem presos e desistirem.

No entanto, criar uma excelente experiência de anúncios não é fácil. Você pode ter dúvidas como: com que frequência devo mostrar esses anúncios? Onde e quando você deve mostrá-los? Qual deve ser o prêmio? Infelizmente, a resposta varia de app para app e de posição para posição. Não existe uma resposta única para todos os casos.

Com o Google Analytics para Firebase, a AdMob e várias outras ferramentas eficientes e fáceis de usar oferecidas pelo Firebase, ficou muito mais fácil e simples ajustar seu app com base em dados. Hoje, vamos mostrar como começar!

O que você vai criar

Este é o primeiro de três codelabs que vão ajudar você a criar um app chamado Awesome Drawing Quiz, um jogo em que os jogadores adivinham o nome do desenho. Ele vai mostrar como incorporar anúncios premiados e serviços do Firebase no seu jogo.

Neste codelab, você vai integrar o Google Analytics para Firebase e registrar alguns eventos importantes do app. Além disso, você vai aprender a ler as análises de aplicativos mostradas no console do Firebase.

O que você vai aprender

  • Como configurar o Google Analytics para Firebase no seu app
  • Como gravar os eventos do app
  • Como ler a análise de aplicativos mostrada no console 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-base no código baixado.

Agora o projeto vai estar aberto no Unity.

3. Configurar um bloco de anúncios em vídeo premiado (opcional)

Para sua conveniência, o app inicial já inclui um bloco de anúncios em vídeo premiado dedicado. Você pode pular esta etapa se não quiser criar uma nova conta na AdMob.

Configuração para Android

Para criar um novo app da AdMob na sua conta, siga estas instruções:

  1. Acesse o Console da AdMob.
  2. No menu Apps, clique em Adicionar app.
  3. Quando perguntarem "Você publicou seu app no Google Play ou na App Store?", responda NÃO.
  4. Dê o nome "Awesome Drawing Quiz" ao app, escolha "Android" como plataforma e clique em Adicionar.

Depois de criar um app da AdMob na sua conta, siga as etapas descritas abaixo para criar um bloco de anúncios em vídeo premiados.

  1. Clique no menu Apps no front-end da AdMob e selecione Awesome Drawing Quiz na lista de apps.
  2. Clique no menu Blocos de anúncios e em ADICIONAR BLOCO DE ANÚNCIOS para criar um novo bloco de anúncios em vídeo premiados.
  3. Selecione Premiado para o formato do anúncio.

7672f41ec611101b.png

  1. Dê o nome que preferir ao bloco de anúncios. Em seguida, defina o valor da recompensa como 1 e o item da recompensa como "dica". Essas são as recompensas que o app oferece aos usuários atualmente. Clique em CRIAR BLOCO DE ANÚNCIOS para criar um novo bloco de anúncios em vídeo premiados.

6d067814a2c38264.png

  1. Quando a criação for concluída, você verá instruções como as seguintes.

4bc1b3b341a5a81c.png

  1. Volte ao projeto do Unity e atualize as constantes de ID do app da AdMob e ID do bloco de anúncios para as que você criou na etapa anterior.

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_ANDROID
        private const string APP_ID = APP_ID_ANDROID;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

Configuração para iOS

Para criar um novo app da AdMob na sua conta, siga estas instruções:

  1. Acesse o Console da AdMob.
  2. No menu Apps, clique em Adicionar app.
  3. Quando perguntarem "Você publicou seu app no Google Play ou na App Store?", responda NÃO.
  4. Dê o nome "Awesome Drawing Quiz" ao app, escolha "iOS" como a plataforma e clique em Adicionar.

Depois de criar um app da AdMob na sua conta, siga as etapas descritas abaixo para criar um bloco de anúncios em vídeo premiados.

  1. Clique no menu Apps no front-end da AdMob e selecione Awesome Drawing Quiz na lista de apps.
  2. Clique no menu Blocos de anúncios e em ADICIONAR BLOCO DE ANÚNCIOS para criar um novo bloco de anúncios em vídeo premiados.
  3. Selecione Premiado para o formato do anúncio.

7672f41ec611101b.png

  1. Dê o nome que preferir ao bloco de anúncios. Em seguida, defina o valor da recompensa como 1 e o item da recompensa como "dica". Essas são as recompensas que o app oferece aos usuários atualmente. Clique em CRIAR BLOCO DE ANÚNCIOS para criar um novo bloco de anúncios em vídeo premiados.

6d067814a2c38264.png

  1. Quando a criação for concluída, você verá instruções como as seguintes.

4bc1b3b341a5a81c.png

  1. Volte ao projeto do Unity e atualize as constantes de ID do app da AdMob e ID do bloco de anúncios para as que você criou na etapa anterior.

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_IOS
        private const string APP_ID = APP_ID_IOS;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

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

Importar o plug-in

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.

Configurar 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

5. Configurar projeto do Firebase

Criar um projeto no console do Firebase

  1. Acesse o Console do Firebase.
  2. Selecione Adicionar projeto e nomeie o projeto como "Awesome Drawing Quiz".

Adicionar o app Unity

  1. Na tela de visão geral do novo projeto, clique em Adicionar o Firebase ao seu app do Unity.
  2. Marque a caixa de seleção "Registrar como app iOS".
  3. Insira o ID do pacote iOS como: com.codelab.awesomedrawingquiz.unity
  4. Forneça um apelido para o app, como: Awesome Drawing Quiz (Unity no iOS)
  5. Marque a caixa de seleção "Registrar como app Android".
  6. Insira o nome do pacote Android como: com.codelab.awesomedrawingquiz.unity
  7. Forneça um apelido para o app, como: Awesome Drawing Quiz (Unity no Android)
  8. Selecione Registrar app para registrar apps Android e iOS.

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

Em seguida, uma tela vai aparecer para que você faça o download de um arquivo de configuração com todos os metadados necessários do Firebase para seu app. Baixe os arquivos google-service.json e GoogleService-Info.plist e mova os dois para a pasta android_studio_folder.pngAssets no projeto do Unity.

331c165d80ba105e.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.
  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/FirebaseAnalytics.unitypackage).
  4. Na janela "Import Unity package", clique em Importar.

6. Vincular a AdMob ao projeto do Firebase

Siga estas etapas para vincular seus apps ao Firebase:

  1. Faça login na sua conta da AdMob em https://apps.admob.com.
  2. Clique em "Apps" na barra lateral.
  3. Selecione "Awesome Drawing Quiz". Se ele não aparecer na lista de apps recentes, clique em "Ver todos os aplicativos" para pesquisar todos aqueles que você adicionou à AdMob.
  4. Clique em "Configurações do app" na barra lateral.
  5. Clique em "Vincular ao Firebase".
  6. Selecione a opção Vincular a um projeto do Firebase e criar um novo app do Firebase. Em seguida, selecione o projeto "Awesome Drawing Quiz" no menu suspenso.
  7. Depois de clicar no botão "CONTINUAR", a mensagem "Vinculado com sucesso" vai aparecer. Clique no botão "CONCLUÍDO" para terminar.

Depois de vincular seu app da AdMob ao Projeto do Firebase, você vai desbloquear alguns recursos adicionais no console da AdMob e no console do Firebase, como:

Card de receita (AdMob)

No card "Receita", você pode conferir todas as possíveis fontes de receita em um só lugar. As fontes de receita aceitas são as seguintes:

  • AdMob (estimada)
  • Redes de publicidade de mediação (observadas)
  • Compras no app
  • Compras de e-commerce

10fe118249e11150.png

Card de métricas do usuário (AdMob)

No card de métricas do usuário, você pode conferir como as mudanças na experiência dos anúncios podem afetar o comportamento do usuário.

5f56366f1b31d4a1.png

Relatório de anúncios premiados (AdMob)

O relatório de anúncios premiados oferece várias métricas que ajudam os editores a entender como os usuários interagem com os anúncios premiados.

658a2868777690ea.png

Card "Total de receita" (Firebase)

Depois de vincular seu app da AdMob ao Firebase, o card "Receita total" no painel do Firebase vai mostrar a receita da AdMob, além das compras no app e de e-commerce.

98cb283977b023a.png

Relatórios de eventos de anúncio (Firebase)

Os eventos específicos de anúncios (clique, impressão e recompensa) são coletados automaticamente e podem ser usados no Google Analytics para Firebase.

bf77bd8c00c1441b.png

7. Executar o projeto

Depois de compilar e executar o projeto, a tela abaixo vai aparecer quando o app for iniciado.

f5fbf4565c5d8647.png

Depois de clicar em INICIAR UM JOGO, um desenho vai aparecer na tela. Sua missão é adivinhar o nome do desenho usando a dica mostrada na parte de cima, com base na qual você pode deduzir a primeira letra e o comprimento do nome do desenho.

bbdf4d23fb08a519.png ad82d7e657945c4d.png

Se você não tiver ideia de qual é o nome do desenho, clique no botão PULAR para pular a fase.

Talvez você queira uma pista extra para adivinhar a resposta. Para receber uma dica extra, clique no botão DICA e assista um anúncio em vídeo premiado. Depois de assistir o anúncio, uma letra extra será revelada como recompensa.

8c33687361f83a13.png b048d6587c10e9df.png

8. Adicionar eventos do app

Para entender melhor a jornada do usuário no Awesome Drawing Quiz,defina alguns eventos personalizados que rastreiam o comportamento do usuário no jogo da seguinte forma:

Nome do evento

Acionado…

Parâmetros

game_start

quando um usuário inicia um novo jogo.

nenhum

level_start

quando um usuário inicia um novo nível (um novo teste de desenho) em uma fase. (há seis níveis em um estágio)

level_name

level_wrong_answer

quando um usuário envia uma resposta errada.

level_name

ad_reward_prompt

quando um usuário toca no botão de dica e é solicitado a assistir um anúncio em vídeo premiado.

ad_unit_id

ad_reward_impression

quando um usuário começa a assistir um anúncio em vídeo premiado.

ad_unit_id

level_success

quando um usuário envia uma resposta correta (conclui um nível).

level_name, number_of_attempts, elapsed_time_sec, hint_used

level_fail

quando um usuário pula um nível.

level_name, number_of_attempts, elapsed_time_sec, hint_used

game_complete

quando o jogo terminar

number_of_correct_answers

Confira a descrição de cada parâmetro associado a cada evento:

Nome do evento

Nome do parâmetro

Descrição

level_start

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_wrong_answer

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

ad_reward_prompt

ad_unit_id

Um ID de bloco de anúncios usado para mostrar um anúncio em vídeo premiado.

ad_reward_impression

ad_unit_id

Um ID de bloco de anúncios usado para mostrar um anúncio em vídeo premiado.

level_success

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_success

number_of_attempts

Número de tentativas feitas para limpar um nível

level_success

elapsed_time_sec

Tempo decorrido para concluir um nível, em segundos

level_success

hint_used

Se um usuário usou uma dica (assistiu um anúncio em vídeo premiado) ou não para passar de um nível (1: usou uma dica / 0: passou de um nível sem uma dica)

level_fail

level_name

Nome do desenho mostrado no nível (por exemplo, "banana")

level_fail

number_of_attempts

Número de tentativas feitas para limpar um nível

level_fail

elapsed_time_sec

Tempo decorrido para concluir um nível, em segundos

level_fail

hint_used

Se um usuário usou uma dica (assistiu um anúncio em vídeo premiado) ou não para passar de um nível (1: usou uma dica / 0: passou de um nível sem uma dica)

game_complete

number_of_correct_answers

Número de fases concluídas no jogo

Criar uma classe auxiliar para registrar eventos personalizados

Para registrar o evento do Google Analytics com facilidade, crie uma classe auxiliar para gerenciar eventos personalizados.

Primeiro, crie uma pasta na pasta Assets/Scripts e nomeie-a como Analytics. Em seguida, crie um novo script em C# e nomeie-o como QuizAnalytics.cs na pasta Analytics.

Adicione o código abaixo ao arquivo QuizAnalytics.cs.

Analytics/QuizAnalytics.cs

using Firebase.Analytics;

namespace AwesomeDrawingQuiz.Analytics {

    public class QuizAnalytics {

        private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";

        private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";

        private const string EVENT_LEVEL_FAIL = "level_fail";

        private const string EVENT_LEVEL_SUCCESS = "level_success";

        private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";

        private const string EVENT_GAME_START = "game_start";

        private const string EVENT_GAME_COMPLETE = "game_complete";

        private const string PARAM_AD_UNIT_ID = "ad_unit_id";

        private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";

        private const string PARAM_HINT_USED = "hint_used";

        private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";

        private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";

        public const string SCREEN_MAIN = "main";

        public const string SCREEN_GAME = "game";

        public static void LogGameStart() {
            FirebaseAnalytics.LogEvent(EVENT_GAME_START);
        }

        public static void LogLevelStart(string levelName) {
            FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogLevelWrongAnswer(string levelName) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogAdRewardPrompt(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogAdRewardImpression(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogLevelSuccess(
            string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogLevelFail(
            string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogGameComplete(int numberOfCorrectAnswers) {
            FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE, 
                PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
        }

        public static void SetScreenName(string screenName) {
            FirebaseAnalytics.SetCurrentScreen(screenName, null);
        }
    }
}

Registrar eventos de análise no jogo

Abra o arquivo Game.cs na pasta Assets/Scripts/Scenes. Para usar a classe QuizAnalytics, que está localizada no namespace AwesomeDrawingQuiz.Analytics, adicione a diretiva "using" da seguinte forma.

Scenes/Game.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

Em seguida, na função Start(), chame o QuizAnalytics.SetScreenName() para mudar o nome da tela atual. Além disso, chame o QuizAnalytics.LogGameStart() para indicar que um jogo começou.

Scenes/Game.cs

void Start () {
    // TODO: Log screen name (101)
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);

    ...

    SetHintButtonEnabled(false);

    // TODO: Log game_start event (101)
    QuizAnalytics.LogGameStart();
    
    ...
}

Em seguida, nas funções de callback, adicione chamadas para registrar eventos personalizados da seguinte maneira:

Scenes/Game.cs

public void OnClickHint() {
    // TODO: Log ad_reward_prompt event (101)
    QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);

    ...
}

...
  
public void OnAdStarted(object sender, EventArgs args) {
    // TODO: Log ad_reward_impression event (101)
    QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}

...

public void OnGameOver(object sender, GameOverEventArgs args) {
    // TODO: Log game_complete event (101)
    QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);

    ...
}

public void OnLevelCleared(object sender, LevelClearEventArgs args) {
    // TODO: Log level_success event (101)
    QuizAnalytics.LogLevelSuccess(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);

    ...
}

public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
    // TODO: Log level_fail event (101)
    QuizAnalytics.LogLevelFail(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}

public void OnNewLevel(object sender, NewLevelEventArgs args) {
    // TODO: Log level_start event (101)
    QuizAnalytics.LogLevelStart(args.Drawing.word);

    ...
}

public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
    // TODO: Log level_wrong_answer event (101)
    QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);

    ...
}

Por fim, atualize o arquivo Main.cs na pasta Assets/Scripts/Scenes. Verifique se o Firebase está pronto antes de chamar qualquer método no SDK do Firebase.

Scenes/Main.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
    public class Main : MonoBehaviour {

        ...

        void Start () {
            Screen.sleepTimeout = SleepTimeout.SystemSetting;

            #if UNITY_ANDROID
            // Disable 'Start a game' button until
            // Firebase dependencies are ready to use on the Android
            buttonStartGame.interactable = false;

            // TODO: Check Google Play Services on Android (101)
            // Check Google Play Services on Android device is up to date
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available) {
                    Debug.Log("All Firebase services are available");
                    
                    // TODO: Set screen name (101)
                    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
                } else {
                    throw new System.InvalidOperationException(System.String.Format(
                        "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                }
            }).ContinueWith(task => {
                // Enable 'Start a game' button
                UnityMainThreadDispatcher.Instance()
                    .Enqueue(() => buttonStartGame.interactable = true);
            });
            #else
            
            // TODO: Set screen name (101)
            QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
            #endif
        }

        ...
    }
}   

9. Depurar eventos do Google Analytics

Use o DebugView para verificar se os eventos estão sendo registrados corretamente. Com o DebugView, você pode ver dados brutos de eventos registrados pelo seu app quase em tempo real em dispositivos de desenvolvimento.

Isso é muito útil para fins de validação durante a fase de instrumentação do desenvolvimento e pode ajudar você a descobrir erros e falhas na sua implementação de análises.

Ativar o modo de depuração no Android

Em geral, os eventos registrados no seu app são agrupados durante um período de aproximadamente uma hora e depois são carregados juntos. Para validar sua implementação de análises em tempo real, ative o modo de depuração no seu dispositivo de desenvolvimento para fazer upload de eventos com atrasos mínimos.

Primeiro, abra a ferramenta Terminal no Android Studio. Ela fica na barra de ferramentas da parte de baixo.

c8dc1b4f08a224b8.png

Em seguida, execute o seguinte comando (verifique se o dispositivo Android de teste está conectado ao computador ou se o Android Emulator está em execução):

adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz

O modo de depuração vai permanecer ativado até que você execute a linha de comando a seguir:

adb shell setprop debug.firebase.analytics.app .none.

Ativar o modo de depuração no iOS

Para ativar o modo de depuração do Analytics no seu dispositivo de desenvolvimento, especifique o seguinte argumento de linha de comando no Xcode:

-FIRDebugEnabled

O modo de depuração permanecerá ativo até você especificar o seguinte argumento de linha de comando:

-FIRDebugDisabled

Depurar eventos do Google Analytics com o DebugView

Depois de ativar o modo de depuração no dispositivo de teste, acesse o Console do Firebase e selecione "DebugView" no menu. Em seguida, no dispositivo de teste, jogue para ver os eventos sendo registrados e mostrados no relatório do DebugView.

827059255d09ac00.png

Clique no nome de um evento para acessar informações detalhadas sobre ele. Por exemplo, a captura de tela a seguir mostra detalhes de parâmetros associados ao evento level_start.

475db00d05d03ab8.png

Consulte o artigo da Central de Ajuda sobre a DebugView para mais detalhes.

10. Ativar relatórios de parâmetros

O Google Analytics para Firebase coleta o número total de contagens de eventos por padrão, mas a geração de relatórios para parâmetros personalizados precisa ser ativada explicitamente para cada parâmetro de evento de seu interesse. Depois que essa opção for ativada, o Google Analytics para Firebase vai mostrar outros cards com as estatísticas dos parâmetros personalizados.

Para registrar os parâmetros personalizados de um evento, siga estas etapas:

  1. Acesse o console do Firebase e selecione o projeto Awesome Drawing Quiz que você criou antes.
  2. Clique em Eventos no menu de navegação.
  1. Na linha do evento que você quer modificar, clique em 73afe611adf58774.png> Editar o Relatório de parâmetros.

aad40de06ee0c3ad.png

  1. No campo Insira o nome do parâmetro, digite o nome que você quer registrar.

Observação: se nenhuma correspondência for encontrada, basta inserir o nome do parâmetro e clicar em ADICIONAR.e066c761aae4797f.png 5. Consulte a tabela abaixo e defina o campo Tipo como Texto ou Número, conforme necessário. Para parâmetros numéricos, defina também o campo Unidade de medida. 6. Clique no botão SALVAR para concluir a configuração.

Ative os relatórios de parâmetros em cada evento listado abaixo.

Nome do evento

Nome do parâmetro

Tipo de parâmetro

Unidade de medida

level_start

level_name

Texto

N/A

level_wrong_answer

level_name

Texto

N/A

level_success

level_name

Texto

N/A

level_success

number_of_attempts

Número

Padrão

level_success

elapsed_time_sec

Número

Segundos

level_success

hint_used

Número

Padrão

level_fail

level_name

Texto

N/A

level_fail

number_of_attempts

Número

Padrão

level_fail

elapsed_time_sec

Número

Segundos

level_fail

hint_used

Número

Padrão

game_complete

number_of_correct_answers

Número

Padrão

O exemplo a seguir mostra a configuração de relatórios de parâmetros personalizados para o evento level_success:

6d569c8c27df2914.png

Depois de concluir a configuração dos relatórios de parâmetros, você poderá ver os parâmetros associados a cada evento com esse recurso ativado.

d1a37589d54bca6b.png

11. Receber insights do relatório de eventos

Como você adicionou alguns eventos ao jogo, já é possível responder às perguntas sobre o comportamento do usuário. Confira alguns insights que você pode receber do relatório de eventos do Firebase.

Qual nível tem o maior número de respostas erradas?

Para responder a essa pergunta, descubra quantos eventos level_wrong_answer foram acionados por nível.

Clique no level_wrong_answer no relatório de eventos. No relatório de eventos level_wrong_answer, encontre o card level_name. Os valores associados ao parâmetro level_name vão aparecer no card da seguinte forma.

25da426bbc0c612c.png

De acordo com a captura de tela acima, é fácil descobrir que o horizonte tem o maior número de respostas erradas, o que significa que é difícil para os usuários em comparação com os outros níveis.

Com base no insight que você teve aqui, é possível decidir não oferecer níveis difíceis para usuários iniciantes e manter uma alta taxa de retenção.

Em média, quantas tentativas foram feitas para passar de fase?

No Awesome Drawing Quiz, os usuários podem enviar a resposta de cada nível quantas vezes quiserem.

Como você ativou os relatórios de parâmetros no parâmetro number_of_attempts do evento level_success, é possível conferir as métricas detalhadas desse parâmetro.

Clique no evento level_success no relatório de eventos. No relatório de eventos level_success, encontre o card number_of_attemps. O número médio de tentativas vai aparecer no card da seguinte forma:

43de290f9f1a0ac9.png

Use esse insight para otimizar a dificuldade média do jogo. Por exemplo, se o número médio de tentativas estiver muito próximo de 1, considere tornar o jogo um pouco mais desafiador.

Os usuários tentaram resolver a questão recebendo uma dica, mesmo que não tenham conseguido passar de um nível no final?

Quando um usuário decide pular um nível, um evento level_fail é acionado. Há muitos motivos para a decisão do usuário.

No entanto, como o jogo pode dar uma dica depois que o usuário assiste um anúncio em vídeo premiado, é importante saber se ele tentou passar de fase com a ajuda da dica, pelo menos.

Clique no evento level_fail no relatório de eventos. No relatório de eventos level_fail, encontre o card hint_used. Você vai ver o número médio de parâmetros de evento hint_used. Quando uma dica é usada, ela é definida como 1. Quando não é usada, ela é definida como 0.

313814372cd7c8a4.png

Se os números no card hint_used estiverem próximos de zero, isso indica que a recompensa (dica) não é muito atraente para os usuários. Além disso, você perde a oportunidade de aumentar a receita com anúncios em vídeo premiados.

Portanto, considere tornar a recompensa mais útil para os usuários, para que eles possam se envolver mais profundamente com o jogo e aumentar a receita dos anúncios em vídeo premiados.

Em média, quantas fases foram concluídas em cada jogo?

Cada jogo do Awesome Drawing Quiz tem seis níveis. Quando o usuário termina seis níveis (não importa se ele passou ou não em cada um), um evento game_complete é acionado com number_of_correct_answers como parâmetro.

Como number_of_correct_answers indica quantos níveis o usuário concluiu (deu uma resposta correta), é possível encontrar a resposta analisando as métricas do parâmetro number_of_correct_answers.

Clique no evento game_complete no relatório de eventos. No relatório de eventos game_complete, encontre o card number_of_correct_answers. Você vai ver o número médio de parâmetros de evento number_of_correct_answers.

d9eeaa019d1bceb4.png

Se o número médio de níveis concluídos for muito baixo, considere reorganizar o jogo para ajudar as pessoas a passar de um nível e continuar jogando sem perder o interesse.

12. Pronto!

Você concluiu o codelab do Unity AdMob+Firebase 101. O código completo deste codelab está na pasta android_studio_folder.png101-complete_and_102-base.

Na próxima parte do codelab AdMob + Firebase, você vai aprender a usar um funil para visualizar o fluxo de eventos do app. Além disso, vamos mostrar como usar a Configuração remota e o Teste A/B para otimizar o valor de parâmetro no jogo sem precisar de uma atualização do app.