
Questa piattaforma offre una vastissima serie di funzionalità, divise in moduli, con funzioni ben distinte. I moduli che compongono la piattaforma sono:
- Realtime Database
- Authentication
- Crash Reporting
- Cloud Storage
- Cloud Functions
- Hosting
- Google Analytics
- Performance Monitoring
- Cloud Messagging
- Remote Config
- Invites
- Dynamic Links
- App Indexing
- AdMob
- AdWords
Tutte queste funzionalità possono essere gestite tramite un'efficace, dal bel layout grafico, console. Da questa console possiamo settare tutte le impostazioni necessarie al funzionamento di ogni singola funzionalità all’interno della nostra applicazione, partendo dalla prima azione: il collegamento dell’applicazione mobile alla console di Firebase per fare in modo che, tra le due, si crei una sorta di “ponte” di comunicazione.
Tra le mie esperienze ho avuto a che fare con praticamente tutti i moduli che la compongono, a volte per vera e pura necessità, altre per semplice curiosità. Ho voluto costruire l’elenco delle funzionalità in ordine decrescente di utilità e necessità, all’interno delle applicazioni in cui ho integrato una o più funzionalità di Firebase, personalizzandolo, in base ovviamente alla mia esperienza.
REALTIME DATABASE
Come è facile intuire dal nome, questo modulo consente di gestire un database online permettendo lo storage dei dati, di cui l’applicazione necessita, online. Non mi stancherò mai di ripetere che questa funzionalità è gratuita e, chiunque lavori nell’ambito della programmazione, o abbia anche solo provato ad affacciarsi ad essa, sa quanto sia oneroso affittare o acquistare un server su cui costruire un database, soprattutto se parliamo di sviluppatori privati o amatoriali, i quali molto spesso dispongono di un budget limitato.
Tramite Realtime Database è possibile gestire i propri dati nel semplice, pratico e leggerissimo formato JSON, costruendo un albero di dipendenze di oggetti che verrà gestito in maniera veramente ottima e performante direttamente da Firebase, senza che ci si debba preoccuparsi di nulla. Dalla console possiamo modificare liberamente il file JSON e organizzarlo secondo il nostro gusto. Dalla console è possibile visualizzare il nostro file JSON come un semplice file di testo oppure con una comodissima visualizzazione a dipendenze dalla quale sarà possibile aggiungere, rimuovere o modificare, elementi; inoltre è possibile esportare il nostro file per poterlo salvare dove vogliamo oppure creare il nostro database da un file JSON già pronto, tramite la funzione di importazione.
Tramite l'apposita sezione è inoltre possibile decidere le regole di visibilità del nostro database, ovvero se potrà essere letto e/o scritto solamente da utenti autenticati alla nostra applicazione, oppure da qualsiasi utilizzatore della nostra applicazione.
Infine, quella che secondo me è la funzionalità del database più utile e spettacolare, la migliore, è la notifica istantanea dei cambiamenti apportati al JSON all'applicazione tramite le notifiche di callback. Grazie a questi avvisi, l'applicazione riceverà i cambiamenti che sono stati apportati al database in tempo reale e senza che l'utente debba assolutamente fare nulla. Grazie a questa funzionalità, l'applicazione sarà totalmente responsive ai cambiamenti apportati alla sua fonte da cui acquisisce i dati e l'utente potrà beneficiare in real-time di ognuno di questi cambiamenti.
AUTHENTICATION
Questo modulo permette di gestire l’autenticazione degli utenti che si registrano o effettuano il login nella nostra applicazione. Tramite Firebase Authentication è possibile gestire la registrazione degli utenti con mail e password; oppure tramite gli account dei principali social network, come Facebook, Google+, Twitter e GitHub; oppure tramite il proprio numero di telefono. La gestione della fase di registrazione e di login, è veramente semplice e intuitiva da implementare per uno sviluppatore esperto ma, cosa non da poco, è veramente poco complessa anche per uno sviluppatore alle prime armi.
Per tutte le funzionalità, è possibile gestire le impostazioni di questo modulo dalla console di Firebase: nello specifico è possibile decidere quali metodi di autenticazione abilitare sulla nostra applicazione, impostare un modello predefinito di email che verrà inviata per il recupero password e un’altra per la modifica della password, oppure decidere quanti account, associati alla stessa mail, è possibile che l’utente crei. Dalla console è possibile visualizzare tutte le email degli account iscritti e per ognuna di esse è possibile bloccare o eliminare l’account.
CRASH REPORTING
Questo componente si occupa di gestire i crash che avvengono durante l’utilizzo della nostra applicazione, ma in che modo?
Dunque, per prima cosa è bene specificare che questa funzionalità è stata recentemente aggiornata per via dell’acquisizione da parte di Google di Fabric, una piattaforma mobile che integra alcune funzionalità atte a migliorare qualitativamente lo sviluppo di un’applicazione mobile. Tra le funzionalità messe a disposizione di Fabric, troviamo Crashlytics: una libreria molto potente per la gestione degli errori e crash dell’applicazione durante il suo utilizzo. Crashlytics è stata successivamente integrata nella suite di Firebase andando a coprire la parte funzionale del modulo Firebase Crash Reporting.
Grazie a Crash Reporting è possibile monitorare tutti i crash e le interruzioni della nostra applicazione una volta che viene rilasciata sugli store ed essere informati in real-time, tramite email, ogni volta che si presenta un errore durante l’utilizzo dell’app. Tramite una comoda e fantastica console, messa a disposizione da Fabric, è possibile risalire a tante informazioni utili per scoprire la causa del crash tra cui: la classe e la riga di codice colpevole del blocco, lo stack trace dell’errore lanciato e altre utili informazioni come il dispositivo su cui è installata l’app, versione del O.S. e tanto altro. Anche in questo caso mi sembra ovvio il motivo per cui questo strumento sia di fondamentale importanza e di grandissima utilità. Molto spesso gli errori che si verificano infatti, non ci vengono notificati immediatamente e quindi molti utenti finali possono decidere di abbandonare l’utilizzo dell’applicazione o lasciare recensioni negative ancor prima che che lo sviluppatore si accorga del problema. Inoltre, su Android, è possibile, tramite l’installazione del plugin di Fabric per Android Studio, condividere l'APK della nostra applicazione in fase di sviluppo a chiunque, tramite la semplice mail, senza la necessità di dover firmare con la chiave dello store il nostro APK e soprattutto senza la necessità di dover creare la scheda dello store per poter utilizzare la funzione di Beta Testing della Play Developer Console. In pratica possiamo condividere rapidamente ogni minima modifica che implementa la nostra app a clienti, amici o tester.
CLOUD STORAGE
Anche in questo caso il nome non lascia spazio all'immaginazione e, com'è facile intuire, la funzionalità di questo modulo è quella di permettere lo storage di file da utilizzare all'interno e all'esterno della nostra applicazione mobile.
Tramite Cloud Storage possiamo effettuare l'upload o il download di file tramite l'applicazione e organizzarli come vogliamo creando cartelle e sottocartelle, il tutto direttamente da codice in locale. Ho utilizzato personalmente questa funzione per l'upload ed il download di immagini e sono rimasto veramente colpito dall'efficienza con la quale opera. Una volta effettuato l'upload di un file viene automaticamente creato un URL grazie al quale è possibile condividere il file appena caricato.
HOSTING
Questa funzionalità è veramente fantastica, lo so che probabilmente l'ho ripetuto anche per altre e probabilmente lo ripeterò anche per le prossime, ma quando l'ho provata sono rimasto veramente colpito. Praticamente, grazie a questo modello, possiamo caricare in Firebase il sito Web creato per la nostra applicazione (o per qualsiasi altro scopo) tramite qualche semplice comando da linea di comando. In questo modo è possibile implementare e sviluppare il proprio sito Web in locale e, a ogni nuova versione, rilasciarlo online in pochi e semplici comandi. Dalla console è possibile associare un dominio dal quale il sito web potrà essere raggiunto oppure utilizzare l’URL creato da Firebase (non molto bello da vedere).
GOOGLE ANALYTICS
Questa funzionalità sarà nota a molti ma probabilmente non tutti sanno che Google ha sviluppato due piattaforme di analisi: Google Analytics per Firebase e la vecchia e web-oriented Google Analytics. All’inizio questa distinzione mi ha creato molta confusione ma, tramite articoli letti sul Web, ho capito che la nuova funzionalità di analisi integrata in Firebase è orientata esclusivamente al mondo delle applicazioni mobile, mentre la vecchia e già esistente funzionalità, è orientata al mondo Web.
Tramite Firebase Analytics è possibile conoscere praticamente tutto riguardo all’utilizzo della nostra applicazione da parte degli utenti.
Come funzionalità di base Analytics ci propone statistiche riguardo al numero di dispositivi su cui è installata l’applicazione, divisione in percentuale dei vari O.S., numero di avvii dell’applicazione per ogni singolo dispositivo e tantissime altre informazioni e metriche di analisi. Oltre a queste funzionalità è possibile personalizzare la tipologia di informazioni e di dati che ci interessa acquisire mediante l’implementazione di eventi personalizzati (ad esempio quante volte il pulsante di una data schermata viene premuto).
Grazie a questo strumento è possibile capire quali sono gli aspetti vincenti della nostra applicazione più utilizzati, e quindi, continuare a migliorare tali funzionalità; o viceversa: quali non vengono utilizzate dagli utenti e quindi riconsiderare o eliminare la loro implementazione.
PERFORMANCE MONITORING
Questa funzionalità è una delle ultime implementate in Firebase, tanto è vero che è ancora in versione beta. Grazie a Performance Monitoring è possibile tenere sotto controllo le performance della nostra applicazione durante la sua esecuzione e il suo utilizzo da parte degli utenti. In particolare permette di monitorare i tempi di avvio, i tempi di apertura delle varie schermate, le chiamate HTTP/S e tanto altro, senza dover far nulla a parte l'integrazione del modulo nel progetto.
Tramite Performance Monitoring sarà quindi possibile individuare dove e quando le performance della nostra applicazione possono essere migliorate per permettere una corretta e fluida esperienza utente. Le informazioni che ci vengono restituite infatti sono molto dettagliate e possono essere suddivise per paese, dispositivo, versione dell'applicazione e versione del OS.
Infine, per poter personalizzare al meglio il monitoraggio delle prestazioni della nostra app, è possibile creare delle “traces” per registrare le performance in determinate situazioni o Stati e, tramite i “counters”, calcolare il numero di volte che una determinata azione viene compiuta durante una “traces”.
CLOUD MESSAGGING
Firebase Cloud Messagging è la nuova versione della vecchia piattaforma Google Cloud Messagging e porta con sé notevoli miglioramenti e nuove funzionalità, oltre a quelle già presenti nel suo antenato. La funzionalità di questo modulo è ben chiara e definita: gestire le notifiche push. Tramite questo modulo è possibile implementare e gestire le notifiche push sui dispositivi mobile nei quali è installata la nostra applicazione implementando poche righe di codice lato mobile.
Tramite l'apposita sezione della console di Firebase è possibile gestire l'invio delle nostre notifiche in maniera veramente semplice e comoda, con la possibilità di impostare vari parametri e metodiche nell'invio. Possiamo inviare la nostra notifica a un gruppo ben definito di utenti, dispositivi o per argomento. Oltre a poter, ovviamente, impostare un titolo ed una descrizione per personalizzare la nostra notifica, sarà possibile passare una coppia chiave-valore che, se gestita nel codice della nostra applicazione, ci permetterà di personalizzare ulteriormente l'esperienza a livello utente per quanto riguarda le notifiche push lanciate dall'app. E' possibile programmare l'invio a un'ora e data predefinite se non vogliamo che la notifica venga inviata subito.
REMOTE CONFIG
Questo modulo e la sua funzionalità risultano tanto semplici da comprendere per capirne l'utilità per una applicazione mobile. Chiunque nella propria applicazione utilizza, per un motivo o per un'altro, valori parametrizzati e statici per modificare comportamenti o aspetti grafici dell'applicazione. Il Remote Config di Firebase permette di salvare tutti i valori che necessitano di essere parametrizzati per la nostra applicazione e di condividerli con l'applicazione allo stesso modo che avviene con Firebase Database.
In sostanza è lo storage di un singolo oggetto con una singola istanza contenente tutte le configurazioni e le impostazioni statiche della nostra applicazione. E fin qui niente di speciale. Proviamo ora a pensare al caso in cui volessimo modificare un comportamento o un aspetto grafico della nostra applicazione che è gestito, e si basa, su uno dei parametri presenti in Firebase Config. Ci basterà modificare questo parametro comodamente dalla nostra console online e, se l’applicazione è stata correttamente configurata per gestire questo modulo, i cambiamenti saranno subito applicati in real-time, l’utente vedrà l’applicazione cambiare aspetto o dinamica di funzionamento nel momento stesso in cui sta usando l’applicazione o al prossimo avvio dell’app. Pensate a cosa si sarebbe dovuto fare se Firebase Config non fosse presente nell’applicazione; i parametri statici sarebbero dovuti essere modificati e, successivamente, avremmo dovuto risottomettere l’applicazione nei rispettivi store. E' quindi evidente il vantaggio e il risparmio di tempo che questo modulo permette di ottenere.
INVITES e DYNAMIC LINKS
Firebase Invites è uno dei modi migliore per aumentare la condivisione della nostra applicazione e fare in modo che siano gli stessi utenti utilizzatori a pubblicizzare la nostra app, tramite questo pratico e funzionale modulo che associato a Dynamic Links, permette di creare un'esperienza di condivisione totalmente personalizzata e ad hoc per le varie piattaforme mobile. Tramite questo modulo si dà la possibilità agli utenti di inviare una mail o un messaggio testuale agli indirizzi o ai numeri salvati nella rubrica del proprio Smartphone; l'utente non dovrà far altro che selezionare tutti i destinatari a cui vuole inviare l'invito e scrivere un messaggio di invito, il tutto all'interno di una semplice schermata già predisposta per noi da Firebase Invites. Una volta inoltrato l'invito, i vari destinatari riceveranno una mail o un messaggio contente un link che, grazie all'utilizzo di Firebase Dynamics Links, sarà appunto un link “dinamico” che una volta cliccato aprirà lo store del relativo S.O. dal quale visualizziamo l’invito.
A questo punto penso di aver parlato di tutti i componenti e di tutte le funzionalità che conosco della piattaforma Firebase, i moduli App Indexing, AdMob e AdWords non li ho mai utilizzati personalmente ma penso che molti di voi sappiamo a cosa servono e le loro funzionalità dato che sono parecchio conosciuti poiché sono moduli esistenti da molto tempo successivamente inglobati nella suite di Firebase.
Questo articolo è solo frutto del mio studio personale e della mia grande passione, quindi concedetemi, e perdonatemi, se ho commesso qualche errore o detto cose inesatte. Se fosse così vi chiedo per favore d'informarmi così da poter migliorare, perché alla fine è questo il mio scopo: migliorare giorno dopo giorno.