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 fornire agli utenti valuta o elementi in-app per la visualizzazione di annunci video, in modo che possano raggiungere nuove vette in cui 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.
|
|
Se riscontri problemi (bug del codice, errori grammaticali, formulazione poco chiara e così via) mentre segui questo codelab, segnalali tramite il link Segnala un errore nell'angolo in basso a sinistra del codelab.
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
- Android Studio versione 4.1 o successive
- Un Account Google
- Un dispositivo di test con Android 5.0 o versioni successive con un cavo USB per connettere il dispositivo o un emulatore Android che esegue AVD (Android Virtual Device) con un'immagine di sistema che supporta Play Store/API di Google
Come valuteresti il tuo livello di esperienza con AdMob?
Come valuteresti il tuo livello di esperienza con Firebase?
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-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:
101-base: codice iniziale che verrà creato in questo codelab.
101-complete_and_102-base: codice completato per questo codelab e codice iniziale per il codelab 102.
102-complete: codice completato per il codelab 102.
Importa l'app iniziale
Avvia Android Studio e scegli "Importa progetto" nella schermata di benvenuto. Poi seleziona la directory 101-base dal codice che hai scaricato.
Ora il progetto dovrebbe essere aperto in Android Studio.
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.
Per creare una nuova app AdMob nel tuo account, segui le istruzioni riportate di seguito:
- Vai alla console AdMob.
- Nel menu App, fai clic su "Aggiungi app".
- Quando ti viene chiesto "Hai pubblicato la tua app su Google Play o sull'App Store?", rispondi "NO".
- 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.
- Fai clic sul menu App nel frontend di AdMob, quindi seleziona "Awesome Drawing Quiz" dall'elenco delle app.
- Fai clic su AGGIUNGI UNITÀ PUBBLICITARIA per creare una nuova unità pubblicitaria video con premio.
- Seleziona Con premio per il formato dell'annuncio.

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

- Una volta creato, visualizzerai le istruzioni simili alle seguenti:

- Torna al progetto Android e aggiorna le costanti dell'ID app AdMob e dell'ID unità pubblicitaria con quelle 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 il progetto Firebase
Crea un nuovo progetto dalla console Firebase
- Vai alla Console Firebase.
- Seleziona Aggiungi progetto e assegna al progetto il nome "Awesome Drawing Quiz" (Quiz di disegno fantastico). Assicurati che il pulsante di opzione Abilita Google Analytics per questo progetto sia attivo.
- Seleziona l'account Google Analytics che intendi utilizzare. Per la maggior parte degli utenti, è sufficiente selezionare l'opzione Account predefinito per Firebase, ma se hai un altro account Google Analytics che vuoi utilizzare, selezionalo qui.
- Fai clic su Crea progetto.
Aggiungere l'app per Android
- Nella schermata di panoramica del nuovo progetto, fai clic su Aggiungi Firebase alla tua app per Android.
- Inserisci il nome del pacchetto del codelab: com.codelab.awesomedrawingquiz
- Imposta un nickname per la tua app: Quiz di disegno fantastico
- Lascia vuoto il campo SHA-1, poiché SHA-1 non è richiesto per questo progetto.
- Seleziona Registra app per registrare la tua app.
Aggiungere il file google-services.json all'app
Successivamente, verrà visualizzata una schermata in cui potrai scaricare un file di configurazione che contiene tutti i metadati Firebase necessari per la tua app. Fai clic su Scarica google-service.json e copia il file nella directory
app del tuo progetto.

Dichiarare le versioni delle dipendenze
Iniziamo aggiungendo la versione di ogni dipendenza necessaria per integrare Firebase nel progetto. Apri il file dependencies.gradle che si trova nella radice del progetto, quindi 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 l'applicazione in modo che utilizzi Firebase.
Aggiungi google-services come classpath nel file build.gradle che si trova nella directory root 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 come segue:
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 progetto con i file Gradle. Seleziona il menu File > Sincronizza progetto con file Gradle per sincronizzare il progetto con i file Gradle.
5. Collegare AdMob al progetto Firebase
Completa i passaggi riportati di seguito per collegare le app a Firebase.
- Accedi al tuo account AdMob alla pagina https://apps.admob.com.
- Fai clic su App nella barra laterale.
- 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.
- Fai clic su Impostazioni app nella barra laterale.
- Fai clic su Collega a Firebase.
- 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.
- 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 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

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.

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.

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.

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.

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

