你可以设置 app 通知,安排在稍后显示,即使当时你的 app 没有在运行。 这对于向用户显示提醒或其他后续任务等方案非常有用,其中通知的时间和内容是提前已知的。
计划的 app 通知的传递窗口为 5 分钟。 如果计算机在计划传递期间关闭,并且保持关闭时间超过 5 分钟,通知将“删除”,因为不再与用户相关。 建议在需要保证无论计算机关闭多长时间都能传递通知时,使用带有时间触发器的后台任务。 有关详细信息,请参阅 后台任务。
有关通知的详细信息 app ,请参阅 App 通知概述。
注释
本文中的代码示例使用 Microsoft.Windows.AppNotifications 命名空间生成通知内容和用于计划的 Windows.UI.Notifications 命名空间。 这两个命名空间可以一起使用在同一 app个命名空间中。
安排通知
若要计划将来的通知,请使用 AppNotificationBuilder 定义通知内容, 然后调用 AddToSchedule,并使用 ScheduledToastNotification。 以下示例将安排从现在起 10 秒后显示通知。
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);
标记和组属性充当通知的复合主键。 设置这些值后,可以取消或替换计划通知,如下一部分所示。
取消计划通知
若要取消计划通知,请调用 GetScheduledToastNotifications 以检索未处理的通知列表,然后调用 RemoveFromSchedule ,来移除与您之前指定的标记相符的通知。
var notifier = ToastNotificationManager.CreateToastNotifier();
var scheduled = notifier.GetScheduledToastNotifications();
foreach (var notification in scheduled)
{
if (notification.Tag == "18365")
{
notifier.RemoveFromSchedule(notification);
}
}