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

1. Introduzione

Gli annunci sono una parte fondamentale dell'esperienza utente complessiva della tua app. Implementazioni di annunci efficaci possono contribuire a migliorare l'esperienza complessiva con l'app e persino la fidelizzazione e il coinvolgimento degli utenti. Ad esempio, gli annunci con premio ti consentono di offrire agli utenti valuta in-app o elementi per guardare gli annunci video, in modo che possano raggiungere nuove vette dove altrimenti si bloccavano e si sarebbero abbandonati.

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

Con Google Analytics per Firebase, AdMob e molti altri strumenti potenti ma intuitivi offerti da Firebase, ottimizzare la tua app in base ai dati è diventato molto più semplice e intuitivo. Oggi, ti mostreremo come iniziare.

Cosa creerai

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

In questo codelab, integrerai Google Analytics per Firebase per registrare alcuni eventi app importanti. Inoltre, imparerai a leggere i dati e le analisi dell'app visualizzati nella Console Firebase.

Se riscontri problemi (bug del codice, errori grammaticali, parole poco chiare e così via) mentre lavori con il codelab, segnalali tramite il link Segnala un errore nell'angolo in basso a sinistra del codelab.

Cosa imparerai a fare

  • Come configurare Google Analytics per Firebase nella tua app
  • Come registrare gli eventi dell'app
  • Come leggere i dati e le analisi dell'app visualizzati nella Console Firebase

Che cosa ti serve

  • Android Studio versione 4.1 e successive
  • Un Account Google
  • Un dispositivo di test con Android 5.0 o versioni successive con un cavo USB per collegare il dispositivo oppure un emulatore Android che esegue la funzionalità AVD (Android Virtual Device) con un'immagine di sistema che supporti le API del Play Store/Google

Come giudichi il tuo livello di esperienza con AdMob?

Principiante Livello intermedio Eccellente

Come giudichi il tuo livello di esperienza con Firebase?

Principiante Livello intermedio Eccellente

2. Configura l'ambiente di sviluppo

Scarica il codice

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

Apri il file ZIP scaricato. Verrà decompressa una cartella principale denominata admob-firebase-codelabs-android.

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

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

Il repository contiene quattro cartelle:

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

Importa l'app iniziale

Avvia Android Studio e scegli "Importa progetto" nella schermata di benvenuto. Quindi seleziona la directory 101-base dal codice che hai scaricato.

Ora il progetto dovrebbe essere aperto in Android Studio.

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

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

Per creare una nuova app AdMob nel tuo account:

  1. Vai alla Console AdMob.
  2. Dal menu App, fai clic su "Aggiungi app".
  3. Quando ti viene chiesto "Hai pubblicato la tua app su Google Play o nell'App Store?", Rispondi "NO".
  4. Assegna all'app il nome "Quiz su Disegni Affascinanti" Scegli "Android" come Piattaforma e fai clic su "Aggiungi".

Una volta creata un'app AdMob nel tuo account, attieniti alla procedura descritta di seguito per creare una nuova unità pubblicitaria video con premio.

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

7672f41ec611101b.png

  1. Specifica il nome dell'unità pubblicitaria che preferisci. Dopodiché, imposta l'importo del premio su 1 e l'articolo su "hint" (si tratta del premio attualmente offerto dall'app agli utenti). Fai clic su CREA UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.

6d067814a2c38264.png

  1. Una volta creata correttamente, vedrai istruzioni simili alla seguente: ff872a005a07b75e.png
  2. Torna al progetto Android e aggiorna l'ID app e l'ID unità pubblicitaria AdMob con quelli che hai creato nel passaggio precedente.

strings.xml

<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>

GameActivity.kt

// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

4. Configura progetto Firebase

