排程快顯通知
排定快顯通知可讓您將通知排程在稍後再顯示,無論您的應用程式到時是否在執行。 此方式對於下述情境來說很實用:已事先知道通知的時間和內容的情況下,對使用者顯示提醒或其他後續跟進工作。
請注意,排定快顯通知的有效傳遞時間為 5 分鐘。 如果電腦在排定傳遞時間內為關閉狀態,且保持關閉超過 5 分鐘,則會「捨棄」通知,因為不再與使用者相關。 如果您需要保證無論電腦關閉多久都會傳遞通知,建議您使用背景工作搭配時間觸發程式,如此程式碼範例所示。
重要
桌面應用程式 (已封裝和未封裝) 傳送通知和處理啟用的步驟稍有不同。 請遵循下列指示進行,但將 ToastNotificationManager
取代為桌面應用程式文件中的 DesktopNotificationManagerCompat
類別。
必要條件
若要完全了解本主題,下列內容將很有幫助...
- 快顯通知詞彙和概念的工作知識。 如需詳細資訊,請參閱快顯和重要訊息中心概觀。
- 熟悉 Windows 10 快顯通知內容。 如需詳細資訊,請參閱快顯內容文件。
- Windows 10 UWP 應用程式專案
步驟 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 類別,而且會正常運作。
啟用處理
請參閱傳送本機快顯文件,以進一步了解如何處理啟用。 處理啟用排定快顯通知的方式與啟用本機快顯通知的方式相同。
新增動作、輸入等
請參閱傳送本機快顯文件,以進一步了解進階主題,例如動作和輸入。 動作和輸入在本機快顯中的運作方式與排定快顯中相同。