トースト通知をスケジュールする
スケジュールされたトースト通知を使用すると、アプリが実行されているかどうかに関係なく、後で通知を表示するスケジュールを設定できます。 これは、ユーザーのリマインダーや他のフォローアップ タスクの表示など、通知の時刻と内容が事前にわかっているシナリオで役立ちます。
スケジュールされたトースト通知の配信時間は 5 分間です。 スケジュールされた配信時間中にコンピューターの電源がオフになり、5 分以上オフのままになっていた場合、通知はユーザーと関連がなくなったので "ドロップ" されます。 コンピューターがオフになっている期間に関係なく、通知の配信を保証する必要がある場合は、次のコード サンプルに示すとおり、時刻トリガーでバックグラウンド タスクを使用することをお勧めします。
重要
デスクトップ アプリケーション (パッケージ化されたアプリケーションとパッケージ化されていないアプリケーションの両方) には、通知を送信し、アクティブ化を処理するための手順が少し異なります。 以下の手順に従ってください。ただし、ToastNotificationManager
はデスクトップ アプリのドキュメントにある DesktopNotificationManagerCompat
クラスに置き換えます。
重要な API: ScheduledToastNotification クラス
前提条件
このトピックを十分に理解するには、次のものが役立ちます。
- トースト通知に関する用語と概念についての実用的知識。 詳しくは、トーストとアクション センターの概要に関するブログをご覧ください。
- 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 はより汎用的な 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";
});
スケジュールされた通知を取り消す
スケジュールされた通知を取り消すには、まず、スケジュールされた通知の一覧を取得する必要があります。
次に、先ほど指定した 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示