Creare un nuovo progetto dalla Console Firebase

  1. Vai alla Console Firebase.
  2. Seleziona Aggiungi progetto e assegna al progetto il nome "Quiz di Disegno Affascinante". Assicurati che il pulsante di opzione Attiva Google Analytics per questo progetto sia attivato.
  3. Seleziona l'account Google Analytics che intendi utilizzare. Nella maggior parte dei casi, è sufficiente selezionare l'opzione Account predefinito per Firebase, ma se vuoi utilizzare un altro account Google Analytics, selezionalo qui.
  4. Fai clic su Crea progetto.

Aggiungi l'app per Android

  1. Nella schermata della panoramica del nuovo progetto, fai clic su Aggiungi Firebase alla tua app Android.
  2. Inserisci il nome del pacchetto del codelab: com.codelab.awesomedrawingquiz
  3. Imposta un nickname per la tua app: Quiz di Disegno a sorpresa
  4. Lascia vuoto il campo SHA-1 poiché SHA-1 non è obbligatorio per questo progetto.
  5. Seleziona Registra app per registrare l'app.

Aggiungi il file google-services.json alla tua app

Viene visualizzata una schermata in cui puoi scaricare un file di configurazione contenente tutti i metadati Firebase necessari per la tua app. Fai clic su Scarica google-service.json e copia il file nella directory android_studio_folder.pngapp del tuo progetto.

32419a0fa25a1405.png

Dichiara le versioni delle dipendenze

Inizia aggiungendo la versione di ogni dipendenza richiesta per integrare Firebase nel progetto. Apri il file dependencies.gradle che si trova nella directory principale del progetto, poi aggiungi il plug-in Google Services, l'SDK Firebase Analytics e la versione dell'SDK Firebase Core.

dependencies.gradle

ext {
    ...

    // TODO: Declare google-services plugin version (101)
    googleServicesPluginVersion = '4.3.4'

    ...

    // TODO: Declare Firebase BOM version (101)                                                                                                                                                                                                   
    firebaseBomVersion = '26.2.0'

    ...
}

Applica il plug-in google-services alla tua app

Il plug-in google-services utilizza il file google-services.json per configurare la tua applicazione per l'utilizzo di Firebase.

Aggiungi google-services come classpath nel file build.gradle che si trova nella directory principale del progetto.

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ...
    
    dependencies {
        classpath "com.android.tools.build:gradle:$androidPluginVersion"

        // TODO: Add google-services plugin (101)
        classpath "com.google.gms:google-services:$googleServicesPluginVersion"

        ...
    }
}

...

Quindi, applica il plug-in google-services aggiungendo una riga nel file app/build.gradle in questo modo:

app/build.gradle

apply plugin: 'com.android.application'

// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'

android {
    ...
}

dependencies {
    ...
}

Aggiungi l'SDK Firebase al progetto

Sempre nel file app/build.gradle, aggiungi l'SDK Analytics alle dipendenze dell'app.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Import the Firebase BoM (101)
    implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")

    // COMPLETE: Add Firebase Analytics dependency (101)
    implementation 'com.google.firebase:firebase-analytics-ktx'

    ...
}

...

Sincronizza il tuo progetto con i file Gradle

Per assicurarti che tutte le dipendenze siano disponibili per la tua app, sincronizza il tuo progetto con i file Gradle. Seleziona File > Menu Sincronizza progetto con file Gradle per sincronizzare il progetto con i file Gradle.

5. Collega AdMob al progetto Firebase

Per collegare le tue app a Firebase, procedi nel seguente modo.

  1. Accedi al tuo account AdMob alla pagina https://apps.admob.com.
  2. Fai clic su App nella barra laterale.
  3. Seleziona "Quiz su disegni fantastici". Se non la vedi nell'elenco delle app recenti, puoi fare clic su Visualizza tutte le app per cercare un elenco di tutte le app che hai aggiunto 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". Quindi seleziona il progetto "Awesome Drawing Quiz" dal menu a discesa.
  7. Dopo aver fatto clic sul pulsante "CONTINUA", verrà visualizzato 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 sulla console AdMob sia sulla console Firebase, come indicato di seguito:

Scheda delle entrate (AdMob)

Nella scheda Entrate puoi esaminare una panoramica globale di tutti i possibili flussi di entrate in un unico posto. Le fonti di entrate supportate sono le seguenti:

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

10fe118249e11150.png

Scheda Metriche utente (AdMob)

Nella scheda Metriche utente, puoi vedere in che modo le modifiche all'esperienza pubblicitaria 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 in che modo gli utenti interagiscono con i loro annunci con premio.

658a2868777690ea.png

Scheda Entrate totali (Firebase)

Una volta collegata l'app AdMob a Firebase, nella scheda Entrate totali nella dashboard di Firebase verranno visualizzate le entrate generate da AdMob insieme agli acquisti in-app e agli acquisti e-commerce.

98cb283977b023a.png

Report sugli eventi relativi agli annunci (Firebase)

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

bf77bd8c00c1441b.png

6. Esegui il progetto

Dopo aver compilato ed eseguito il progetto, vedrai la seguente schermata all'avvio dell'app.

15f1d8041988974c.png

Dopo aver fatto clic su INIZIA UN GIOCO,vedrai un disegno sullo schermo. La tua missione è indovinare il nome del disegno utilizzando il suggerimento visualizzato nella parte superiore, da cui puoi dedurre la prima lettera e la lunghezza del nome del disegno.

8e87e96256d6874a.png 9c4a0143c3234cb2.png

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

Potresti volere un ulteriore indizio che ti aiuti a indovinare la risposta. Puoi avere un indizio in più facendo clic sul pulsante "HINT" e guardando un annuncio video con premio. Una volta completata la visione dell'annuncio, verrà visualizzata un'ulteriore lettera come premio.

edcf6f0d833ea4ea.png 47ab9a07b1c71711.png

7. Aggiungi eventi app

Per comprendere a fondo il percorso dell'utente nel Quiz di Awesome Drawing, definirai alcuni eventi personalizzati che monitorano il comportamento dell'utente nel gioco, come indicato di seguito:

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 con disegno) all'interno di una fase. (ci sono 6 livelli in una fase)

level_name

level_wrong_answer

Quando un utente invia una risposta sbagliata.

level_name

ad_reward_prompt

Quando un utente tocca il pulsante del suggerimento e gli viene chiesto di 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 (cancella un livello)

level_name, number_of_attempts, collaborato_time_sec, hint_used

level_fail

Quando un utente salta un livello.

level_name, number_of_attempts, collaborato_time_sec, hint_used

game_complete

quando la partita è finita

number_of_correct_answers

La descrizione di ciascun parametro associato a ciascun evento è la seguente:

Nome evento

Nome parametro

Descrizione

level_start

level_name

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

level_wrong_answer

level_name

Quando un utente invia una risposta sbagliata.

ad_reward_prompt

ad_unit_id

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

ad_reward_impression

ad_unit_id

Un ID unità pubblicitaria utilizzato per mostrare 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 cancellare un livello

level_success

elapsed_time_sec

Tempo trascorso per cancellare un livello, in secondi

level_success

hint_used

