Interazione avanzata con le notifiche della Universal Windows Platform

di Matteo Tumiati, in Windows 10,

Continuiamo la serie sulle notifiche toast per parlare di un paio di interazioni aggiuntive che è possibile sperimentare.
Il primo punto riguarda la gestione dei download: sono spesso lunghi (soprattutto con connessioni lente o con file di grandi dimensioni), ci possono essere contenuti multipli (più canzoni di un album), il download può interrompersi o riprendere in base al network e, soprattutto, non è detto che l'utente tenga sempre l'applicazione aperta per vedere lo stato e il progresso del download.

A partire da Windows 10 Creators Update, le notifiche vengono in aiuto anche in questo caso, in cui è possibile mostrare lo stato di avanzamento direttamente nel centro notifiche:

ToastContent toastContent = new ToastContent()
{
    Visual = new ToastVisual()
    {
        BindingGeneric = new ToastBindingGeneric()
        {
            Children =
            {
                new AdaptiveText()
                {
                    Text = "Download contenuto in corso..."
                },
                new AdaptiveProgressBar()
                {
                    Value = new BindableProgressBarValue("progressValue"),
                    ValueStringOverride = new BindableString("progressValueString"),
                    Title = "Titolo contenuto",
                    Status = new BindableString("progressStatus")
                }
            }
        }
    }               
};
            
var toast = new ToastNotification(toastContent.GetXml());
toast.Tag = "progress";

ToastNotificationManager.CreateToastNotifier().Show(toast);

Come si può notare dallo script, non c'è molta differenza rispetto ai template visti in precedenza. Cambiano solamente due cose: la prima è che è stato aggiunto al template un controllo AdaptiveProgressBar che permette la visualizzazione della progress bar, del titolo, dello stato del download e dei contenuti che sono a tutti gli effetti in "binding", mentre la seconda differenza riguarda l'assegnazione di un tag per identificare la notifica.

Come abbiamo detto, i contenuti sono in binding, proprio perché ha senso che vengano aggiornati nel momento del bisogno, quindi è sufficiente aggiornare la notifica recuperandola dal tag e cambiando i suoi metadati:

private void Update()
{
    var data = new NotificationData();
    data.Values["progressValue"] = "0.5";
    data.Values["progressValueString"] = "50%";
    data.Values["progressStatus"] = "Running...";

    ToastNotificationManager.CreateToastNotifier().Update(data, "progress");
}

Maggiori informazioni sono disponibili su
http://aspit.co/bis

Per il secondo aspetto, invece, analizziamo un altro controllo che permette di interagire con l'applicazione, ovvero la TextBox. Lo scenario tipico è quello del "quick reply" quando arriva un messaggio, in cui c'è la notifica ma non c'è bisogno di aprire l'applicazione per rispondere e inviare, il tutto può essere gestito dal centro notifiche e da un background task.

Per integrarla in una notifica, è sufficiente aggiungere un input, come abbiamo già visto in precedenza, di tipo ToastTextBox:

ToastContent toastContent = new ToastContent()
{
    Visual = new ToastVisual() { ... },                
    Actions = new ToastActionsCustom()
    {
        Inputs =
        {
            new ToastTextBox("textBox")
            {
                PlaceholderContent = "reply"
            }
        },
        Buttons =
        {
            new ToastButton("Send", "action=reply")
            {
                ActivationType = ToastActivationType.Background,
                TextBoxId = "textbox"
            }
        }
    },
};

In questo caso, il controllo è demandato ad un background task che, leggerà il contenuto della casella di testo tramite l'attributo "textbox", e quindi seguirà tutto il flusso necessario all'invio del messaggio.

Il risultato finale di una notifica che include entrambi gli scenari, è simile al seguente:

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi