#Focus: come funzionerà il centro operativo in Windows 10

Dalla guida per gli sviluppatori per Windows 10 Preview, diamo uno sguardo un po’ tecnico alla gestione delle notifiche nel centro operativo di Windows 10. Le novità sono esposte in un video da Jerry Nixon e Andy Wigley, due developer evangelist, di Microsoft e ci mostrano la struttura che “sta sotto” alla gestione delle notifiche da parte delle applicazioni. Dato che con Windows 10 un’applicazione condividerà il codice tra la versione “Mobile” e la versione “Desktop”, queste informazioni potranno applicarsi a tutte le versioni del nostro amato (e venturo) sistema operativo.

L’esperienza utente del centro operativo

Il centro operativo (action center in inglese) è la schermata che possiamo “tirare giù” da Windows Phone 8.1 tramite la tendina. Presenta una sezione con delle scorciatoie e una sezione dove si accumuleranno le nostre notifiche. Questa schermata è stata portata anche sul desktop e questa è la questione fondamentale del video da cui stiamo carpendo importanti dettagli tecnici. In Windows 10 ci sarà anche la possibilità di avere molte più scorciatoie in una sezione “espandibile”. Per le notifiche, l’utente potrà quindi riceverle dalle applicazioni locali o dal cloud anche sul PC o sul suo tablet Windows, senza mandarle perse come ora con Windows 8 perché si accumuleranno nel nostro centro operativo. Le notifiche saranno raggruppate a seconda della applicazione, ma anche l’applicazione stessa potrà creare più gruppi di notifiche. Dal centro operativo l’utente potrà aprire o eliminare singole notifiche, così come interi gruppi o svuotare tutto il centro operativo in modo veloce.

Dalle schermate esposte nel video, vediamo una sorta di mirroring tra i nostri dispositivi. Sembra che una notifica ricevuta sul telefono, ad esempio, risulterà visibile anche sul nostro PC e viceversa. Questa potrebbe essere una funzione alquanto interessante se stiamo usando un solo dispositivo e non abbiamo voglia di guardare contemporaneamente più schermi per tenerci al passo con le notifiche, soprattutto se alcune app riservate allo smartphone (come telefono e SMS) saranno gestibili in qualche modo anche dal PC. Una cosa allettante, ma non verificata.

Ogni applicazione può visualizzare un massimo di 20 notifiche nel centro operativo, ma le notifiche sono versatili in quanto a funzionalità. Ad esempio possono essere delle notifiche con una scadenza, possono essere persistenti o silenziose. Tutte queste funzionalità hanno bisogno di essere implementate nell’applicazione e soprattutto in modo semplice da parte degli sviluppatori, così da garantire una coerenza dell’esperienza utente. Ciò viene chiaramente consigliato da Andy Wigley, cioè la consistenza delle funzioni dell’applicazione. Questo significa che se l’utente tocca una determinata notifica, vuole essere portato a quel determinato contenuto. Così come se l’utente toglie o visualizza alcune notifiche, il contatore sulla tile dell’app deve aggiornarsi di conseguenza e le notifiche sul centro operativo devono essere tolte o aggiornate quando necessario. La soddisfazione dell’utente deve sempre essere messa al primo posto quando si sviluppa una applicazione.

Il lato applicazione e le nuove API

A supportare questo backend piuttosto funzionale vi sono le API (Application Programming Interface, non quelle che svolazzano) per la gestione del centro operativo, utilizzabili dagli sviluppatori per conferire le funzionalità di cui abbiamo appena parlato. Ogni notifica può portare con sé, a livello del codice, alcuni tag e parametri che permettono all’app di gestire adeguatamente il centro operativo. Una applicazione può da sola aggiungere, rimuovere o aggiornare una sua determinata notifica, impostare scadenze e modalità di avviso.

Ogni notifica può presentare il parametro toasty.Group che le assegnerà un gruppo, in questo modo l’app può autonomamente raggruppare le notifiche sotto un egida comune. Con il parametro toasty.Tag, invece, si assegna un ID univoco alla notifica in modo da potercisi riferire selettivamente dopo. Se ad esempio l’app vuole rimuovere una notifica, la può selezionare tramite il gruppo e il tag che gli sono stati assegnati precedentemente. La rimozione di una notifica può rendersi necessaria per vari motivi, ad esempio perché l’evento a cui si riferisce non è più disponibile o perché l’utente ha letto la notifica all’intero dell’applicazione. Tutto ciò può essere gestito all’interno dell’applicazione (o con dei task in background) chiamando le funzioni toasty.Remove e toasty.RemoveGroup associate con il toasty.Group e toasty.Tag per svolgere le funzioni sopracitate.