Indica se un utente ha utilizzato un suggerimento (ha guardato un annuncio video con premio) o non ha cancellato un livello (1: è stato utilizzato un suggerimento / 0: ha cancellato 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 cancellare un livello

level_fail

elapsed_time_sec

Tempo trascorso per cancellare un livello, in secondi

level_fail

hint_used

Indica se un utente ha utilizzato un suggerimento (ha guardato un annuncio video con premio) o non ha cancellato un livello (1: è stato utilizzato un suggerimento / 0: ha cancellato un livello senza un suggerimento)

game_complete

number_of_correct_answers

Numero di livelli cancellati nel gioco

Crea una classe helper per il logging degli eventi personalizzati

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

Per prima cosa, crea un nuovo file Kotlin (non una classe Kotlin) e assegnagli il nome QuizAnalytics.kt nel pacchetto com.codelab.awesomedrawingquiz. Crea campi che definiscono il nome degli eventi personalizzati e i relativi parametri.

QuizAnalytics.kt

private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"

private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"

private const val EVENT_LEVEL_FAIL = "level_fail"

private const val EVENT_LEVEL_SUCCESS = "level_success"

private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"

private const val EVENT_GAME_START = "game_start"

private const val EVENT_GAME_COMPLETE = "game_complete"

private const val PARAM_AD_UNIT_ID = "ad_unit_id"

private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"

private const val PARAM_HINT_USED = "hint_used"

private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"

private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"

In seguito, aggiungi funzioni di estensione che ti consentano di registrare eventi personalizzati nel tuo gioco. Tieni presente che la maggior parte degli eventi personalizzati include parametri in modo da avere più contesto per ciascun evento. Tieni inoltre presente che un paio di nomi e parametri degli eventi (FirebaseAnalytics.Event.LEVEL_NAME e FirebaseAnalytics.Event.LEVEL_START) sono già definiti da Analytics, perciò li utilizzeremo.

QuizAnalytics.kt

...

fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)

fun FirebaseAnalytics.logLevelStart(levelName: String) {
    logEvent(FirebaseAnalytics.Event.LEVEL_START) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
    logEvent(EVENT_LEVEL_WRONG_ANSWER) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_PROMPT) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_IMPRESSION) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logLevelSuccess(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_SUCCESS) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logLevelFail(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_FAIL) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logGameComplete(
    numberOfCorrectAnswers: Int
) {
    logEvent(EVENT_GAME_COMPLETE) {
        param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
    }
}

Registra gli eventi di analisi nel gioco

Nella classe GameViewModel, aggiungi una nuova proprietà per l'istanza FirebaseAnalytics.

GameViewModel.kt

class GameViewModel(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModel() {
   ...
}

Poi, nel corso AwesomeDrawingQuizViewModelFactory, aggiungi una nuova proprietà come facevi in precedenza in GameViewModel.

AwesomeDrawingQuizViewModelFactory.kt

class AwesomeDrawingQuizViewModelFactory(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
    ...
}

Successivamente, nella classe AwesomeDrawingQuiz, aggiungi la funzione provideFirebaseAnalytics() e aggiorna la funzione provideViewModelFactory() per passare l'istanza FirebaseAnalytics a AwesomeDrawingViewModelFactory.

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
        this,
        provideGameSettings(),
        // TODO: Pass FirebaseAnalytics instance as a parameter (101)
        provideFirebaseAnalytics(),
    )

    // TODO: Provide FirebaseAnalytics instance (101)
    private fun provideFirebaseAnalytics() = Firebase.analytics

    ...

}

Ora è tutto pronto per implementare gli eventi personalizzati. Innanzitutto, nella funzione startGame(), chiama logGameStart() per indicare che una partita è iniziata.

Poiché logGameStart() è una funzione di estensione della classe FirebaseAnalytics, puoi chiamarla dall'istanza della classe FirebaseAnalytics.

GameViewModel.kt

fun startGame() {
    ...

    // TODO: Log game_start event (101)
    analytics.logGameStart()

    ...
}

Successivamente, nella funzione checkAnswer(), aggiungi gli eventi level_success e level_wrong_answer.

GameViewModel.kt

fun checkAnswer(userAnswer: String) {
    ...
    if (correct) {
        ...

        // TODO: Log level_success event (101)
        analytics.logLevelSuccess(
            levelName = drawing.word,
            numberOfAttempts = numAttempts,
            elapsedTimeSec = elapsedTimeInSeconds,
            hintUsed = isHintUsed,
        )

        ...
    } else {
        // TODO: Log level_wrong_answer event (101)
        analytics.logLevelWrongAnswer(levelName = drawing.word)

        ...
    }
}

Quindi, nella funzione skipLevel(), aggiungi l'evento level_fail per contrassegnare il livello come non riuscito.

