Come abbiamo usato Firebase per spedire l’app mobile Sapsbus 10 volte più veloce

La nuova release di Firebase accelera lo sviluppo di applicazioni mobili e gli esperimenti di funzionalità.

Con l’annuncio di Firebase a Google I/O oggi, siamo felici di rivelare che abbiamo lavorato con Google negli ultimi mesi per testare questa nuova piattaforma mobile che promette di cambiare il modo in cui gli sviluppatori costruiscono le applicazioni utilizzando Android, iOS e Javascript.

Le app per la prenotazione dei biglietti Sapsbus sfruttano appieno i vantaggi di Firebase – Crash Reporting, Analytics, Remote Config, Cloud Messaging, Realtime Database e Test Labs – e molte funzioni importanti nella versione attuale dell’app Sapsbus non esisterebbero senza la velocità di sviluppo notevolmente migliorata con cui Firebase ha potenziato il nostro piccolo team interno.

Come i bambini in un negozio di caramelle

Quando Sapsbus ha avuto accesso a Firebase, siamo rimasti immediatamente colpiti dalla quantità di funzioni e servizi con cui giocare. Stavamo letteralmente sorridendo come bambini in un negozio di caramelle! E con un SDK semplificato e una console chiavi in mano, queste nuove funzionalità e servizi funzionano ancora meglio insieme!

Takeaway #1: L’approccio integrato utilizzato in Firebase consente di assemblare rapidamente nuove funzionalità all’interno delle applicazioni con un lavoro di progettazione minimo.

Siamo stati in grado di utilizzare Firebase per costruire funzionalità che inizialmente avevamo disorientato a causa di un rapporto costi/benefici sfavorevole. Tutti sono passati dall’idea alla spedizione in pochi giorni!

Takeaway #2: Firebase vi permette di concentrarvi sulla soluzione di più problemi dei vostri clienti.

E la vera novità è il modo in cui queste caratteristiche interagiscono tra loro: in una console semplice, unica e unificata. Non sorprende, e con grande vantaggio, che l’Analytics sia al centro di tutto. Per esempio:

  • Gli eventi di crash non catturati sono intrecciati in app analytics. Possiamo finalmente ottenere l’intero contesto intorno a un’eccezione, e possiamo seguire la storia come l’utente ha vissuto prima dell’eccezione per una completa riproposizione del bug.
  • È possibile indirizzare le notifiche cloud sulla base di Analytics Audiences
  • Alcuni eventi sono incorporati (eccezione, aggiornamenti, first_open) che altrimenti richiederebbero un lavoro extra o che non possono essere rintracciati al di fuori dei prodotti Google…

Da asporto n. 3: Una Firebase Analytics unificata permette di prendere decisioni intelligenti e guidate dai dati.

Immergiamoci in alcune caratteristiche che abbiamo implementato nella nostra applicazione Android.

Configurazione di base – Boilerplate no more e molte caratteristiche fuori dalla scatola

La cosa bella di Firebase è che tutto si basa sulle importazioni a dipendenza dei gradi e sul plugin ‘com.google.gms.google-services’ che farà la magia. La configurazione è memorizzata in un google-services.json, e una volta aggiunto quel file al vostro progetto, siete pronti a partire!

Articolo molto interessante
Niente treno? Nessun problema. Nessun problema.

Naturalmente, è possibile personalizzare ulteriormente il modo in cui Firebase viene inizializzato.

Segnalazione di crash

Compilando semplicemente con ‘com.google.firebase:firebase-crash:9.x.x’, avrete la funzione di reporting “Fatal Crash” attiva e funzionante. Questo report della console tiene traccia di tutti i crash inaspettati con una traccia completa dello stack, e fornisce ulteriori dettagli per poter riprodurre e risolvere questi problemi.

È possibile tracciare le eccezioni non fatali e aggiungere i log per avere più contesto utilizzando:

FirebaseCrash.log ("Eccezione creazione carrello catturato");
FirebaseCrash.report(lanciabile);
</pre

Firebase Crash Reporting integra diversi altri strumenti che utilizziamo e fornisce il contesto che aiuta Sapsbus a costruire applicazioni migliori, più velocemente. È plug and play!

Analisi