Dagli stessi due parametri appena esposti, è possibile anche rimpiazzare una notifica. Ciò risulta utile con contenuti altamente variabili, ad esempio una applicazione di finanza che ci notifica sull’andamento di un titolo. Non ha senso avere 20 notifiche con lo storico dell’andamento perché all’utente potrebbe interessare soltanto quella più recente. In alcuni scenari d’uso, quindi, conviene aggiornare o sostituire una notifica con nuovi dati.

Ma la notifica può anche avere una scadenza temporizzata in modo da non dover richiamare l’applicazione per essere rimossa. Impostando il parametro toasty.ExpirationTime è possibile conferire una temporizzazione alla notifica, che verrà poi eliminata autonomamente dal sistema operativo. Ciò si rivela utile ad esempio per annunci che hanno una scadenza, per cui non ha più senso la lettura della notifica da parte dell’utente oltre quella precisa soglia temporale.

Un altro scenario è la necessità di creare notifiche “silenziose”, cioè che vengano aggiunte al centro operativo senza banner o suoni di alcun genere. Ciò può essere utilizzato per informazioni di basso rilievo o poca importanza, ma che comunque può essere utile accumulare nel centro operativo. Attualmente lo Store di Windows Phone 8.1 fa così, con una notifica silenziosa del tipo “Ho aggiornato 3 app”, che chi vuole può consultare senza fretta. Dal punto di vista del codice ciò può essere fatto inserendo il parametro toasty.SuppressPopup = true.

Ma cosa fare se è l’utente a togliere le notifiche e vogliamo ricevere un evento per l’applicazione? Per questo viene in soccorso una nuova funzione introdotta con Windows 10: ToastNotificationManager. Con quest’ultima funzionalità, ogni qual volta l’utente rimuove una notifica o un gruppo di notifiche, viene generato un evento che l’applicazione in questione può ricevere e sfruttare in vari modi (ToastNotificationHistoryChangedTrigger). Primo fra tutti per aggiornare il contatore delle notifiche sulla tile, cosa che prima era alquanto complicata da implementare. Ora quindi sarà possibile creare un task in background quando l’utente va a interagire con le notifiche della nostra app grazie all’evento . Con il task potremo rimuovere, aggiornare o immettere nuove notifiche, oppure ricevere tutta la lista delle notifiche o svolgere altre azioni all’interno del task.

Conclusioni

Sicuramente in Microsoft tengono molto alla gestione del centro operativo anche perché noi utenti lo amiamo, è senza dubbio una funzionalità eccellente ed imprescindibile anche se mutuata dagli altri sistemi operativi. Molte delle cose che abbiamo esposto c’erano già con Windows Phone 8.1, ma ora verranno estese a tutti i dispositivi con Windows 10 con qualche novità e più semplicità nella gestione del centro operativo da parte degli sviluppatori, così come sarà di riflesso meno problematico interagire con esse da parte dell’utente (ricordate il fastidio di dover togliere le notifiche di Whatsapp anche se avevamo già letto e riletto quella determinata conversazione?).

Fonte: Channel 9

