共用方式為


app排程通知

預定的 app 通知使您可以安排通知在稍後出現,而無論您 app 是否在當時運行。 這適用於向用戶顯示提醒或其他後續工作的案例,其中通知的時間和內容是事先已知的。

請注意,排 app 程的通知有 5 分鐘的傳遞時間範圍。 如果電腦在預定的傳送時間關閉,且持續關閉超過 5 分鐘,通知將會被「捨棄」,因為不再與用戶相關。 如果您需要確保即使在電腦關閉很長時間後也能傳遞通知,我們建議您使用具有時間觸發功能的背景工作,如此處程式碼範例 所示。

Note

“toast notification” 一詞正取代為 “app notification”。 這些術語皆指的是 Windows 的相同功能,但隨著時間推移,我們將在文件中逐步淘汰「toast 通知」一詞的使用。

Important

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

重要 APIScheduledToastNotification 類別

Prerequisites

若要完整瞭解本主題,下列內容將很有説明...

  • 具備基本的通知詞彙和概念的了解 app。 如需詳細資訊,請參閱 Toast 和控制中心概觀
  • 熟悉 Windows 10 app 通知內容。 如需詳細資訊,請參閱 App 通知內容 檔。
  • Windows 10 UWP app 專案

步驟 1:安裝 NuGet 套件

安裝 Microsoft.Toolkit.Uwp.Notifications NuGet 套件。 我們的程式代碼範例會使用此套件。 在本文結尾,我們將提供不使用任何 NuGet 套件的「純文字」代碼段。 此套件可讓您建立 app 通知而不使用 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 屬性) 來提供通知的主鍵。 然後,您可以在未來使用此主鍵來取消、移除或取代通知。

若要查看取代/移除已傳遞 app 通知的詳細資訊,請參閱 快速入門:在控制中心 (XAML) 中管理 toast 通知

標記與群組的結合共同構成一個複合主鍵。 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";
    });

取消排程通知

若要取消排程的通知,您必須先擷取所有排程通知的清單。

然後,尋找與您先前指定的標籤(及選用的群組)相符的app通知,並呼叫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);
}

Important

未封裝的(在執行期間缺少套件身分識別的)Win32 app 必須使用 ToastNotificationManagerCompat 類別,如上所述。 如果您使用 ToastNotificationManager 本身,則會收到找不到元素的例外狀況。 所有類型的應用程式都可以使用 Compat 類別,而且會正常運作。

Activation handling

請參閱 傳送本機 app 通知 文件,以深入瞭解如何處理啟用。 排程 app 通知的啟用處理方式與本機 app 通知的啟用處理方式相同。

新增動作、輸入等等

請參閱 傳送本機 app 通知 檔,以深入瞭解進階主題,例如動作和輸入。 動作和輸入在本機 app 通知中的運作方式與排程 app 通知相同。

Resources