Se si aggiunge semplicemente la compilazione 'com.google.firebase:firebase-measurement:9.x.x' al file del gradino, si ottengono i dati di base per il tracciamento. E inviare i tuoi dati personalizzati ad Analytics è facile, in base alle coppie di proprietà degli eventi, come la maggior parte delle librerie di tracking: logEvent(String eventName eventName, Bundle properties)

Nota : Su Android, le proprietà sono passate attraverso un Bundle, che è molto apprezzato invece di avere un JSONObject come nella maggior parte degli SDK analitici di terze parti.

Infine, ma non meno importante, tutti gli eventi che si inviano possono essere memorizzati e interrogati in BigQuery, che ci piace molto e vi aiuta ad arrivare ai dati grezzi per spingere ulteriormente l'analisi.

Suggerimento veloce: Diversi sapori di Gradle

In Sapsbus, usiamo diversi nomi di pacchetti e sapori per le nostre applicazioni Debug, QA e Release. La configurazione di Firebase si basa sul nome del pacchetto e sulla firma SHA-1, ma diverse app possono facilmente vivere all'interno dello stesso progetto Firebase. Assicuratevi di distinguere tra le funzionalità che sono condivise all'interno dello stesso progetto (FCM, Remote Config) e quelle che sono suddivise tra le app (Analytics, Crash).

L'unico posto in cui dovevamo essere più attenti a questa configurazione era nella FCM e nel modo in cui gestiamo i temi tra il debug e la produzione.

Configurazione remota

Una delle prime caratteristiche non prototipali che abbiamo implementato con Firebase era basata su Remote Config. Questa caratteristica è la chiave per sperimentare all'interno della vostra app e spedire più velocemente con meno rischi. Permette di avere un controllo remoto asincrono nelle vostre app.

Il Remote Config è un archivio di configurazione di coppie di valori chiave che può essere sincronizzato con i dispositivi. E si possono applicare condizioni su tali configurazioni per distribuire valori diversi a seconda di molti criteri: paesi, lingue, nomi di pacchetti, percentuale casuale di utenti...

In questo momento usiamo Remote Config:

  • Per l’interfaccia utente di test A/B e copywriting
  • Per invitare gli utenti a fare aggiornamenti dell’applicazione se alcune funzionalità non sono più supportate nelle versioni precedenti della nostra applicazione
  • Feature flags: per attivare o disattivare le funzioni a distanza in base alla lingua, alla posizione geografica, ecc…
Articolo molto interessante
Guide per celebrare il carnevale in Brasile

Per evitare di inquinare il codice con chiamate a FirebaseRemoteConfig nella Sapsbus App, stiamo centralizzando il codice all’interno di Application.ActivityLifecycleCallback che sono registrati a livello di Application. Questo ci permette di chiamare FirebaseRemoteConfig quando è accurato (sapendo che c’è un bel meccanismo di caching nella Remote Config), quando l’app viene utilizzata e non necessariamente in una cosiddetta schermata “principale” (che può essere difficile da gestire se si hanno varie strategie di deep-linking). Quindi memorizziamo la configurazione localmente nell’applicazione
.
SharedPreferences e siamo in grado di recuperarlo facilmente in qualsiasi punto del codice.

In sintesi, Remote Config ci fornisce un SDK performante e un maggiore controllo sulle nostre applicazioni ed esperimenti con poche righe di codice.

Notifiche push

Siamo stati in grado di inviare, ricevere e vedere le notifiche push in 3 minuti. L’installazione è stata super veloce, richiedendo solo il tempo di ricompilare l’applicazione con la libreria FCM aggiunta alle dipendenze dei gradini.

Con la nuova Firebase Console è possibile quindi inviare messaggi agli utenti in un determinato paese, lingua, pubblico e argomento, senza alcuna linea di codice aggiuntiva.

La console ci ha salvato dalla necessità di costruire e ospitare un server completo, e gli SDK ci hanno permesso di concentrarci solo sulla parte interessante: la ricezione di un messaggio e ciò che si intende fare con esso.

L’FCM consente anche molti livelli di personalizzazione. Anche l’utilizzo di una versione più personalizzata dell’SDK con richiesta HTTP/XMPP è molto semplice. In meno di 30 minuti si può avere un caso d’uso completo di notifica push utilizzando argomenti e un piccolo client HTTP/XMPP. Con FCM, lo sviluppatore può concentrarsi su ciò che conta. E le notifiche push sono la chiave per coinvolgere nuovamente gli utenti.