GameViewModel.kt

fun skipLevel() {
   ...

    // TODO: Log level_fail event (101)
    analytics.logLevelFail(
        levelName = drawing.word,
        numberOfAttempts = numAttempts,
        elapsedTimeSec = elapsedTimeInSeconds,
        hintUsed = isHintUsed,
    )

    ...
}

Successivamente, implementa le funzioni logAdRewardPrompt() e logAdRewardImpression() per monitorare il comportamento dell'utente in relazione all'annuncio video con premio.

GameViewModel.kt

fun logAdRewardPrompt(adUnitId: String) {
    // TODO: Log ad_reward_prompt event (101)
    analytics.logAdRewardPrompt(adUnitId)
}

fun logAdRewardImpression(adUnitId: String) {
    // TODO: Log ad_reward_impression event (101)
    analytics.logAdRewardImpression(adUnitId)
}

Infine, modifica le funzioni requestNewDrawing() e finishGame() per aggiungere eventi personalizzati level_start e game_complete.

GameViewModel.kt

private fun requestNewDrawing() {
    ...

    drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { d ->
            ...

            // TODO: Log level_start event (101)
            analytics.logLevelStart(d.word)

            ...
        }
}

private fun finishGame() {
    // TODO: Log game_complete event (101)
    analytics.logGameComplete(numCorrectAnswers)

    ...
}

8. Debug degli eventi di analisi

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

Questo è molto utile ai fini della convalida durante la fase di strumentazione dello sviluppo e può aiutarti a scoprire eventuali errori nell'implementazione dell'analisi.

Attivare la modalità di debug

In genere, gli eventi registrati nell'app vengono raggruppati in un periodo di circa un'ora e caricati insieme. Per convalidare l'implementazione immediata dell'analisi, devi attivare la modalità di debug sul dispositivo di sviluppo in modo da caricare gli eventi con ritardi minimi.

Per attivare la modalità di debug, completa i seguenti passaggi:

  1. Apri la finestra dello strumento Terminale in Android Studio (Visualizza > Finestre strumenti > Terminale).

