Pianificare una app notifica

È possibile pianificare la visualizzazione di una app notifica in un secondo momento, indipendentemente dal fatto che app sia in esecuzione in quel momento. Ciò è utile per scenari come la visualizzazione di promemoria o altre attività di completamento per l'utente, in cui il tempo e il contenuto della notifica sono noti in anticipo.

Le notifiche pianificate app hanno una finestra di recapito di 5 minuti. Se il computer è spento durante l'orario di recapito pianificato e rimane disattivato per più di 5 minuti, la notifica verrà "eliminata" perché non è più rilevante per l'utente. Se è necessario un recapito garantito delle notifiche indipendentemente dal tempo di disattivazione del computer, è consigliabile usare un'attività in background con un trigger di tempo. Per altre informazioni, vedere Attività in background.

Per altre informazioni sulle app notifiche, vedere App Panoramica delle notifiche.

Annotazioni

Gli esempi di codice in questo articolo usano lo spazio dei nomi per compilare il contenuto delle notifiche e lo spazio dei nomi />

Pianificare la notifica

Per pianificare una notifica per un'ora futura, usare AppNotificationBuilder per definire il contenuto della notifica, chiamare quindi AddToSchedule con un ScheduledToastNotification. Nell'esempio seguente viene programmata la visualizzazione di una notifica tra 10 secondi.

using Microsoft.Windows.AppNotifications.Builder;
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;

var payload = new AppNotificationBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!")
    .BuildNotification()
    .Payload;

var doc = new XmlDocument();
doc.LoadXml(payload);

var scheduledNotification = new ScheduledToastNotification(doc, DateTimeOffset.Now.AddSeconds(10));
scheduledNotification.Tag = "18365";
scheduledNotification.Group = "ASTR 170B1";

ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledNotification);

Le proprietà Tag e Group fungono da chiave primaria composita per la notifica. L'impostazione di questi valori consente di annullare o sostituire la notifica pianificata in un secondo momento, come illustrato nella sezione successiva.

Annullare le notifiche pianificate

Per annullare una notifica pianificata, chiama GetScheduledToastNotifications per recuperare l'elenco delle notifiche in sospeso, quindi chiama RemoveFromSchedule su quello corrispondente al tag specificato in precedenza.

var notifier = ToastNotificationManager.CreateToastNotifier();
var scheduled = notifier.GetScheduledToastNotifications();

foreach (var notification in scheduled)
{
    if (notification.Tag == "18365")
    {
        notifier.RemoveFromSchedule(notification);
    }
}

Vedere anche