Планирование всплывающего уведомления
Запланированные всплывающие уведомления позволяют запланировать появление уведомления в дальнейшем независимо от того, работает ли ваше приложение в это время. Это полезно для таких сценариев, как отображение напоминаний или других последующих задач для пользователя, где время и содержимое уведомления известны заранее.
Обратите внимание, что запланированные всплывающие уведомления имеют окно доставки 5 минут. Если компьютер отключен во время запланированной доставки и остается отключенным дольше 5 минут, уведомление будет удалено, так как оно больше не относится к пользователю. Если вам нужна гарантированная доставка уведомлений независимо от времени отключения компьютера, рекомендуется использовать фоновую задачу с триггером времени, как показано в этом примере кода.
Внимание
Классические приложения (как упакованные, так и распакованные) имеют немного разные шаги для отправки уведомлений и обработки активации. Следуйте приведенным ниже инструкциям, однако замените ToastNotificationManager
DesktopNotificationManagerCompat
класс из документации по классическим приложениям .
Важные API: класс ScheduledToastNotification
Необходимые компоненты
Чтобы полностью понять эту тему, следующее будет полезно...
- Рабочая информация о терминах и понятиях всплывающего уведомления. Дополнительные сведения см. в разделе "Toast" и "Центр уведомлений".
- Знакомство с содержимым уведомлений Windows 10. Дополнительные сведения см . в документации по содержимому всплывающего уведомления.
- Проект приложения UWP для Windows 10
Шаг 1. Установка пакета NuGet
Установите пакет NuGet Microsoft.Toolkit.Uwp.Notifications. В нашем примере кода будет использоваться этот пакет. В конце статьи мы предоставим фрагменты кода "обычного" кода, которые не используют пакеты NuGet. Этот пакет позволяет создавать всплывающие уведомления без использования XML.
Шаг 2. Добавление объявлений пространства имен
using Microsoft.Toolkit.Uwp.Notifications; // Notifications library
Шаг 3. Планирование уведомления
Мы будем использовать простое текстовое уведомление, напоминающее студенту о домашней работе, которую они должны сегодня. Создайте уведомление и запланируйте его!
// Construct the content and schedule the toast!
new ToastContentBuilder()
.AddArgument("action", "viewItemsDueToday")
.AddText("ASTR 170B1")
.AddText("You have 3 items due today!");
.Schedule(DateTime.Now.AddSeconds(5));
Предоставление первичного ключа для всплывающего уведомления
Если вы хотите программно отменить, удалить или заменить запланированное уведомление, необходимо использовать свойство Tag (и необязательно свойство Group), чтобы предоставить первичный ключ для уведомления. Затем этот первичный ключ можно использовать в будущем для отмены, удаления или замены уведомления.
Дополнительные сведения о замене и удалении уже доставленных уведомлений см. в кратком руководстве по управлению всплывающими уведомлениями в центре уведомлений (XAML).
Тег и группа объединяются в качестве составного первичного ключа. Группа — это более универсальный идентификатор, где можно назначать такие группы, как wallPosts, "messages", "friendRequests" и т. д. А затем тег должен однозначно идентифицировать уведомление из группы. С помощью универсальной группы можно удалить все уведомления из этой группы с помощью API RemoveGroup.
// Construct the content and schedule the toast!
new ToastContentBuilder()
.AddArgument("action", "viewItemsDueToday")
.AddText("ASTR 170B1")
.AddText("You have 3 items due today!");
.Schedule(DateTime.Now.AddSeconds(5), toast =>
{
toast.Tag = "18365";
toast.Group = "ASTR 170B1";
});
Отмена запланированных уведомлений
Чтобы отменить запланированное уведомление, сначала необходимо получить список всех запланированных уведомлений.
Затем найдите запланированное всплывающее уведомление, соответствующее тегу (и необязательно группе), указанному ранее, и вызовите RemoveFromSchedule().
// Create the toast notifier
ToastNotifierCompat notifier = ToastNotificationManagerCompat.CreateToastNotifier();
// Get the list of scheduled toasts that haven't appeared yet
IReadOnlyList<ScheduledToastNotification> scheduledToasts = notifier.GetScheduledToastNotifications();
// Find our scheduled toast we want to cancel
var toRemove = scheduledToasts.FirstOrDefault(i => i.Tag == "18365" && i.Group == "ASTR 170B1");
if (toRemove != null)
{
// And remove it from the schedule
notifier.RemoveFromSchedule(toRemove);
}
Внимание
Приложение Win32 должно использовать класс ToastNotificationManagerCompat , как показано выше. Если вы используете toastNotificationManager , то вы получите исключение, не найденное элементом. Все типы приложений могут использовать класс Compat , и он будет работать правильно.
Обработка активации
Дополнительные сведения об обработке активации см. в документации по отправке локального всплывающего уведомления. Активация запланированного всплывающего уведомления обрабатывается так же, как активация локального всплывающего уведомления.
Добавление действий, входных данных и многое другое
Дополнительные сведения о расширенных разделах, таких как действия и входные данные, см. в документации по отправке локальных всплывающих сообщений. Действия и входные данные работают одинаково в локальных томах, что и в запланированных томах.
Ресурсы
Windows developer