c8dc1b4f08a224b8.png

  1. Esegui questo comando (assicurati che il dispositivo Android di prova sia connesso al computer o che l'emulatore Android sia in esecuzione):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz

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

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

Eseguire il debug degli eventi di Analytics con DebugView

Dopo aver attivato la modalità di debug sul dispositivo di test, vai al tuo progetto nella console di Firebase e seleziona Analytics > DebugView dal menu. Dopodiché, sul dispositivo di test, gioca per vedere gli eventi registrati e mostrati nel report DebugView.

827059255d09ac00.png

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

475db00d05d03ab8.png

Per ulteriori dettagli, consulta l'articolo del Centro assistenza DebugView.

9. Attiva dimensioni e metriche personalizzate

Per impostazione predefinita, Google Analytics for Firebase raccoglie il numero totale di eventi. Per ogni parametro evento che ti interessa, devi attivare esplicitamente i report per quel parametro. Google Analytics per Firebase può quindi mostrare schede aggiuntive per mostrare le statistiche per i parametri personalizzati.

Per registrare dimensioni e metriche personalizzate:

  1. Vai alla console Firebase e seleziona il progetto Awesome Drawing Quiz che hai creato in precedenza.
  2. Fai clic su Analytics > Eventi dal menu di navigazione.
  1. Fai clic su Gestisci le definizioni personalizzate.
  2. Nella scheda Dimensioni personalizzate, fai clic su Crea dimensioni personalizzate.
  3. Nel campo Nome parametro evento, inserisci level_name e fai clic su Salva per completare la registrazione del parametro.

3d20ee9d7de74e9b.png

  1. Poi seleziona la scheda Metriche personalizzate e fai clic su Crea metriche personalizzate.
  2. Inserisci il nome del parametro e l'unità di misura per i seguenti parametri.

Nome parametro

Tipo di parametro

Unità di misura

number_of_attempts

Numero

Standard

hint_used

Numero

Standard

elapsed_time_sec

Numero

Secondi

number_of_correct_answers

Numero

Standard

10. Ottieni approfondimenti dal report Eventi

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

Quale livello ha il maggior numero di risposte sbagliate?

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

Fai clic sulla level_wrong_answer nel report sugli eventi. Nel report sugli eventi level_wrong_answer, trova la scheda level_name. I valori associati al parametro level_name vengono visualizzati in questa scheda come segue.

25da426bbc0c612c.png

Secondo lo screenshot riportato sopra, puoi scoprire facilmente che l'orizzonte contiene il maggior numero di risposte sbagliate, il che significa che è difficile per gli utenti rispetto agli altri livelli.

Utilizzando le informazioni ottenute qui, puoi decidere di non fornire livelli difficili agli utenti inesperti per mantenere un tasso di fidelizzazione elevato.

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

Con il Quiz su Disegni epici, gli utenti possono inviare le risposte 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 quel parametro.

Fai clic sull'evento level_success dal report Eventi. Nel report sugli eventi level_success, trova la scheda number_of_attemps. Il numero medio di tentativi su questa scheda sarà il seguente:

43de290f9f1a0ac9.png

Puoi utilizzare queste informazioni per ottimizzare la difficoltà media del gioco. Ad esempio, se il numero medio di tentativi è troppo vicino a 1, puoi considerare l'idea di rendere il gioco un po' più impegnativo.

Gli utenti hanno cercato di 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 per cui l'utente prende una decisione possono essere diversi.

Tuttavia, poiché il gioco può fornire un suggerimento dopo che hanno guardato un annuncio video con premio, è importante sapere se l'utente ha tentato di cancellare il livello con l'aiuto del suggerimento.

Fai clic sull'evento level_fail dal report Eventi. Nel report sugli eventi level_fail, trova la scheda hint_used. Viene visualizzato il numero medio di parametri evento (hint_used). Tieni presente che il valore del parametro è 1 se è stato utilizzato un hint e 0 se non è stato utilizzato un hint.

313814372cd7c8a4.png

Se i numeri nella scheda hint_used sono vicini a 0, significa che il premio (suggerimento) non è abbastanza utile per questi utenti. Inoltre, stai perdendo l'opportunità di aumentare le entrate generate da un annuncio video con premio.

Di conseguenza, dovresti considerare l'idea di offrire un premio più grande, in modo che gli utenti possano interagire con il gioco più a fondo e di conseguenza un incremento delle entrate provenienti dagli annunci video con premio.

Quanti livelli sono stati cancellati in ogni partita, in media?

Nel quiz di Awesome Drawing Quiz ci sono un totale di 6 livelli per ogni gioco. Una volta che l'utente ha completato i 6 livelli (indipendentemente dal fatto che abbia eliminato o meno ogni livello), viene attivato un evento game_complete con number_of_correct_answers come parametro. Il parametro number_of_correct_answers indica il numero di livelli in cui l'utente ha fornito una risposta corretta.

Fai clic su game_complete evento dal report sugli eventi. Nel report sugli eventi game_complete, trova la scheda number_of_correct_answers. Viene visualizzato 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 di riorganizzare i livelli nel gioco per aiutare le persone a superare i livelli precedenti più facilmente, in modo che possano continuare a giocare senza perdere interesse.

11. Operazione completata.

Hai completato il codelab Android 101 di AdMob + Firebase. Il codice completo di questo codelab è disponibile nella cartella android_studio_folder.png101-complete_and_102-base.

Nella parte successiva del codelab AdMob e Firebase, imparerai a utilizzare una canalizzazione per visualizzare il flusso degli eventi app. Nella parte successiva parleremo anche di come utilizzare Remote Config e A/B Testing per ottimizzare il valore del parametro nel gioco senza aggiornare l'app.