Oggi giorno essere aggiornati in tempo reale è ormai necessario ma soprattutto possibile.

È bello vedersi recapitare sul proprio smartphone un messaggio relativo a un evento che si terrà vicino a noi in serata, oppure la notifica che il regalo appena acquistato su Amazon è stato spedito, o ancora un messaggio sulle previsioni meteo dei prossimi due giorni.

Queste notifiche sono conosciute nel gergo informatico sotto il nome di Push Notifications.

 

Come mai Push Notifications?

Questo tipo di notifiche vengono inviate da un servizio remoto per informare l’utente di una qualche novità: il dispositivo mobile non fa nessun tipo di interrogazione ma semplicemente intercetta la notifica quando il server gliela fornisce.

La tecnologia in questione è chiamata “Push” ossia è il server che “spinge” le notifiche sul dispositivo senza che questo debba richiamarle periodicamente.

 

A cosa servono?

L’obiettivo principale è quello di inviare un’informazione agli utenti della propria applicazione, anche se questi non la stanno usando.

Una notifica può contenere informazioni di carattere specifico: ad esempio, le condizioni del meteo, le novità di una testata giornalistica, un’offerta su un prodotto o un servizio, un evento nelle vicinanze oppure possono chiedere all’utente di eseguire un’azione.

Le Push Notifications sono un modo per rimanere in diretto contatto con gli utenti della vostra applicazione, senza dover passare per filtri antispam e senza dover aprire applicazioni intermedie, poiché le notifiche sono gestite direttamente dal sistema operativo.

 

Come funzionano?

Le figure coinvolte nelle Push Notifications sono sostanzialmente 3:

  1. Notification Service: servizio ufficiale per la consegna delle notifiche, messo a disposizione dal proprietario del sistema operativo del dispositivo (Google, Apple, Microsoft, ecc.)
  2. Publisher Service: chi inoltra le notifiche al Notification Service, solitamente il proprietario dell’applicazione
  3. Mobile Application: l’applicazione scaricata e installata su dispositivo mobile, atta a ricevere le notifiche

Queste figure mettono in moto il flusso delle notifiche.

 

push-notifications

 

 

Prima però è necessario passare per le seguenti tre fasi affinché sia possibile iniziare ad inviare e ricevere le informazioni:

  1. Registrazione
  2. Attivazione
  3. Invio

 

Fase di Registrazione

Il Publisher, ossia chi pubblica l’applicazione, deve necessariamente registrarsi al servizio di Push Notifications del sistema operativo interessato (Android, iOS, Windows Phone, ecc).

Il servizio metterà dunque a disposizione un set di API (Application Programming Interface), ossia un insieme di funzionalità necessarie per comunicare col servizio stesso.

Sull’applicazione verrà poi installata una libreria, comunemente chiamata SDK, per comunicare con le API sopracitate.

L’ultimo step è quello di pubblicare l’applicazione su uno store online.

 

Fase di Attivazione

L’utente dovrà innanzitutto recarsi sullo store e scaricare l’applicazione.

Una volta installata, l’utente aprirà l’applicazione e nel frattempo una coppia di ID (uno per l’app e uno per il dispositivo) saranno registrati attraverso il Notification Service.

Gli identificativi vengono perciò scambiati dal sistema operativo verso l’applicazione e dall’applicazione verso il Publisher, in modo da essere utilizzati per la fase d’invio.

 

Fase di Invio

A questo punto, il Publisher dovrà comporre manualmente o automaticamente i messaggi da inviare, scegliendo la lista di identificativi a cui inviarli: i messaggi saranno così inviati immediatamente o pianificati per un invio futuro.

I messaggi vengono inoltrati al Notification Service e trasformati in Push Notifications dirette all’applicazione.

 

 

Come posso usare le Push Notifications?

Esistono sostanzialmente due tipologie di soluzioni:

  1. On Cloud
  2. On Premise

 

 

Soluzioni On Cloud

Le soluzioni On Cloud sono ideali per chi non volesse mantenere l’infrastruttura server per le Push Notifications, senza però rinunciare a un servizio stabile, affidabile e ampiamente utilizzato.

I sistemi più supportati sono Android e iOS ma sono anche ampiamente supportati altri sistemi come Windows Phone e FirefoxOS. Un esempio di soluzione On Cloud è il servizio messo a disposizione da Google Cloud Pub/Sub e Amazon SNS: entrambi i servizi hanno un sistema di pagamento simili e si basano sul numero di notifiche inviate, sul consumo di rete e sull’eventuale storage online.

Esistono anche altre soluzioni disponibili sul mercato con sistemi di pagamento differenti e con ulteriori servizi aggiuntivi: Ionic Cloud, Kumulos, Urban AirShip e PushWoosh sono alcuni dei nomi più noti dopo i due giganti sopracitati.

Tutti questi servizi mettono a disposizione un set di API HTTP ed eventualmente un’interfaccia web per inviare manualmente o automaticamente le notifiche ai dispositivi registrati.

 

Soluzioni On Premise

Le soluzioni On Premise possono essere convenienti qualora si disponga già di un’infrastruttura affidabile e si voglia aggiungere un ulteriore servizio, appunto di Push Notifications.

Ogni soluzione si appoggia sui sistemi di notifica dei vari sistemi operativi (iOS, Android, Windows Phone, …), mettendo a disposizione un comodo set di API pronte all’uso.

GoRush è un progetto Open Source scritto in GoLang che copre esattamente questa esigenza: è performante, veloce, affidabile e supporta dispositivi Android e iOS.

Esistono tanti altri progetti simili ed Open Source scritti in diversi linguaggi e per piattaforme differenti: Gaurun è un’altra soluzione simile a GoRush, scritta nel medesimo linguaggio;

AirNotifier è scritto in Python e supporta anche i dispositivi Windows Phone; Pushd è una soluzione a 360° scritta in Node.js e si presenta come una vera e propria infrastruttura.

 

 

Ok, quindi quale scegliere?

Entrambe le soluzioni, On Cloud e On Premise, sono ottime ma rispondono a requisiti differenti.

Nel caso si disponga di un’infrastruttura già avviata e mantenuta, le soluzioni On Premise risultano più consigliate; diverso è il caso in cui il servizio deve essere completamente esterno e non gestito dal proprio personale IT, perciò le soluzioni On Cloud sono più adatte.

Tra le soluzioni On Cloud, quelle più appropriate sono quelle tarate sul quantitativo di operazioni effettuate quando si hanno applicazioni utilizzate da un vasto gruppo di dispositivi: Google Cloud e Amazon SNS sono molto simili ed entrambe competitive.

Se invece il bacino d’utenza è limitato e si necessita di servizi aggiuntivi, Urban AirShip e PushWoosh sono quelle più consigliate.

Invece, tra le soluzioni On Premise, se si necessita di un sistema completo, Pushd è sicuramente il progetto più fornito.

Altrimenti, se risultasse necessario puntare sulle performance e su servizi più leggeri, GoRush e Gaurun sono quelli più competitivi.

Vincenzo Ferrari