Monitoraggio di Santa Tracker con Firebase
13 gennaio 2017
L'app Santa Tracker per Android è una tradizione natalizia di Google. Ogni anno milioni di persone in tutto il globo utilizzano l'applicazione per giocare con gli elfi e le renne e, naturalmente, tenere d'occhio Babbo Natale mentre fa il giro del mondo il 24 dicembre. Nonostante l'app sia live per qualche mese l'anno, circa il 90% del suo utilizzo avviene nelle ultime due settimane di dicembre. Perché questi miglioramenti di Santa Tracker siano disponibili in modo rapido nel periodo natalizio, è fondamentale poter monitorare e regolare l'app in remoto. Quindi quest'anno abbiamo deciso di utilizzare Firebase come soluzione di monitoraggio per tutte le nostre esigenze. In questo post descriveremo come sfruttare una combinazione di Analytics, Crash Reporting e Remote Config per mantenere un elevato livello di qualità senza dover ripubblicare l'applicazione.
Quando gli utenti navigano all'interno dell'app usiamo Firebase Analytics per registrare il loro comportamento. La maggior parte dei mini-giochi nell'app risiede nelle rispettive classi di Attività, in modo da poter utilizzare la funzione di tracking automatico dello schermo di Firebase Analytics per registrare questi eventi senza dover scrivere alcun codice.
Per gli eventi all'interno dei giochi, utilizziamo gli eventi personalizzati che ci consentono di registrare le azioni importanti dell'utente. Ad esempio, dopo che l'utente termina il gioco "Penguin Swim", registriamo l'evento
Un'altra funzionalità di Analytics che abbiamo sfruttato sono le Proprietà utente. All'inizio di ogni sessione di Santa Tracker, usiamo le proprietà utente per registrare alcune informazioni sul dispositivo dell'utente. Queste proprietà vengono quindi collegate a ogni evento di analisi. Giacché Santa Tracker viene utilizzato in tutto il mondo, riscontriamo una grande varietà di dispositivi usati. Le proprietà dell'utente ci aiutano a dare un senso ai nostri dati di analisi. Ad esempio:
La combinazione dei nostri eventi personalizzati e delle proprietà dell'utente con gli eventi monitorati automaticamente da Firebase Analytics ci consente di avere una buona comprensione di cosa stiano facendo gli utenti all'interno dell'app, tramite la Console Firebase.
Nonostante i nostri sforzi, l'app Santa Tracker non è perfetta. Con milioni di utenti su centinaia di tipi di dispositivi in decine di paesi diversi, scopriamo costantemente nuovi bug ovunque. Firebase Crash Reporting ci permette di individuare tutti gli errori fatali dell'app nel giro di un minuto dal momento in cui si verificano. Poiché gli eventi Firebase Analytics appaiono nei log di Firebase Crash Reporting, possiamo vedere la sequenza degli eventi prima di un arresto anomalo, e ciò si è rivelato molto utile nella diagnosi di alcuni problemi.
Ad esempio
Questa integrazione ha un valore inestimabile nel riprodurre i problemi che la nostra normale configurazione di QA non individua. Siamo in grado di riconoscere l'esatto modello di dispositivo e quindi adoperare il log di analisi dati per ricreare le condizioni dell'arresto.
Dopo aver analizzato i dati ottenuti da Analytics e Crash Reporting, dobbiamo apportare modifiche all'app per migliorare l'esperienza dell'utente. A causa della breve durata di attività di questa app, non abbiamo tempo per un ciclo di sviluppo completo con la pubblicazione delle modifiche dell'app, e non ci viene neanche data la chance di un secondo giorno di Natale!
Santa Tracker utilizza Firebase Remote Config come porta d'accesso alle varie funzionalità e per fornire il fine-tuning in remoto delle esperienze nell'ambito del mini gioco. Ad esempio nel gioco "Penguin Swim" sono presenti due variabili chiave che archiviamo in Remote Config:
Come accennato in precedenza, gli utenti avevano difficoltà a ottenere un punteggio superiore a zero stelle nel gioco. Per rendere il gioco più divertente abbiamo cambiato la
Al momento l'errore
Prima aggiungiamo una condizione basata sulle proprietà utente:
Poi disabilitiamo il gioco solo per gli utenti con questa condizione:
Ora il gioco sarà visibile solo agli utenti che hanno un'esperienza stabile e ciò comporterà un numero inferiore di arresti anomali per gli utenti e conseguenti valutazioni più positive per l'app.
La maggiore integrazione di Firebase con Santa Tracker ci offre l'opportunità di monitorare ed eseguire il fine-tuning dell'app nel corso del tempo senza dover pubblicare aggiornamenti. Per gli sviluppatori, ha un valore inestimabile riuscire a ottenere un quadro chiaro di cosa stiano realmente facendo gli utenti e come migliorare l'applicazione. Per tutto il mese di dicembre sapevamo di poter contare su Firebase e offrire agli utenti di Santa Tracker delle vacanze magiche!
Firebase Analytics
Quando gli utenti navigano all'interno dell'app usiamo Firebase Analytics per registrare il loro comportamento. La maggior parte dei mini-giochi nell'app risiede nelle rispettive classi di Attività, in modo da poter utilizzare la funzione di tracking automatico dello schermo di Firebase Analytics per registrare questi eventi senza dover scrivere alcun codice.
Per gli eventi all'interno dei giochi, utilizziamo gli eventi personalizzati che ci consentono di registrare le azioni importanti dell'utente. Ad esempio, dopo che l'utente termina il gioco "Penguin Swim", registriamo l'evento
swimming_game_end
con i parametri personalizzati score
e num_stars
. Nella prima settimana di dicembre abbiamo notato che l'85% degli utenti non ha conquistato nessuna stella giocando a Penguin Swim. Ovviamente ciò significa che il gioco è troppo difficile, poiché originariamente volevano che solo il 60-70% degli utenti raggiungesse un punteggio così basso! Siamo riusciti a rettificare questo comportamento grazie a Remote Config, di cui parlerò tra poco. Un'altra funzionalità di Analytics che abbiamo sfruttato sono le Proprietà utente. All'inizio di ogni sessione di Santa Tracker, usiamo le proprietà utente per registrare alcune informazioni sul dispositivo dell'utente. Queste proprietà vengono quindi collegate a ogni evento di analisi. Giacché Santa Tracker viene utilizzato in tutto il mondo, riscontriamo una grande varietà di dispositivi usati. Le proprietà dell'utente ci aiutano a dare un senso ai nostri dati di analisi. Ad esempio:
API_LEVEL |
Il Livello API del dispositivo dell'utente, come 23 per Marshmallow o 21 per Lollipop. |
DEVICE_BRAND |
La marca del dispositivo dell'utente, come Samsung per Galaxy S7 o Google per Pixel XL. |
DEVICE_BOARD |
Il processore o lo specifico nome del SoC per il dispositivo dell'utente. |
La combinazione dei nostri eventi personalizzati e delle proprietà dell'utente con gli eventi monitorati automaticamente da Firebase Analytics ci consente di avere una buona comprensione di cosa stiano facendo gli utenti all'interno dell'app, tramite la Console Firebase.
Firebase Crash Reporting
Nonostante i nostri sforzi, l'app Santa Tracker non è perfetta. Con milioni di utenti su centinaia di tipi di dispositivi in decine di paesi diversi, scopriamo costantemente nuovi bug ovunque. Firebase Crash Reporting ci permette di individuare tutti gli errori fatali dell'app nel giro di un minuto dal momento in cui si verificano. Poiché gli eventi Firebase Analytics appaiono nei log di Firebase Crash Reporting, possiamo vedere la sequenza degli eventi prima di un arresto anomalo, e ciò si è rivelato molto utile nella diagnosi di alcuni problemi.
Ad esempio
OutOfMemoryError
è un tipo di arresto anomalo che sembra verificarsi durante il gioco "Penguin Swim" su alcuni dispositivi con poca RAM. Non abbiamo riscontrato questo errore in fase di testing ma i dati Firebase Analytics in Crash Reporting indicano che si verifica quando si giocano più partite. Questa integrazione ha un valore inestimabile nel riprodurre i problemi che la nostra normale configurazione di QA non individua. Siamo in grado di riconoscere l'esatto modello di dispositivo e quindi adoperare il log di analisi dati per ricreare le condizioni dell'arresto.
Firebase Remote Config
Dopo aver analizzato i dati ottenuti da Analytics e Crash Reporting, dobbiamo apportare modifiche all'app per migliorare l'esperienza dell'utente. A causa della breve durata di attività di questa app, non abbiamo tempo per un ciclo di sviluppo completo con la pubblicazione delle modifiche dell'app, e non ci viene neanche data la chance di un secondo giorno di Natale!
Santa Tracker utilizza Firebase Remote Config come porta d'accesso alle varie funzionalità e per fornire il fine-tuning in remoto delle esperienze nell'ambito del mini gioco. Ad esempio nel gioco "Penguin Swim" sono presenti due variabili chiave che archiviamo in Remote Config:
SwimmingObstacleDensity |
Controllo della densità dei cubetti di ghiaccio e degli altri ostacoli del gioco, ad es. minore è la densità, più facile è il gioco. |
DisableSwimmingGame |
Un kill-switch per nascondere completamente il gioco dall'app. |
Come accennato in precedenza, gli utenti avevano difficoltà a ottenere un punteggio superiore a zero stelle nel gioco. Per rendere il gioco più divertente abbiamo cambiato la
SwimmingObstacleDensity
da 1,5 a 1,1, consentendo agli utenti di superare gli ostacoli molto più facilmente. Così facendo, la percentuale degli utenti che ha ottenuto zero stelle è scesa approssimativamente dall'85% al 70%. Questo cambiamento ha avuto luogo istantaneamente, in modalità OTA, senza bisogno di pubblicare una nuova versione dell'app! Al momento l'errore
OutOfMemoryError
nel gioco di nuoto si verifica per <1% degli utenti. Ma se questo problema imperversasse, potremmo usare il flag DisableSwimmingGame
per nascondere immediatamente il gioco dagli utenti coinvolti mentre cerchiamo di risolvere il problema. Sfruttando il fatto che si può fare riferimento alle proprietà utente di Analytics in Remote Config, possiamo disabilitare il gioco esclusivamente per tipi specifici di dispositivi! Supponiamo, ad esempio, che Penguin Swim smetta di funzionare su tutti i dispositivi KitKat (livello API 19). Prima aggiungiamo una condizione basata sulle proprietà utente:
Poi disabilitiamo il gioco solo per gli utenti con questa condizione:
Ora il gioco sarà visibile solo agli utenti che hanno un'esperienza stabile e ciò comporterà un numero inferiore di arresti anomali per gli utenti e conseguenti valutazioni più positive per l'app.
Considerazioni finali
La maggiore integrazione di Firebase con Santa Tracker ci offre l'opportunità di monitorare ed eseguire il fine-tuning dell'app nel corso del tempo senza dover pubblicare aggiornamenti. Per gli sviluppatori, ha un valore inestimabile riuscire a ottenere un quadro chiaro di cosa stiano realmente facendo gli utenti e come migliorare l'applicazione. Per tutto il mese di dicembre sapevamo di poter contare su Firebase e offrire agli utenti di Santa Tracker delle vacanze magiche!
Pubblicato da Sam Stern Developer Programs Engineer