トースト通知をスケジュールする
スケジュールされたトースト通知を使用すると、アプリが実行されているかどうかに関係なく、後で通知を表示するスケジュールを設定できます。 これは、ユーザーのリマインダーや他のフォローアップ タスクの表示など、通知の時刻と内容が事前にわかっているシナリオで役立ちます。
スケジュールされたトースト通知の配信時間は 5 分間です。 スケジュールされた配信時間中にコンピューターの電源がオフになり、5 分以上オフのままになっていた場合、通知はユーザーと関連がなくなったので "ドロップ" されます。 コンピューターがオフになっている期間に関係なく、通知の配信を保証する必要がある場合は、次のコード サンプルに示すとおり、時刻トリガーでバックグラウンド タスクを使用することをお勧めします。
重要
デスクトップ アプリケーション (パッケージ化されたアプリケーションとパッケージ化されていないアプリケーションの両方) には、通知の送信とアクティブ化の処理の手順が若干異なります。 以下の手順に従ってください。ただし、ToastNotificationManager
はデスクトップ アプリのドキュメントにある DesktopNotificationManagerCompat
クラスに置き換えます。
重要な API: ScheduledToastNotification クラス
前提条件
このトピックを完全に理解するには、次の項目が役立ちます。
- トースト通知の用語と概念に関する実用的な知識。 詳細については、「 Toast とアクション センターの概要を参照してください。
- Windows 10 トースト通知コンテンツに関する知識。 詳細については、 toast コンテンツのドキュメントを参照してください。
- 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 プロパティ) を使って通知の主キーを提供する必要があります。 そうすると、今後この主キーを使って、通知の取り消し、削除、差し替えができるようになります。
既に配信されているトースト通知の置換または削除の詳細については、「 Quickstart: アクション センター (XAML) でのトースト通知の管理」を参照してください。
タグとグループの組み合わせは、複合主キーとして機能します。 Group はより汎用的な識別子であり、"wallPosts"、"messages"、"friendRequests" などのグループを割り当てることができます。タグは、グループ内から通知自体を一意に識別する必要があります。 汎用グループを使用すると、 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";
});
スケジュールされた通知を取り消す
スケジュールされた通知を取り消すには、まず、スケジュールされた通知の一覧を取得する必要があります。
次に、先ほど指定した Tag (および必要に応じて Group) に一致するスケジュールされたトーストを見つけ、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);
}
重要
パッケージ化されていない (実行時にパッケージ ID がない) Win32 アプリでは、上記のように ToastNotificationManagerCompat クラスを使用する必要があります。 ToastNotificationManager 自体を使用すると、要素が見つからない例外が発生します。 すべての種類のアプリで Compat クラスを使用でき、正常に動作します。
アクティブ化の処理
アクティブ化の処理の詳細については、ローカル トーストの送信に関するドキュメントを参照してください。 スケジュールされたトースト通知のアクティブ化は、ローカル トースト通知のアクティブ化と同じように処理されます。
アクション、入力、その他の追加
アクションや入力など、高度なトピックの詳細については、ローカル トーストの送信に関するドキュメントを参照してください。 アクションと入力は、ローカル トーストの場合も、スケジュールされたトーストと同じように動作します。
リソース
Windows developer