Come ormai la maggior parte degli sviluppatori Windows Phone sanno i dettagli tecnici della piattaforma su cui sviluppiamo sono stati rilasciati ufficialmente, fra questi c'è il più controverso di tutti: la mancanza del multitasking. Per mancanza di multitasking intendo la mancanza della possibilità di lasciare la nostra applicazione in stato di running o in background all'infinito come succedeva precedentemente, dovendo killare le app che sono state aperte ore se non giorni fa.
Lasciando perdere i vari discorsi commerciali e di marketing, molti dei quali errati o incompleti, è ovvio che per tutto quanto riguarda la sfera Microsoft non ci sono problemi, potremo certamente ascoltare un brano musicale mentre componiamo un sms o una mail, passiamo a capire come questa non sarà una limitazione per noi sviluppatori bensì un nuovo approccio per seguire la linea guida (vincente secondo me) di questa piattaforma ancora una volta: l'utente finale al centro di tutto.
Il nuovo approccio che ci viene proposto si chiama Microsoft Push Notification Service, ne vediamo qui sotto uno schema pratico.

Ora capiamo lo scopo di questo nuovo tipo di approccio, la nostra applicazione non può rimanere in esecuzione e segnalare all'utente qualsiasi tipo di informazione appunto perché non può rimanere in esecuzione in eterno, quello che può fare è segnalare all'utente qualcosa come ad esempio il cambio di stato di un informazione, c'è una nuova notizia, la previsione meteo della mia città è cambiata, ho ricevuto un messaggio privato su uno dei tanti social network ecc. ecc. Il concetto principale che sta sotto questa metodologia e che ne permette il funzionamento è che la nostra applicazione può soltanto notificare l'informazione ma sarà solo e soltanto l'utente a decidere se aprire l'app o meno per proseguire ad approfondire l'informazione. Questo sistema quindi funziona molto bene se l'applicazione usa il servizio di notifiche solo per segnalare informazioni che possono davvero essere utili all'utente al contrario se continuasse a notificare qualsiasi tipo di info anche inutile finirebbe per infastidirlo e far si che disintalli l'app in maniera permanente. Il consiglio quindi è di far si che le notifiche vengano usate per segnalare solo informazioni importanti e pertinenti con quello che l'utente desidera magari permettendogli anche di configurare il “livello di verbosità”: mi interessano tutte le notifiche oppure voglio solo sapere quando si sta per verificare un eclissi solare :-)
Dall'immagine possiamo ricavare un importante informazione, il cuore del sistema di notifiche è composto da due componenti il Push Notification Framework che contiene tutti i componenti per l'uso delle notifiche e il Push Client che funge da proxy col mondo esterno.
I tipi di notifiche che si possono utilizzare sono 3 e sono:
- Toast Notification
- Tile Notification
- RAW Notification
La Toast Notification è la più visibile dei 3 tipi di notifiche, quindi è quella che va usata quando davvero si vuol dare risalto ad un informazione importante. Questa notifica viene visualizzata come una fascia colorata che appare in alto in primo piano sopra qualsiasi altra schermata si stia visualizzando, permette di configurare parametri: il colore della fascetta e due testi, un titolo ed una descrizione, mentre l'icona utilizzata sarà la stessa icona che viene usata nel nostro programma. Toccando la fascetta della notifica verrà aperta l'applicazione che l'ha generata. Un informazione importante su questo tipo di notifica è che viene gestita esclusivamente dal sistema operativo cioè che viene visualizzata quando la nostra applicazione non è in esecuzione, se lo fosse la fascetta non verrebbe visualizzata ma avremo comunque modo di intercettare l'evento e mostrare l'informazione all'utente nel modo che preferiamo.
La Tile Notification viene visualizzata come un cambio del contenuto del Tile della nostra applicazione nell'area di quick launch. Se la nostra applicazione è nello start screen possiamo modificare il contenuto del nostro tile modificandone 3 proprietà, l'immagine di sfondo e i due testi associati. L'immagine può cambiare specificando come indirizzo qualsiasi URI valido quindi sia sul dispositivo sia su internet, i due testi invece rappresentano il titolo (in basso a sinistra) e un contatore (in alto a destra).
La RAW Notification è differente dalle prime due menzionate su un punto fondamentale, è una notifica che viene lanciata soltanto se la nostra applicazione è in esecuzione, questo significa che a differenza della Toast Notification che viene gestita dal sistema operativo la RAW Notification dovrà essere gestita dall'applicazione che avrà la libertà di decidere come visualizzarla. Questo tipo di notifica si differenzia anche per la possibilità di portare con se delle informazioni che poi verranno passate all'applicazione stessa.
Nei prossimo post vedremo nel dettaglio come usare i 3 tipi di notifiche.