Articolo precedenteArticolo successivo
Francesco Tili
When you change the way you see the world, you'll change the world you see - S. Nadella
  • Moreno Casalanguida
  • Gisto una curiosità: non è che i due si auto-definiscono evangelisti, gli evangelist sono una figura professionale che si occupa di promuovere una tecnologia o un prodotto attraverso la realizzazione di meeting, workshop, convegni, diverse tipologie di manifestazioni, programmi di formazioni, tutorial, dimostrazioni, blog, ecc…
    In Microsft (come in molte altre aziende) esiste una divisione che raggruppa tutti gli evangelist, il Developer & Platform Evangelism Group.

    • Federico

      magari a forza di autodefinircisi sperano di ricevere un incarico ufficiale, cosa non difficile vista la pessima scelta di Nadella riguardo al “capo” dei predicatori.

      • Hanno già l’incarico, Jerry Nixon è un Developer Evangelist molto attivo negli ultimi anni (si trova molto materiale prodotto da lui, parecchio su Microsoft Virutal Accademy e compare spesso in diversi eventi Microsoft) si occupa della piattaforma di sviluppo in generale, Wigley invece è un Technical Evangelist che si occupa molto di Windows Phone sia su Channel9 che su Microsoft Virtual Accademy

        • Federico

          Capito.
          Ho dato una seconda occhiata a Native… non è che mi convinca molto, tu lo hai provato? Vi è un reale beneficio nell’esecuzione o è solo una questione di tempo di avvio?

          • No, non ho provato, dopotutto scrivo qualche app per diletto (ed esclusivo uso personale) e per ora ho sviluppato solo per Windows Phone (per il quale il .NET Native non è ancora disponibile).
            Come ho detto sinceramente dubito che riescano davvero ad ottenere prestazioni paragonabili al C++.
            Di sicuro i tempi di avvio si riducono anche della metà (se non di più), almeno su Windows Phone (dove è possibile utilizzare una specie di precursore di .NET Native).

          • Federico

            I tempi di avvio alla fine sono irrilevanti, ciò che conta migliorare è il tempo di esecuzione.
            Non capisco proprio come si possa fare, dal momento che se vuoi un vero codice gestito non puoi non avere un overhead consistente perchè qualsiasi controllo ha un costo computazionale.

          • Certo, ma il principale problema è il compilatore JIT, che non è in grado di fare quelle ottimizzazioni che può permettersi di fare un compilatore C++ ad esempio, quindi l’idea è di spostare il momento della generazione del codice nativo passando dalla compilazione da just-in-time ad ahead-of-time (se non ho capito male ciò dovrebbe avvenire nello Store, come avviene adesso per WP8.x), potendo così permettere al compilatore di poter fare tutte le ottimizzazioni del caso.
            Questo dovrebbe aumentare abbastanza le performance, resta l’overhead dovuto al GC, che sinceramente non ho idea di quanto possa incidere.

          • Federico

            Eliminare la compilazione JIT porta indubbiamente ad una miglior qualità del codice eseguibile, ma l’overhead non hai modo di eliminarlo.
            Il peso maggiore della perdita di performance non è nella scarsa ottimizzazione ma proprio nella quantità di codice di controllo supplementare introdotto dall’esecuzione managed.
            L’unica via per ovviare sarebbe quella di avere un coprocessore dedicato all’esecuzione del CIL, ma non mi pare cosa all’orizzonte.

    • Grazie per la precisazione, appena posso lo correggo… Scusami, non sono esperto di queste cariche aziendali ?

      • Era giusto una curiosità.
        Se proprio dovessi fare una precisazione sarebbe che la maggior parte delle funzioni descritte sono già supportaate in WP8.1 (notifiche ghost, tag, gruppi, aggiornamento e scadenza di una notifica), mentre ToastNotificationManager è nuova.

        PS: Certo però che Developer & Platform Evangelism Group sembra il nome di una setta :D

        • Sì infatti quella è l’unica novità (oltre al fatto che anche in Windows 10 per desktop ci sarà tutto il “pacchetto”). Comunque non mi piace per niente quella carica aziendale xD sembra come dici tu! Non dà l’idea di un incarico serio!

          • Ma sono una figura seria ed importante, in altri settori li chiamano in altri modi (sono sostanzialmente dei promoter), nelle aziende di software e tecnologie di solito però li chiamano così.

  • Andrea Perseval

    Una Bella novita’ del nuovo Centro notifiche dovrebbe essere la possibilita’ di eliminare le notifiche Una alla Volta ad esempio Una sola e-mail e non tutto Il gruppo outlook

    • c’è dalla prima build di Windows 10 ;)

      • Andrea Perseval

        Grazie Mariano Io Sono fermo alla 8.1 :)

        • come tutti, dato che MS ha rilasciato la prima build a pochissimi dispositivi e, comunque, di gente che dovrebbe smanettarci anche nelle prossime mi auguro sia poca… il guaio è che si tratta di una cosa abbastanza facile che attira anche gente che non capisce di aver a che fare con una Technical Preview e manda feedback inutili