AdMob+Firebase 102 Android: ottimizza il comportamento dell'app senza aggiornare l'app

1. Introduzione

Supponiamo che tu debba modificare i valori di alcuni parametri nella tua app dopo averla pubblicata sul Play Store. In genere, devi ripubblicare una nuova versione dell'app e gli utenti devono aggiornarla anche sul proprio smartphone.

In generale, l'aggiornamento dell'app funziona se vuoi apportare una modifica duratura alla tua app. Tuttavia, cosa succede se devi modificare spesso il valore di alcuni parametri dell'app? Oppure, cosa succede se vuoi eseguire alcuni esperimenti per trovare la configurazione ottimale dell'app?

In questi casi, gli aggiornamenti delle app non funzionerebbero correttamente. Perché è necessario un po' di tempo prima che l'aggiornamento venga propagato completamente agli utenti. Inoltre, è piuttosto difficile eseguire gli esperimenti su più versioni dell'app.

Inoltre, come puoi determinare se il percorso dell'utente dell'app funziona come previsto? Puoi fare affidamento sui commenti degli utenti su Play Console. Tuttavia, potrebbe non essere abbastanza preciso per prendere una decisione chiara.

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 creare un funnel in Google Analytics for Firebase
  • Come utilizzare Firebase Remote Config
  • Come eseguire il test A/B 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 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

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

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

Importare l'app iniziale

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

Ora il progetto dovrebbe essere aperto in Android Studio.

Aggiungi il file di configurazione di Firebase al progetto Android

  1. Nella schermata di panoramica del progetto Quiz di disegno fantastico, fai clic sull'icona Impostazioni. 9bacb5ada7cbaaf6.png
  2. Nella scheda Generali, seleziona l'app per Android per scaricare il file google-service.json.
  3. Sposta il file di configurazione nella directory android_studio_folder.pngapp del progetto. 797cde1881a38fdf.png

3. Apri il progetto Firebase dalla console

Prima di passare al passaggio successivo, apri il progetto dalla console Firebase che hai creato nel passaggio "Configura il progetto Firebase" del Codelab AdMob + Firebase 101.

e0a028059c9e00cb.png

4. Creare una canalizzazione di eventi in-app

Potresti aver aggiunto alcuni eventi app per monitorare l'attività utente all'interno dell'app. Leggendo il report di ogni evento app, puoi ottenere i dettagli associati all'evento, come conteggi totali, conteggi medi per utente, dati demografici e così via.

Tuttavia, cosa succede se vuoi visualizzare il tasso di completamento di una serie di eventi, anziché concentrarti su un evento specifico? In Google Analytics for Firebase, puoi utilizzare la canalizzazione per visualizzare e ottimizzare la percentuale di completamento di una serie di eventi dell'app.

Creare una canalizzazione

Per creare una canalizzazione:

  1. Vai alla console Firebase e seleziona il progetto Awesome Drawing Quiz che hai creato in precedenza.
  2. Fai clic su Funnel.
  3. Fai clic su NUOVA CANALIZZAZIONE.
  4. Inserisci un nome e una descrizione per la canalizzazione.
  5. Seleziona i primi due eventi da utilizzare come passaggi nella canalizzazione.
  6. Fai clic su AGGIUNGI UN ALTRO EVENTO per ogni passaggio aggiuntivo e seleziona un evento.
  7. Fai clic su CREA.

Seguendo i passaggi precedenti, crea i seguenti canalizzazioni:

Nome canalizzazione 1: tasso di successo del livello Eventi: level_start, level_successd3bc78ef61a261d7.png

#2 Nome canalizzazione: tasso di completamento degli annunci con premio Eventi: ad_reward_prompt, ad_reward_impression, ad_reward45c9542dfa663014.png

3. Nome canalizzazione: percentuale di completamento della partita Eventi: game_start, game_completedab25e8501746d5f.png

Visualizzare l'analisi della canalizzazione

Una volta creati alcuni canalizzazioni, puoi accedervi nel menu Canalizzazioni della Console Firebase. Se fai clic sul nome della canalizzazione nell'elenco, puoi visualizzare l'analisi dettagliata di ciascuna canalizzazione.

