AdMob+Firebase 101 Unity: configurazione e Nozioni di base su Analytics

1. Introduzione

Gli annunci sono una parte fondamentale dell'esperienza utente complessiva della tua app. Le implementazioni di annunci efficaci possono contribuire a migliorare l'esperienza complessiva dell'app e persino la fidelizzazione e il coinvolgimento degli utenti. Ad esempio, gli annunci con premio ti consentono di premiare gli utenti con valuta o elementi in-app per la visualizzazione di annunci video, in modo che possano raggiungere nuove vette dove altrimenti potrebbero bloccarsi e abbandonare l'app.

Tuttavia, creare un'esperienza pubblicitaria eccellente non è facile. Potresti avere domande come: con quale frequenza devo mostrare questi annunci? Dove e quando dovresti mostrarli? Quale dovrebbe essere il premio? Purtroppo, la risposta varia da app ad app e da posizionamento a posizionamento. Non esiste una risposta univoca.

Con Google Analytics for Firebase, AdMob e diversi altri strumenti potenti ma facili da usare offerti da Firebase, la messa a punto della tua app in modo basato sui dati è diventata molto più semplice e snella. Oggi ti mostreremo come iniziare.

Cosa creerai

Questo codelab è il primo di tre che ti guideranno nella creazione di un'app chiamata Awesome Drawing Quiz, un gioco che consente ai giocatori di indovinare il nome del disegno. Mostrerà come incorporare gli annunci con premio e i servizi Firebase nel tuo gioco.

In questo codelab, integrerai Google Analytics for Firebase per registrare alcuni eventi importanti dell'app. Inoltre, imparerai a leggere l'analisi dell'app mostrata nella console Firebase.

Cosa imparerai a fare

  • Come configurare Google Analytics for Firebase nella tua app
  • Come registrare gli eventi delle app
  • Come leggere le analisi delle app mostrate nella console Firebase

Che cosa ti serve

  • Unity 2018.4.4f1 o versioni successive
  • Xcode 10 o versioni successive (per creare il target per iOS)
  • Un Account Google
  • Un dispositivo di test con Android 5.0 o versioni successive con un cavo USB per collegare il dispositivo o un emulatore Android che esegue AVD(Android Virtual Device) con un'immagine di sistema che supporta Play Store/API di Google
  • Un dispositivo iOS o un simulatore con iOS 8.0 o versioni successive

Come valuteresti il tuo livello di esperienza con AdMob?

Principiante Intermedio Avanzato

Come valuteresti il tuo livello di esperienza con Firebase?

Principiante Intermedio Avanzato

2. Configurare l'ambiente di sviluppo

Scarica il codice

Fai clic sul pulsante seguente per scaricare tutto il codice per questo codelab:

Decomprimi il file ZIP scaricato. Verrà estratta una cartella radice denominata admob-firebase-codelabs-unity-master.

...o clona il repository GitHub dalla riga di comando.

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

Il repository contiene quattro cartelle:

  • android_studio_folder.png101-base: codice iniziale che verrà creato in questo codelab.
  • android_studio_folder.png101-complete_and_102-base: codice completato per questo codelab e codice iniziale per il codelab 102.
  • android_studio_folder.png102-complete: codice completato per il codelab 102.

Preparare i file richiesti

Il quiz sui disegni fantastici utilizza diversi codici open source, necessari per compilare ed eseguire il progetto.

Apri il terminale e vai alla directory radice del repository. Quindi, esegui ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles su Windows) dal terminale per copiare i file richiesti nel progetto.

Importare l'app iniziale

Avvia Unity, scegli "Apri" nella schermata di benvenuto. Poi seleziona la directory 101-base dal codice che hai scaricato.

Ora dovresti avere il progetto aperto in Unity.

3. (Facoltativo) Configurare l'unità pubblicitaria video con premio

Per comodità, l'app iniziale include già un'unità pubblicitaria video con premio dedicata. Se non vuoi crearne uno nuovo nel tuo account AdMob, puoi saltare questo passaggio.

Configurazione per Android

Per creare una nuova app AdMob nel tuo account, segui le istruzioni riportate di seguito:

  1. Vai alla console AdMob.
  2. Nel menu App, fai clic su "Aggiungi app".
  3. Quando ti viene chiesto "Hai pubblicato la tua app su Google Play o sull'App Store?", rispondi "NO".
  4. Assegna all'app il nome "Awesome Drawing Quiz",scegli "Android" come piattaforma, poi fai clic su "Aggiungi".

