トースト通知をスケジュールする

スケジュールされたトースト通知を使用すると、アプリがその時点で実行されているかどうかに関係なく、後で通知を表示するようにスケジュールできます。 これは、通知などのフォローアップタスクをユーザーに表示する場合に便利です。通知の時刻と内容は事前にわかっています。

スケジュールされたトースト通知の配信ウィンドウは5分間であることに注意してください。 スケジュールされた配信時にコンピューターの電源がオフになっていて、5分以上経過している場合、通知はユーザーに関連付けられていない状態で "破棄" されます。 コンピューターの電源が切れた時間に関係なく通知を確実に配信する必要がある場合は、 次のコードサンプルに示すように、時間トリガー付きのバックグラウンドタスクを使用することをお勧めします。

重要

デスクトップアプリケーション (MSIX/スパースパッケージと従来のデスクトップの両方) には、通知を送信し、アクティブ化を処理するための手順が若干異なります。 次の手順に従ってください。ただし、は ToastNotificationManager DesktopNotificationManagerCompat デスクトップアプリ のドキュメントのクラスで置き換えてください。

重要な api: scheduledtoastnotification クラス

[前提条件]

このトピックを十分に理解するには、次のものが役立ちます。

手順 1: NuGet パッケージをインストールする

Microsoft Toolkit をインストールします。 Uwp. 通知 NuGet パッケージ。 このサンプルコードでは、このパッケージを使用します。 この記事の最後には、NuGet パッケージを使用しない "plain" コードスニペットが用意されています。 このパッケージを使用すると、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 はより汎用的な ID で、"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 非 MSIX/sparse アプリでは、前述のように ToastNotificationManagerCompat クラスを使用する必要があります。 ToastNotificationManager 自体を使用すると、"要素が見つかりません" という例外が表示されます。 すべての種類のアプリは、Compat クラスを使用して正常に動作します。

ライセンス認証の処理

アクティブ化の処理の詳細については、「 ローカルのトーストドキュメントを送信 する」を参照してください。 スケジュールされたトースト通知のアクティブ化は、ローカルトースト通知のアクティブ化と同様に処理されます。

アクションや入力などの追加

アクションや入力などの高度なトピックの詳細については、「 ローカルのトーストドキュメントを送信 する」を参照してください。 アクションと入力は、スケジュールされたトーストと同様にローカルのトーストでも動作します。

リソース