Всплывающее уведомление с ожидающей активацией обновления

Вы можете использовать класс PendingUpdate для создания многоэтапного взаимодействия во всплывающих уведомлениях. Например, как показано ниже, вы можете создать ряд всплывающих уведомлений, в которой последующих всплывающих уведомлений зависит от ответов на предыдущие уведомления.

Всплывающее уведомление с ожидающим обновлением

Важно!

Требуется обновление Desktop Fall Creators Update и библиотека уведомлений версии 2.0.0. Для просмотра ожидающих обновлений необходимо использовать сборку desktop 16299 или более поздней версии. Чтобы назначить кнопки PendingUpdate, необходимо использовать версию 2.0.0 или более позднюю библиотеку уведомлений NuGet для набора средств сообщества UWP. PendingUpdate поддерживается только на настольных компьютерах и игнорируется на других устройствах.

Предварительные требования

В этой статье предполагается, что вы знакомы со следующими темами.

Общие сведения

Для реализации всплывающего уведомления, использующего ожидающее обновление после активации...

  1. На кнопках фоновой активации всплывающего уведомления укажите значение AfterActivationBehavior в свойстве PendingUpdate

  2. Назначьте Tag (и при необходимости Group) при отправке всплывающего уведомления

  3. Когда пользователь нажмет кнопку, фоновая задача будет активирована, а всплывающее уведомление останется на экране в состоянии ожидания обновления

  4. В фоновой задаче отправьте новое всплывающее уведомление с новым содержимым, используя те же Tag и Group

Назначение PendingUpdate

На кнопках фоновой активации укажите значение AfterActivationBehavior в свойстве PendingUpdate. Обратите внимание, что это работает только для кнопок с типом ActivationType из Background.

new ToastContentBuilder()

    .AddText("Would you like to order lunch today?")

    .AddButton(new ToastButton("Yes", "action=orderLunch")
    {
        ActivationType = ToastActivationType.Background,

        ActivationOptions = new ToastActivationOptions()
        {
            AfterActivationBehavior = ToastAfterActivationBehavior.PendingUpdate
        }
    });

Использование свойства Tag в уведомлении

Чтобы позднее заменить уведомление, нужно назначить Tag (и при необходимости Group) в уведомлении.

// Create the notification
var notif = new ToastNotification(content.GetXml())
{
    Tag = "lunch"
};

// And show it
ToastNotificationManager.CreateToastNotifier().Show(notif);

Замена всплывающего уведомления новым содержимым

В ответ на нажатие кнопки пользователем активируется фоновая задача, и вам необходимо заменить всплывающее уведомление на новое содержимое. Для этого просто отправьте новое всплывающее уведомление с теми же значениями Tag и Group.

Мы настоятельно рекомендуем отключить звук при замене в ответ на нажатие кнопки, так как пользователь уже взаимодействует с вашим уведомлением.

// Generate new content
ToastContent content = new ToastContent()
{
    ...

    // We disable audio on all subsequent toasts since they appear right after the user
    // clicked something, so the user's attention is already captured
    Audio = new ToastAudio() { Silent = true }
};

// Create the new notification
var notif = new ToastNotification(content.GetXml())
{
    Tag = "lunch"
};

// And replace the old one with this one
ToastNotificationManager.CreateToastNotifier().Show(notif);