Dopo aver creato un'app AdMob nel tuo account, segui i passaggi descritti di seguito per creare una nuova unità pubblicitaria video con premio.

  1. Fai clic sul menu App nel frontend di AdMob, quindi seleziona "Awesome Drawing Quiz" dall'elenco delle app.
  2. Fai clic sul menu Unità pubblicitarie, poi su AGGIUNGI UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.
  3. Seleziona Con premio per il formato dell'annuncio.

7672f41ec611101b.png

  1. Fornisci il nome dell'unità pubblicitaria che preferisci. Poi, imposta l'importo del premio su 1 e l'elemento del premio su "suggerimento" (questo è il premio che l'app attualmente offre agli utenti). e fai clic su CREA UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.

6d067814a2c38264.png

  1. Una volta creato correttamente, vedrai le istruzioni come segue.

4bc1b3b341a5a81c.png

  1. Torna al progetto Unity e aggiorna le costanti dell'ID app AdMob e dell'ID unità pubblicitaria con quelle che hai creato nel passaggio precedente.

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

        ...
    }
}

Configurazione per iOS

Per creare una nuova app AdMob nel tuo account, segui le istruzioni riportate di seguito:

  1. Vai alla console AdMob.
  2. Nel menu App, fai clic su "Aggiungi app".
  3. Quando ti viene chiesto "Hai pubblicato la tua app su Google Play o sull'App Store?", rispondi "NO".
  4. Assegna all'app il nome "Awesome Drawing Quiz",scegli "iOS" come piattaforma, poi fai clic su "Aggiungi".

Dopo aver creato un'app AdMob nel tuo account, segui i passaggi descritti di seguito per creare una nuova unità pubblicitaria video con premio.

  1. Fai clic sul menu App nel frontend di AdMob, quindi seleziona "Awesome Drawing Quiz" dall'elenco delle app.
  2. Fai clic sul menu Unità pubblicitarie, poi su AGGIUNGI UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.
  3. Seleziona Con premio per il formato dell'annuncio.

7672f41ec611101b.png

  1. Fornisci il nome dell'unità pubblicitaria che preferisci. Poi, imposta l'importo del premio su 1 e l'elemento del premio su "suggerimento" (questo è il premio che l'app attualmente offre agli utenti). e fai clic su CREA UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.

6d067814a2c38264.png

  1. Una volta creato correttamente, vedrai le istruzioni come segue.

4bc1b3b341a5a81c.png

  1. Torna al progetto Unity e aggiorna le costanti dell'ID app AdMob e dell'ID unità pubblicitaria con quelle che hai creato nel passaggio precedente.

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. Aggiungere il plug-in Unity Google Mobile Ads

Importare il plug-in

Per pubblicare annunci AdMob nell'app Unity, devi aggiungere il plug-in Unity di Google Mobile Ads al progetto.

  1. Scarica il pacchetto Google Mobile Ads Unity Plugin 3.18.1. Tieni presente che questo codelab potrebbe non essere compatibile con l'altra versione del plug-in.
  2. Nel progetto Unity Awesome Drawing Quiz. Nel progetto, vai a Assets > Import Package > Custom Package (Risorse > Importa pacchetto > Pacchetto personalizzato).
  3. Importa GoogleMobileAds.unitypackage nel progetto che hai scaricato.

Configurare l'ID app AdMob

Nell'editor Unity, seleziona Asset > Google Mobile Ads > Impostazioni dal menu.

44fc84fe88235c1f.png

Attiva AdMob selezionando la casella di controllo Attivato nella sezione Google AdMob. Poi inserisci l'ID app AdMob nel seguente modo:

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

a6ad7402d4daf330.png

5. Configura il progetto Firebase

Crea un nuovo progetto dalla console Firebase

  1. Vai alla Console Firebase.
  2. Seleziona Aggiungi progetto e assegna al progetto il nome "Awesome Drawing Quiz" (Quiz di disegno fantastico).

Aggiungere l'app Unity

  1. Nella schermata di panoramica del nuovo progetto, fai clic su Aggiungi Firebase alla tua app Unity.
  2. Seleziona la casella di controllo Registra come app iOS.
  3. Inserisci l'ID bundle iOS come: com.codelab.awesomedrawingquiz.unity
  4. Fornisci un nickname per l'app nel seguente formato: Awesome Drawing Quiz (Unity on iOS)
  5. Seleziona la casella di controllo Registra come app Android.
  6. Inserisci il nome del pacchetto Android nel seguente formato: com.codelab.awesomedrawingquiz.unity
  7. Fornisci un nickname dell'app come: Awesome Drawing Quiz (Unity su Android)
  8. Seleziona Registra app per registrare le app per Android e iOS.