620c0e84587c8ad4.png

Ad esempio, fai clic su Tasso di completamento del livello. Mostrerà i dettagli della canalizzazione nel seguente modo:

c889f9b6ece15847.png

Dallo screenshot precedente, puoi vedere la percentuale di utenti che hanno completato un livello (attivato l'evento level_success) dopo aver iniziato un livello (attivato l'evento level_start). Qui puoi vedere che il 46, 2% degli utenti ha completato il livello.

Una volta fatto clic su Conteggio eventi, verranno visualizzate le metriche basate sul numero di eventi nel seguente modo:

d044fb7b07e6e0d9.png

In base alle metriche nello screenshot precedente, nel periodo in esame sono stati effettuati 116 tentativi (che hanno attivato l'evento level_start) e 57 completamenti (che hanno attivato l'evento level_success).

Poiché il tasso di completamento basato sugli eventi(49,1%) è leggermente superiore a quello basato sull'utente(46,2%), puoi affermare che alcune persone hanno un rendimento migliore rispetto ad altre.

5. Integra Remote Config nell'app

Poiché puoi ottenere alcuni approfondimenti sulla tua app in base agli eventi e al funnel dell'app, potresti voler ottimizzare la tua app. In genere, ciò include una messa a punto del valore del parametro nell'app. Per modificare il valore di questi parametri, devi aggiornare l'app in modo che le modifiche possano essere applicate agli utenti.

Utilizzando Remote Config in Firebase, puoi modificare questi valori senza un aggiornamento dell'app, il che significa che puoi cambiare il comportamento dell'app senza disturbare gli utenti costringendoli a scaricare l'aggiornamento.

In questo codelab imparerai a rendere regolabile l'importo della ricompensa (numero di lettere da rivelare dopo aver guardato un annuncio video con premio) senza un aggiornamento dell'app utilizzando Remote Config.

Aggiungi Remote Config alla dipendenza dell'app

Iniziamo aggiungendo Firebase Remote Config alla dipendenza dell'app.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Add Firebase Remote Config dependency (102)
    implementation 'com.google.firebase:firebase-config-ktx'

    ...
}

...

Sincronizzare il 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.

Imposta un valore predefinito del parametro Remote Config

Il recupero dei valori da Remote Config richiede una connessione di rete. Nel caso in cui la rete non sia disponibile, devi definire un valore predefinito per ogni parametro di Remote Config.

Crea il file remote_config_defaults.xml nella cartella res/xml. Poi, imposta un valore predefinito dell'importo della ricompensa (reward_amount)) come segue.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>reward_amount</key>
        <value>1</value>
    </entry>
</defaultsMap>

Tieni presente che reward_amount è il nome del parametro in Remote Config.

Recupera l'importo del premio da Remote Config

Modifica AwesomeDrawingQuiz.kt per fare in modo che la classe GameSettings contenga un riferimento all'istanza RemoteConfig.

Tieni presente che l'istanza RemoteConfig è configurata per recuperare i valori più recenti dal server in modalità di debug per facilitare il processo di sviluppo. (Imposta l'intervallo di recupero minimo su zero secondi chiamando fetch(0L))

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    // COMPLETE: Provide FirebaseRemoteConfig instance (102)
    private fun provideGameSettings() = GameSettings(provideRemoteConfig())

    // COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
    private fun provideRemoteConfig(): FirebaseRemoteConfig {
        val rc = Firebase.remoteConfig.apply {
            setDefaultsAsync(R.xml.remote_config_defaults)
        }
        val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
        fetchTask.addOnCompleteListener {
            if (it.isSuccessful) {
                Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
                rc.activate()
            }
        }
        return rc
    }
}

Poi, modifica la classe GameSettings per recuperare l'importo del premio da Remote Config.

GameSettings.kt

// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {

  ...

  // TODO: Apply reward amount from the Remote Config (102)
  val rewardAmount: Int
    get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()

  companion object {
    ...

    // TODO: Add a key for 'reward_amount' Remote Config parameter (102)
    private const val KEY_REWARD_AMOUNT = "reward_amount"
  }
}

