E' arrivata l'estate HOT! Sconti fino al 70% su tutti i corsi!
Davide Copelli WebSU

Notifiche Push in Android e Cordova con Firebase Cloud Messaging

Articolo a cura di: Davide Copelli {ing}

Facebook

Una delle funzionalità più richieste nello sviluppo di app personalizzate (per Android e iOS), è sicuramente la possibilità per il cliente di inviare dei messaggi push ai propri utenti. Questo è molto utile in quanto, con le notifiche push, si ha una forte targhetizzazione degli utenti, e a seconda di come è sviluppata l'app, è possibile inviare messaggi diversi a gruppi di utenti diversi.

Ad esempio per un mio cliente, abbiamo sviluppato un'app con Cordova/PhoneGap, che permettesse agli utenti, tramite un pannello di settaggio, di scegliere la tipologia di informazioni su cui desiderava essere avvisato. Con solo due click, da un pannello web, ora il mio cliente può inviare una notifica personalizzato, diversificandolo a seconda dell'interesse manifestato dall'utente, durante l'installazione e la configurazione dell'app.

Per maggiori informazioni su come creare un'app di questo tipo segui adesso il nostro corso: Creare App per inviare messaggi con Firebase Cloud Messagging e Cordova

Esistono diverse infrastrutture per assolvere all'invio dei notifiche push, ma una di questa, è la nuova versione di Google Cloud Messaging che ora è stata inglobata nel brand Firebase diventando così Firebase Cloud Messagging.

firebase console

Potrebbe sembrare solo un cambio di nome, in realtà la nuova infrastruttura presenta due caratteristiche a mio avviso molto interessante, ossia una semplificazione nello sviluppo del codice, e l'uso di una console web grafica per l'invio delle notifiche a determinati utenti, sulla base di dati presenti al'interno di Firebase Analytics.

Quest'ultima è davvero una bella novità, in quanto non è più necessario creare un pannello di amministrazione per l'invio dei messaggi.  Vediamo allora in dettaglio come è possibile sfruttare questo nuovo pannello, nell'ipotesi di aver già sviluppato un'applicazione con Cordova/PhoneGap, che sia in grado di ricevere notifiche push.

Il pannello ti offre la possibilità di:

  • Inviare messaggi a singoli dispositivi quindi a singoli utenti
  • Inviare messaggi a gruppi di utenti interessati ad uno specifico argomento (Topic)
  • Inviare messaggi a gruppi di utenti che hanno fatto una specifica azione (es. acquisto prodotto)

Per accedere alla console, devi cliccare il link qui a fianco: https://firebase.google.com/console/

Dovrai entrare con le classiche credenziali unificate per tutti i servizi google.Dovrai poi creare il tuo primo progetto, inserendo il titolo del progetto, e la regione in cui pensi siano presenti gli utenti che utilizzeranno la tua applicazione. In alternativa, puoi importare un progetto esistente creato con Google Cloud Messaging.

creare progetto firebase

Nel mio caso, ho già creato l'applicazione che riceverà le notifiche (per questo aspetto ti rimando al corso di prossima uscita: Notifiche push in Android/Cordova con Firebase Cloud Messaging), e una volta selezionata, dovrai accedere alla sezione "Notifications".

invio notifiche

Dovrai poi aggiungere l'app Android, cliccando sulla relativa icona, e inserire il package name scelto in fase di progettazione dell'app.

aggiunta app android

A questo punto verrà generato un file di estensione .json, che dovrai trasferire all'interno della cartella android del tuo progetto.

file json

Questo file è suddiviso sostanzialmente in due parti: project_info e client. Il primo oggetto contiene all'interno tutta una serie di dati legati al progetto, come  il numero del progetto e l'url del database firebase. Client invece, contiene un array di oggetti json con varie informazioni legate all'applicazione.

Poi dovrai aprire il tuo progetto Android con Android Studio e modificare il file build.gradle, sia del progetto, che dell'app, in modo che i google-services-plugin, utilizzino questo file e i dati presenti all'interno.

Per fare questo dorvai aggiungere queste righe di codice:

  1. Nel file build.gradle relativo al progetto (project/build.gradle):

    buildscript {
      dependencies {
        // Aggiungi anche questa riga
        classpath 'com.google.gms:google-services:3.0.0'
      }
    }
  2. Nel file build.gradle relativo all'app (project/android/build.gradle):

    ...
    // Aggiungi questa riga alla fine del file
    apply plugin: 'com.google.gms.google-services'
    
    
  3. E infine dovrai sincronizzare nuovamente il progetto

In caso di errori (Failed to resolve: com.google.firebase:firebase-core:9.0.0) è molto probabile che tu debba aggiornare i pacchetti Google Play Services e Google Repository. Dovrai quindi aprire Android Sdk Manager e aggiornarli con la classica procedura di aggiornamento pacchetti. Al termine dovrai nuovamente sincronizzare il progetto.

Una volta lanciata l'app nell'emulatore, dovrai tornare nel pannello di Firebase e selezionare nuovamente la voce "notifications" dal menu di sinistra, per iniziare il processo di invio del tuo primo messaggio o notifica.

Potrai scegliere un insieme di dati tra cui il mesaggio vero e proprio (Prova Messaggio FCM), se inviare subito o programmarlo per una specifica data, il target a cui inviarlo, sulla base o del "topic" con cui si è registrato il tuo utente, o individuando gli utenti che hanno installato una specifica app individuata da un opportuno package name (nel mio caso com.videocorsi.push).

parametri messaggio

E' possibile poi specificare anche altri parametri opzionali avanzati, come il titolo della notifica, che apparirà al posto del nome dell'app scelta in fase di pubblicazione, e altri parametri personalizzati, individuati dalle coppie chiave=valore.

parametri avanzati

Fatto questo, cliccando su invia, tutti gli utenti, che hanno installato quella particolare app, riceveranno una notifica, che potranno visualizzare facilmente scorrendo il dito verso il basso.

invio messaggio in corso

esempio ricezione notifica push

WebStartUniversity
WebStartUniversity

Ricevi le anteprime dei nuovi corsi! Iscriviti Gratuitamente

Cliccando su Iscriviti, accetti le nostre condizioni d'uso e la politica sulla privacy

×