Aggiungi i file di configurazione di Firebase al progetto Unity

Successivamente, verrà visualizzata una schermata in cui potrai scaricare un file di configurazione che contiene tutti i metadati Firebase necessari per la tua app. Scarica i file google-service.json e GoogleService-Info.plist, quindi spostali entrambi nella cartella Assets di android_studio_folder.png nel progetto Unity.

331c165d80ba105e.png

Aggiungi l'SDK Firebase Analytics

  1. Scarica l'SDK Firebase Unity 5.5.0 e decomprimilo in un percorso semplice da raggiungere.
  2. Apri il progetto Unity Awesome Drawing Quiz, vai a Assets > Import Package > Custom Package (Risorse > Importa pacchetto > Pacchetto personalizzato).
  3. Dall'SDK non compresso, importa l'SDK Remote Config (dotnet4/FirebaseAnalytics.unitypackage).
  4. Nella finestra Import Unity package (Importa il pacchetto Unity), fai clic su Importa.

6. Collegare AdMob al progetto Firebase

Completa i passaggi riportati di seguito per collegare le app a Firebase.

  1. Accedi al tuo account AdMob alla pagina https://apps.admob.com.
  2. Fai clic su App nella barra laterale.
  3. Seleziona "Awesome Drawing Quiz" (Quiz di disegno fantastico). Se non è disponibile nell'elenco delle app recenti, puoi fare clic su Visualizza tutte le app per cercare un elenco di tutte le app aggiunte ad AdMob.
  4. Fai clic su Impostazioni app nella barra laterale.
  5. Fai clic su Collega a Firebase.
  6. Seleziona l'opzione "Collega a un progetto Firebase esistente e crea una nuova app Firebase". Poi seleziona il progetto "Awesome Drawing Quiz" dal menu a discesa.
  7. Dopo aver fatto clic sul pulsante "CONTINUA", visualizzerai il messaggio "Collegamento riuscito". Fai clic sul pulsante "FINE" per terminare.

Una volta collegata l'app AdMob al progetto Firebase, verranno sbloccate alcune funzionalità aggiuntive sia nella console AdMob sia in quella Firebase, come segue:

Scheda Entrate (AdMob)

Nella scheda Entrate puoi avere una visione olistica di tutti i possibili flussi di entrate in un unico posto. Le fonti di entrate supportate sono le seguenti:

  • AdMob (stimato)
  • Reti pubblicitarie con mediazione (osservate)
  • Acquisti in-app
  • Acquisti e-commerce

10fe118249e11150.png

Scheda Metriche utente (AdMob)

Nella scheda delle metriche utente, puoi vedere in che modo le modifiche apportate all'esperienza degli annunci potrebbero influire sul comportamento degli utenti.

5f56366f1b31d4a1.png

Report sugli annunci con premio (AdMob)

Il report sugli annunci con premio offre una serie di metriche che aiutano i publisher a capire come gli utenti interagiscono con i loro annunci con premio.

658a2868777690ea.png

Scheda Entrate totali (Firebase)

Dopo aver collegato l'app AdMob a Firebase, la scheda Entrate totali nella dashboard Firebase mostrerà le entrate di AdMob insieme agli acquisti in-app e agli acquisti e-commerce.

98cb283977b023a.png

Report sugli eventi annuncio (Firebase)

Gli eventi specifici degli annunci (eventi di clic, impressione e premio) vengono raccolti automaticamente e sono disponibili per l'utilizzo in Google Analytics for Firebase.

bf77bd8c00c1441b.png

7. Esegui il progetto

Una volta compilato ed eseguito il progetto, all'avvio dell'app verrà visualizzata la seguente schermata.

f5fbf4565c5d8647.png

Dopo aver fatto clic su "INIZIA UNA PARTITA", vedrai un disegno sullo schermo. La tua missione è indovinare il nome del disegno utilizzando il suggerimento visualizzato in alto, da cui puoi dedurre la prima lettera e la lunghezza del nome del disegno.

bbdf4d23fb08a519.png ad82d7e657945c4d.png

Se non hai idea di quale sia il nome del disegno, puoi saltare il livello facendo clic sul pulsante "SALTA".