Creare un parametro Remote Config dalla console

Successivamente, creerai un nuovo parametro Remote Config per l'importo della ricompensa, in modo da poterlo modificare al volo.

Per creare un nuovo parametro, vai alla console Firebase, quindi seleziona il progetto Quiz di disegno fantastico che hai creato in precedenza. Fai clic sul pulsante Remote Config -> AGGIUNGI IL TUO PRIMO PARAMETRO.

7f52617141c53726.png

Assegna al parametro il nome reward_amount e imposta il valore predefinito su 1. Poi, fai clic sul pulsante Aggiungi parametro.

cbc771fd1685b29c.png

Fai clic sul pulsante Pubblica modifiche per rendere effettiva la modifica per gli utenti.

d6a6aa4a60e06ee9.png

6. Modificare il comportamento dell'app con Remote Config

L'importo del premio nel quiz Awesome Drawing Quiz ora può essere configurato nella console Firebase senza dover aggiornare il codice dell'app.

In questa sezione, modificherai l'importo del premio da 1 a 2 per fare in modo che l'app riveli altri due caratteri come suggerimento dopo aver guardato un annuncio con premio.

Aggiorna il valore predefinito del parametro reward_amount

Vai alla console Firebase, quindi seleziona il progetto Awesome Drawing Quiz che hai creato in precedenza. Fai clic su Remote Config e poi su reward_amount dall'elenco. Successivamente, modifica il valore predefinito in 2 e fai clic sul pulsante Aggiorna.

9a9bd8a26a39bfe3.png

Fai clic sul pulsante Pubblica modifiche per rendere effettiva la modifica per gli utenti.

d6a6aa4a60e06ee9.png

Verificare la modifica del comportamento dell'app

Per confermare la modifica del comportamento dell'app, esegui di nuovo il progetto. Una volta terminato di guardare un annuncio con premio, noterai che l'app ora rivela due lettere come premio, come abbiamo configurato nella console Remote Config.

Prima di guardare un annuncio con premio

Sono state rivelate due lettere aggiuntive come premio

7. Crea l'esperimento per ottimizzare l'importo del premio

Ora puoi modificare l'importo della ricompensa senza dover pubblicare un aggiornamento dell'app. Tuttavia, come puoi determinare la quantità di modifiche che hai apportato e che sono utili per l'app?

Con i test A/B di Firebase, puoi eseguire gli esperimenti per ottimizzare l'esperienza utente complessiva dell'app senza dover aggiornare un'app o creare uno strumento separato per eseguire e monitorare il rendimento di ogni esperimento.

Progettare l'esperimento

