共用方式為


排程快顯通知

排定快顯通知可讓您將通知排程在稍後再顯示,無論您的應用程式到時是否在執行。 此方式對於下述情境來說很實用:已事先知道通知的時間和內容的情況下,對使用者顯示提醒或其他後續跟進工作。

請注意,排定快顯通知的有效傳遞時間為 5 分鐘。 如果電腦在排定傳遞時間內為關閉狀態,且保持關閉超過 5 分鐘,則會「捨棄」通知,因為不再與使用者相關。 如果您需要保證無論電腦關閉多久都會傳遞通知,建議您使用背景工作搭配時間觸發程式,如此程式碼範例所示。

重要

桌面應用程式 (已封裝和未封裝) 傳送通知和處理啟用的步驟稍有不同。 請遵循下列指示進行,但將 ToastNotificationManager 取代為桌面應用程式文件中的 DesktopNotificationManagerCompat 類別。

重要 APIScheduledToastNotification 類別

必要條件

若要完全了解本主題,下列內容將很有幫助...

步驟 1:安裝 NuGet 套件

安裝 Microsoft.Toolkit.Uwp.Notifications NuGet 套件。 我們的程式碼範例將會使用此套件。 在本文結尾,我們將提供不使用任何 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)

Tag 和 Group 可組合成為複合主索引鍵。 Group 是較通用的識別碼,您可以在其中指派 “wallPosts”、“messages”、“friendRequests” 等群組,然後 Tag 就可在群組內做為通知本身的唯一識別。 藉由使用一般群組,即可使用 RemoveGroup API 從該群組移除所有通知。

// 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 類別,而且會正常運作。

啟用處理

請參閱傳送本機快顯文件,以進一步了解如何處理啟用。 處理啟用排定快顯通知的方式與啟用本機快顯通知的方式相同。

新增動作、輸入等

請參閱傳送本機快顯文件,以進一步了解進階主題,例如動作和輸入。 動作和輸入在本機快顯中的運作方式與排定快顯中相同。

資源