Potresti volere un indizio aggiuntivo che ti aiuti a indovinare la risposta. Puoi ottenere un indizio aggiuntivo facendo clic sul pulsante "SUGGERIMENTO" e guardando un annuncio video con premio. Dopo aver completato la visualizzazione dell'annuncio, una lettera extra verrà rivelata come premio.

8c33687361f83a13.png b048d6587c10e9df.png

8. Aggiungere eventi app

Per comprendere a fondo il percorso dell'utente nel quiz Disegno fantastico,definisci alcuni eventi personalizzati che monitorano il comportamento dell'utente nel gioco nel seguente modo:

Nome evento

Attivato…

Parametri

game_start

Quando un utente inizia una nuova partita.

nessuno

level_start

Quando un utente inizia un nuovo livello (un nuovo quiz di disegno) all'interno di una fase. (ci sono 6 livelli in una fase)

level_name

level_wrong_answer

Quando un utente invia una risposta errata.

level_name

ad_reward_prompt

Quando un utente tocca il pulsante del suggerimento e viene invitato a guardare un annuncio video con premio.

ad_unit_id

ad_reward_impression

Quando un utente inizia a guardare un annuncio video con premio.

ad_unit_id

level_success

Quando un utente invia una risposta corretta (completa un livello).

level_name, number_of_attempts, elapsed_time_sec, hint_used

level_fail

Quando un utente salta un livello.

level_name, number_of_attempts, elapsed_time_sec, hint_used

game_complete

Al termine della partita

number_of_correct_answers

Di seguito è riportata la descrizione di ogni parametro associato a ogni evento:

Nome evento

Nome parametro

Descrizione

level_start

level_name

Nome del disegno mostrato nel livello (ad es. "banana")

level_wrong_answer

level_name

Nome del disegno mostrato nel livello (ad es. "banana")

ad_reward_prompt

ad_unit_id

Un ID unità pubblicitaria utilizzato per visualizzare un annuncio video con premio

ad_reward_impression

ad_unit_id

Un ID unità pubblicitaria utilizzato per visualizzare un annuncio video con premio

level_success

level_name

Nome del disegno mostrato nel livello (ad es. "banana")

level_success

number_of_attempts

Numero di tentativi effettuati per superare un livello

level_success

elapsed_time_sec

Tempo trascorso per completare un livello, in secondi

level_success

hint_used

Se un utente ha utilizzato un suggerimento (ha guardato un annuncio video con premio) o meno per superare un livello (1: ha utilizzato un suggerimento / 0: ha superato un livello senza un suggerimento)

level_fail

level_name

Nome del disegno mostrato nel livello (ad es. "banana")

level_fail

number_of_attempts

Numero di tentativi effettuati per superare un livello

level_fail

elapsed_time_sec

Tempo trascorso per completare un livello, in secondi

level_fail

hint_used

Se un utente ha utilizzato un suggerimento (ha guardato un annuncio video con premio) o meno per superare un livello (1: ha utilizzato un suggerimento / 0: ha superato un livello senza un suggerimento)

game_complete

number_of_correct_answers

Numero di livelli completati nel gioco

Creare una classe helper per registrare eventi personalizzati

Per registrare facilmente l'evento di Analytics, creerai una classe helper per gestire gli eventi personalizzati.

Per prima cosa, crea una nuova cartella nella cartella Assets/Scripts e chiamala Analytics. Quindi crea un nuovo script C# e chiamalo QuizAnalytics.cs nella cartella Analytics.

Aggiungi il codice riportato di seguito al file 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);
        }
    }
}

Registrare gli eventi di analisi nel gioco

Apri il file Game.cs nella cartella Assets/Scripts/Scenes. Per utilizzare la classe QuizAnalytics, che si trova nello spazio dei nomi AwesomeDrawingQuiz.Analytics, aggiungi la direttiva using nel seguente modo.

Scenes/Game.cs

using AwesomeDrawingQuiz.Ads;

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

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

Successivamente, nella funzione Start(), chiama QuizAnalytics.SetScreenName() per modificare il nome della schermata corrente. Inoltre, chiama il QuizAnalytics.LogGameStart() per indicare che una partita è iniziata.

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

Successivamente, nelle funzioni di callback, aggiungi chiamate per registrare eventi personalizzati nel seguente modo:

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

    ...
}

Infine, aggiorna il file Main.cs nella cartella Assets/Scripts/Scenes. Prima di chiamare qualsiasi metodo nell'SDK Firebase, devi assicurarti che Firebase sia pronto.

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. Eseguire il debug degli eventi di analisi