Prima di creare un nuovo esperimento, devi impostare un obiettivo chiaro. Assicurati di esaminare il seguente elenco di controllo prima di creare un nuovo esperimento.

  • Che cosa vuoi ottimizzare? (ad es. difficoltà del gioco, tempistica/visibilità dell'annuncio e così via)
  • Perché: qual è il tuo obiettivo commerciale per l'esecuzione dell'esperimento? ad esempio, per massimizzare le entrate pubblicitarie, aumentare la fidelizzazione e così via.
  • Chi: chi è soggetto a essere incluso nell'esperimento? (ad es. Tutti gli utenti, Segmento di pubblico di utenti specifici e così via)

In questo codelab, creerai un esperimento per ottimizzare il valore dell'importo della ricompensa in modo da massimizzare il coinvolgimento giornaliero degli utenti del quiz Awesome Drawing Quiz.

Crea l'esperimento

Apri il progetto Awesome Drawing Quiz dalla console Firebase. Seleziona il menu Test A/B e poi fai clic sul pulsante Crea esperimento.

Seleziona Remote Config per creare un esperimento Remote Config.

f38a85328ab54e7e.png

Assegna all'esperimento il nome "Importo della ricompensa", come mostrato nello screenshot seguente.

15d552adb61c0b08.png

Configura le opzioni di targeting. In questo codelab, prenderai di mira il 100% degli utenti del Quiz di disegno fantastico.

61b316741a63050f.png

Poiché l'obiettivo principale dell'esperimento è trovare un valore ottimale che massimizzi il coinvolgimento degli utenti giornaliero, seleziona Coinvolgimento degli utenti giornaliero come metrica principale da monitorare.

694641b57d90ff65.png

Infine, configura il gruppo di controllo e la variante in modo da poter capire quale gruppo ha un rendimento migliore. Seleziona reward_amount dal gruppo di controllo e lascia invariato il relativo valore. Per il gruppo di varianti, assegna il nome "Meno premi", quindi modifica il valore di reward_amount in 1.

10ed7f5b06858519.png

Con questa configurazione, le persone del gruppo "Meno premi" riceveranno una lettera come premio, mentre le persone del gruppo di controllo riceveranno due lettere come premio. Di conseguenza, vedrai l'impatto dell'importo della ricompensa sugli utenti.

Dopo aver fatto clic sul pulsante Rivedi, vedrai una panoramica dell'esperimento come segue.

ae6477ce79f6265d.png

Esegui l'esperimento

Fai clic sul pulsante Avvia esperimento per eseguire l'esperimento. Tieni presente che non puoi modificare la configurazione dell'esperimento una volta avviato.

7131bf9b4fa74fa5.png

8. Gestire l'esperimento

Visualizza l'avanzamento dell'esperimento

Puoi controllare l'avanzamento dell'esperimento dal menu Test A/B nella console Firebase, che avrà l'aspetto dello screenshot seguente. Tieni presente che nella scheda puoi anche visualizzare il numero di utenti che partecipano all'esperimento negli ultimi 30 minuti.

8a7009bdd8871d95.png

Dopo aver fatto clic sull'esperimento nell'elenco, puoi visualizzarne i dettagli. Finché l'esperimento non può dichiarare un leader (ovvero la variante con il rendimento migliore), vedrai il messaggio "È troppo presto per dichiarare un leader".

a4e7ca3e3f4711cd.png

Dopo un po' di tempo, l'esperimento inizierà a mostrare i dati raccolti finora nella sezione Panoramica del miglioramento. Puoi confrontare il rendimento di ogni variante per vedere quale ha un rendimento migliore. Lo screenshot seguente mostra un esempio della sezione Panoramica dei miglioramenti.

e2d00fc27c053fd3.png

Dalla tabella sotto la sezione Panoramica del miglioramento, puoi controllare i dettagli delle metriche degli obiettivi dell'esperimento, nonché le metriche aggiuntive monitorate nell'esperimento. Lo screenshot seguente mostra un esempio della sezione dei dettagli delle metriche.

c3859d642f85cc52.png

Implementare il leader per tutti gli utenti

Dopo che l'esperimento è stato eseguito per un periodo abbastanza lungo da ottenere una variante ottimale, o la variante migliore, puoi implementare l'esperimento per il 100% degli utenti. Una volta che il test A/B ha trovato un chiaro leader, ti incoraggerà a implementare la variante principale per tutti gli utenti.

86cb6a6c07516634.png

Tuttavia, anche se l'esperimento non ha dichiarato un leader chiaro, puoi comunque scegliere di implementare una variante per tutti gli utenti.

Nella schermata dei dettagli dell'esperimento, fai clic sul menu contestuale ( 73afe611adf58774.png) e poi su Implementa variante.

374e1c72be1d0656.png

Scegli una variante da implementare per tutti gli utenti, poi fai clic sul pulsante Esamina con Remote Config per rivedere le modifiche prima di apportarne una in Remote Config.

e176f6e6a72c754.png

Dopo aver confermato che la bozza non presenta problemi, fai clic sul pulsante Pubblica modifiche per rendere effettiva la modifica per tutti gli utenti.

d65d545620ce93f6.png

9. Operazione completata.

Hai completato il Codelab AdMob + Firebase 102 per Android. Puoi trovare il codice completato per questo codelab nella cartella android_studio_folder.png102-complete.