Naturalmente, un grande potere si accompagna a una grande responsabilità: è importante che le app trovino il modo migliore e più accurato per indirizzare i loro utenti senza spamming. Inoltre, è necessario farlo in modo ottimizzato (ad es. pre-fetch dei dati da presentare per evitare di caricarli dopo il click dell’utente).

Ecco alcuni casi d’uso basati sulla soluzione FCM (su Android utilizzando la richiesta HTTP e un client personalizzato):

  • Annuncio delle caratteristiche
  • Iscriviti a nuove rotte: “NUOVA PERCORSO! Ora è possibile prenotare il viaggio da A a B con Sapsbus”.
  • Codici di sconto: “Risparmiate il 20% acquistando i biglietti dell’autobus con il codice di sconto XYZ”

Funzione “Iscriviti a nuove rotte” costruita con Firebase

Questa funzione consente agli utenti di abbonarsi alle notifiche push quando cercano un percorso che non abbiamo ancora su Sapsbus.

Poiché l’app è tradotta in tredici lingue, abbiamo argomenti che tengono conto della lingua/locale (/topics/es_es_mytopics) e argomenti generali per i quali il messaggio visualizzabile è già tradotto all’interno dell’app. Qui utilizziamo argomenti generali e il carico utile è simile:

{
 "a": "/topics/debug_9q8yyk_9q5ctr",
 "dati": {
 "bb_tipo": "new_route",
 "bb_da": "9q8yyyk",
 "bb_to": "9q5ctr"
 }
}
</pre

E tutti i messaggi sono già incorporati nell'app.

Suggerimenti: Alcuni di voi potrebbero aver ricevuto una notifica di test dall'applicazione I/O. Nonostante si tratti di un test, siamo contenti che abbia funzionato. Per evitare lo stesso ai nostri utenti che potrebbero non essere altrettanto indulgenti, prefissiamo i nostri argomenti in base all'ambiente, come debug_.

Quando l'utente clicca sulla notifica, apre l'app con un deep-link, e atterra direttamente sulla schermata di ricerca principale con San Francisco e Los Angeles pre riempita.

Questa funzionalità ci avrebbe richiesto alcuni giorni di lavoro in più team per la costruzione, e con Firebase siamo riusciti a farlo con poche righe di codice.

Come usiamo il database in tempo reale

Realtime Database è il luogo perfetto per sperimentare quando è necessario memorizzare o recuperare dati statici dalla rete. È possibile memorizzare i file JSON che sono sincronizzati con il dispositivo in modo che rimangano disponibili anche quando non sono in linea. È possibile caricare i dati dall'applicazione al DB. Tutti i dati sono memorizzati in formato JSON.

In questo momento, usiamo il database in tempo reale per..:

  • Elencare i percorsi che stiamo lavorando per aggiungere al nostro inventario al fine di visualizzare messaggi personalizzati quando l’utente sta cercando questo percorso (vedi schermate sopra)
  • Recensioni dei viaggi in negozio
Articolo molto interessante
Ecco quanto si risparmia sui 10 viaggi più popolari d'America

TestLabs

TestLabs non è una novità, ma Firebase fornisce una bella console per sfogliare i risultati dei test e Android Studio permette di eseguire i test (Unità e Integrazione) direttamente nel cloud in un solo click, e scegliere su quali dispositivi e versioni di Android si desidera eseguire quei test. Potete vedere i log e il video delle sessioni di test in seguito, il che è ottimo per capire le cose sui dispositivi che potreste non avere a portata di mano.

Firebase: sviluppo mobile più efficiente per tutti!

Il lancio di Firebase è una gradita aggiunta alla comunità di sviluppo mobile. Allineando le vecchie funzionalità e quelle nuove sotto un SDK semplificato e una Console chiavi in mano, si può fare di più su Android, iOS e utilizzando l’SDK Javascript.

Dopo solo pochi mesi di lavoro con Google Firebase, siamo riusciti a fornire funzionalità di alta qualità molto più velocemente di quanto ci aspettassimo, a volte 10 volte più velocemente di quanto avevamo pianificato! Firebase ci ha aiutato a muoverci velocemente, a imparare velocemente il comportamento dei nostri utenti e a costruire un prodotto migliore.

Se non hai ancora provato la nostra app, scarica Sapsbus ora su Google Play.

Fonte: Sapsbus engineering

Lascia un commento