Puoi utilizzare DebugView per verificare che gli eventi vengano registrati correttamente. DebugView ti consente di visualizzare i dati degli eventi non elaborati registrati dalla tua app sui dispositivi di sviluppo quasi in tempo reale.

È molto utile per la convalida durante la fase di strumentazione dello sviluppo e può aiutarti a scoprire errori e sviste nell'implementazione di Analytics.

Attivare la modalità di debug su Android

In genere, gli eventi registrati nella tua app vengono raggruppati in batch per un periodo di circa un'ora e caricati insieme. Per convalidare l'implementazione di Analytics al volo, devi attivare la modalità di debug sul tuo dispositivo di sviluppo per caricare gli eventi con ritardi minimi.

Per prima cosa, apri lo strumento Terminale in Android Studio. Si trova nella barra degli strumenti in basso.

c8dc1b4f08a224b8.png

Quindi esegui il seguente comando (assicurati che il dispositivo Android di test sia connesso al computer o che Android Emulator sia in esecuzione):

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

Questo comportamento persiste finché non disattivi in modo esplicito la modalità di debug tramite il seguente comando:

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

Attivare la modalità di debug su iOS

Per attivare la modalità di debug di Analytics sul tuo dispositivo di sviluppo, specifica il seguente argomento della riga di comando in Xcode:

-FIRDebugEnabled

Questo comportamento persiste finché la modalità di debug non viene disattivata esplicitamente tramite il seguente argomento della riga di comando:

-FIRDebugDisabled

Eseguire il debug degli eventi Analytics con DebugView

Dopo aver attivato la modalità di debug sul dispositivo di test, vai alla console Firebase e seleziona DebugView dal menu. Poi, sul dispositivo di test, gioca per vedere gli eventi registrati e visualizzati nel report DebugView.

827059255d09ac00.png

Puoi accedere a informazioni dettagliate su ogni evento facendo clic sul nome dell'evento. Ad esempio, lo screenshot seguente mostra i dettagli dei parametri associati all'evento level_start.

475db00d05d03ab8.png

Per saperne di più, consulta questo articolo del Centro assistenza di DebugView.

10. Attiva i report sui parametri

Google Analytics for Firebase raccoglierà per impostazione predefinita il numero totale di conteggi degli eventi, ma la generazione di report per i parametri personalizzati deve essere attivata esplicitamente per ogni parametro evento che ti interessa. Una volta attivata questa opzione, Google Analytics per Firebase mostrerà schede aggiuntive per visualizzare le statistiche relative ai parametri personalizzati.

Per registrare i parametri personalizzati per un evento:

  1. Vai alla console Firebase e seleziona il progetto Awesome Drawing Quiz che hai creato in precedenza.
  2. Fai clic su Eventi nel menu di navigazione.
  1. Nella riga relativa all'evento da modificare, fai clic su 73afe611adf58774.png> Modifica parametro per rapporto.

aad40de06ee0c3ad.png

  1. Nel campo Inserisci nome parametro, inserisci il nome del parametro da registrare.

Nota: se non viene trovata alcuna corrispondenza, inserisci il nome del parametro e fai clic su AGGIUNGI.e066c761aae4797f.png 5. Fai riferimento alla tabella riportata di seguito e imposta il campo Tipo su Testo o Numero di conseguenza. Per i parametri numerici, assicurati di impostare anche il campo Unità di misura. 6. Fai clic sul pulsante SALVA per completare la configurazione.

Attiva il reporting dei parametri per ogni evento elencato di seguito.

Nome evento

Nome parametro

Tipo di parametro

Unità di misura

level_start

level_name

Testo

N/D

level_wrong_answer

level_name

Testo

N/D

level_success

level_name

Testo

N/D

level_success

number_of_attempts

Numero

Standard

level_success

elapsed_time_sec

Numero

Secondi

level_success

hint_used

Numero

Standard

level_fail

level_name

Testo

N/D

level_fail

number_of_attempts

Numero

Standard

level_fail

elapsed_time_sec

Numero

Secondi

level_fail

hint_used

Numero

Standard

game_complete

number_of_correct_answers

Numero

Standard

Il seguente esempio mostra la configurazione dei report sui parametri personalizzati per l'evento level_success:

6d569c8c27df2914.png

Una volta completata la configurazione dei report sui parametri, potrai visualizzare i parametri associati a ogni evento per cui è attivata la generazione di report sui parametri.

d1a37589d54bca6b.png

11. Ottenere approfondimenti dal report Eventi