Dopo aver fatto clic su INIZIA UNA PARTITA,sullo schermo vedrai un disegno. 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.

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.

7. 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 | Quando un utente invia una risposta errata. |
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 |
Crea una classe helper per registrare eventi personalizzati
Per registrare facilmente l'evento di Analytics, creerai una classe helper per gestire gli eventi personalizzati.
Innanzitutto, crea un nuovo file Kotlin (non una classe Kotlin) e chiamalo 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"
Poi, aggiungi le funzioni di estensione che ti aiutano a registrare gli eventi personalizzati nel gioco. Tieni presente che la maggior parte degli eventi personalizzati include parametri per avere un contesto più ampio di ogni evento. Tieni presente anche che alcuni nomi di eventi e parametri (FirebaseAnalytics.Event.LEVEL_NAME e FirebaseAnalytics.Event.LEVEL_START) sono già definiti da Analytics, quindi 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())
}
}
Registrare gli eventi di analisi dei log 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, nella classe AwesomeDrawingQuizViewModelFactory, aggiungi una nuova proprietà come hai fatto 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 puoi implementare gli eventi personalizzati. Innanzitutto, nella funzione startGame(), chiama logGameStart() per indicare che è iniziato un gioco.
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)
...
}
}
Successivamente, 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 gli 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. Eseguire il 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 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 eventuali errori nell'implementazione di Analytics.
Attivare la modalità di debug
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 attivare la modalità di debug, completa i seguenti passaggi:
- Apri la finestra degli strumenti Terminale in Android Studio (Visualizza > Finestre degli strumenti > Terminale).

- 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.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.
Eseguire il debug degli eventi Analytics con DebugView
Dopo aver attivato la modalità di debug sul dispositivo di test, vai al tuo progetto nella console Firebase e seleziona Analytics > DebugView dal menu. Poi, sul dispositivo di test, gioca per vedere gli eventi registrati e visualizzati nel report DebugView.

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.

Per saperne di più, consulta questo articolo del Centro assistenza di DebugView.
9. Attivare 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 la generazione di report per quel parametro. Google Analytics for Firebase può quindi mostrare schede aggiuntive per visualizzare le statistiche relative ai parametri personalizzati.
Per registrare dimensioni e metriche personalizzate:
- Vai alla console Firebase e seleziona il progetto Awesome Drawing Quiz che hai creato in precedenza.
- Nel menu di navigazione, fai clic su Analytics > Eventi.
- Fai clic su Gestisci le definizioni personalizzate.
- Nella scheda Dimensioni personalizzate, fai clic su Crea dimensioni personalizzate.
- Nel campo Nome del parametro evento, inserisci level_name e fai clic su Salva per completare la registrazione del parametro.

- Poi, seleziona la scheda Metriche personalizzate e fai clic su Crea metriche personalizzate.
- 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. 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. Nella scheda vedrai i valori associati al parametro level_name nel seguente modo.

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:

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 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 il valore del parametro è 1 se è stato utilizzato un suggerimento e 0 se non è stato utilizzato.

Se i numeri sulla scheda hint_used sono vicini a 0, significa che il premio (suggerimento) non è abbastanza utile per questi utenti. Inoltre, perdi l'opportunità di aumentare le entrate derivanti da un annuncio video con premio.
Pertanto, ti consigliamo di offrire un premio più grande, in modo che gli utenti possano interagire più a fondo con il gioco, aumentando le entrate generate 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 6 livelli (indipendentemente dal fatto che li abbia superati o meno), 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 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.

Se il numero medio di livelli completati è troppo basso, valuta la possibilità di riorganizzare i livelli del gioco per aiutare gli utenti a superare più facilmente i primi livelli, in modo che possano continuare a giocare senza perdere interesse.
11. Operazione completata.
Hai completato il Codelab AdMob + Firebase 101 per Android. Puoi trovare il codice completato per questo codelab nella cartella
101-complete_and_102-base.
Nella parte successiva del Codelab AdMob+Firebase, imparerai a utilizzare una canalizzazione per visualizzare il flusso degli eventi dell'app. La parte successiva tratterà anche l'utilizzo di Remote Config e dei test A/B per ottimizzare il valore del parametro nel gioco senza un aggiornamento dell'app.