Dopo aver aggiunto alcuni eventi nel gioco, dovresti essere in grado di rispondere alle domande relative al comportamento degli utenti del gioco. Ecco alcuni approfondimenti che puoi ottenere dal report sugli eventi Firebase.

Quale livello ha il maggior numero di risposte errate?

Per rispondere a questa domanda, devi scoprire quanti eventi level_wrong_answer sono stati attivati per ogni livello.

Fai clic su level_wrong_answer nel report sugli eventi. Nel report sugli eventi level_wrong_answer, trova la scheda level_name. Vedrai i valori associati al parametro level_name nella scheda nel seguente modo.

25da426bbc0c612c.png

Secondo lo screenshot riportato sopra, puoi scoprire facilmente che Orizzonte ha il numero più alto di risposte errate, il che significa che è difficile per gli utenti rispetto agli altri livelli.

Utilizzando le informazioni che hai ottenuto qui, puoi decidere di non fornire livelli difficili agli utenti alle prime armi per mantenere un tasso di fidelizzazione elevato.

Quanti tentativi sono stati effettuati per superare un livello, in media?

Nel quiz di disegno fantastico, gli utenti possono inviare la risposta a ogni livello tutte le volte che vogliono.

Poiché hai attivato i report sui parametri per il parametro number_of_attempts nell'evento level_success, puoi visualizzare le metriche dettagliate per questo parametro.

Fai clic sull'evento level_success nel report sugli eventi. Nel report sugli eventi level_success, trova la scheda number_of_attemps. Nella scheda vedrai il numero medio di tentativi nel seguente modo:

43de290f9f1a0ac9.png

Da qui puoi utilizzare le informazioni per ottimizzare la difficoltà media del gioco. Ad esempio, se il numero medio di tentativi è troppo vicino a 1, potresti valutare la possibilità di rendere il gioco un po' più impegnativo.

Gli utenti hanno provato a risolvere la domanda ricevendo un suggerimento, anche se alla fine non sono riusciti a superare un livello?

Quando un utente decide di saltare un livello, viene attivato un evento level_fail. I motivi della decisione dell'utente possono essere molti.

Tuttavia, poiché il gioco può fornire un suggerimento dopo che l'utente ha guardato un annuncio video con premio, è importante sapere se l'utente ha provato a superare il livello almeno con l'aiuto del suggerimento.

Fai clic sull'evento level_fail nel report sugli eventi. Nel report sugli eventi level_fail, trova la scheda hint_used. Vedrai il numero medio di parametri evento hint_used. Tieni presente che quando viene utilizzato un suggerimento, il valore è impostato su 1, mentre è impostato su 0 quando non è stato utilizzato.

313814372cd7c8a4.png

Se i numeri sulla scheda hint_used sono vicini a 0, significa che la ricompensa (suggerimento) non è molto attraente per gli utenti. Inoltre, stai perdendo l'opportunità di aumentare le entrate derivanti dagli annunci video con premio.

Pertanto, dovresti considerare di rendere il premio più utile per gli utenti, in modo che possano interagire più a fondo con il gioco e aumentare le entrate derivanti dagli annunci video con premio.

In media, quanti livelli sono stati completati in ogni partita?

In totale ci sono 6 livelli per ogni gioco del quiz Awesome Drawing. Una volta completati sei livelli (indipendentemente dal fatto che li abbia superati o meno), viene attivato un evento game_complete con number_of_correct_answers come parametro.

Poiché number_of_correct_answers indica il numero di livelli superati dall'utente (che ha fornito una risposta corretta), puoi trovare la risposta esaminando le metriche del parametro number_of_correct_answers.

Fai clic sull'evento game_complete nel report sugli eventi. Nel report sull'evento game_complete, trova la scheda number_of_correct_answers. Vedrai il numero medio di parametri evento number_of_correct_answers.

d9eeaa019d1bceb4.png

Se il numero medio di livelli superati è troppo basso, dovresti prendere in considerazione la possibilità di riorganizzare il gioco per aiutare le persone a superare un livello, in modo che possano continuare a giocare senza perdere interesse.

12. Operazione completata.

Hai completato il Codelab AdMob+Firebase 101 Unity. Puoi trovare il codice completato per questo codelab nella cartella android_studio_folder.png101-complete_and_102-base.

Nella parte successiva del Codelab AdMob+Firebase, imparerai a utilizzare una canalizzazione per visualizzare il flusso degli eventi dell'app. Inoltre, verrà illustrato come utilizzare Remote Config e i test A/B per ottimizzare il valore del parametro nel gioco senza un aggiornamento dell'app.