次の方法で共有


コレクションを使用したトースト通知のグループ化

コレクションを使用して、アクション センターでアプリのトーストを整理します。 コレクションを使用すると、ユーザーはアクション センター内の情報をより簡単に見つけ、開発者は通知をより適切に管理できます。 以下の API を使用すると、通知コレクションを削除、作成、更新できます。

重要

Creators Update が必要: トースト コレクションを使用するには、SDK 15063 をターゲットとし、ビルド 15063 以降を実行している必要があります。 関連 API には、 Windows.UI.Notifications.ToastCollection、および Windows.UI.Notifications.ToastCollectionManager が含まれます。

チャット グループに基づいて通知を分離するメッセージング アプリの例を次に示します。各タイトル (Comp Sci 160A プロジェクト チャット、ダイレクト メッセージ、Lacrosse チーム チャット) は個別のコレクションです。 通知はすべて同じアプリからの通知であっても、別のアプリの通知と同じように個別にグループ化されていることに注意してください。 通知を整理するより微妙な方法をお探しの場合は、 toast ヘッダーを参照してください
2 つの異なる通知グループを含むコレクションの例

コレクションの作成

各コレクションを作成するときは、上の図に示すように、表示名とアイコンを指定する必要があります。アイコンは、コレクションのタイトルの一部としてアクション センター内に表示されます。 コレクションには、ユーザーがコレクションのタイトルをクリックしたときに、アプリがアプリ内の適切な場所に移動するのに役立つ起動引数も必要です。

コレクションの作成

// Create a toast collection
public async void CreateToastCollection()
{
	string displayName = "Work Email"; 
	string launchArg = "NavigateToWorkEmailInbox"; 
	Uri icon = new Windows.Foundation.Uri("ms-appx:///Assets/workEmail.png");

	// Constructor
	ToastCollection workEmailToastCollection = new ToastCollection(
		"MyToastCollection", 
		displayName,
 		launchArg, 
		icon);

	// Calls the platform to create the collection
	await ToastNotificationManager.GetDefault().GetToastCollectionManager().SaveToastCollectionAsync(workEmailToastCollection);  								
}

コレクションへの通知の送信

ここでは、ローカル、スケジュール、プッシュの 3 つの異なるトースト パイプラインからの通知の送信について説明します。 以下のコードで送信するサンプル トーストを作成する各例について、各パイプラインを介してコレクションにトーストを追加する方法に焦点を当てます。

トースト コンテンツの作成:

// Construct the content
var content = new ToastContentBuilder()
	.AddText("Adam sent a message to the group")
	.GetToastContent();

コレクションにトーストを送信する

// Create the toast
ToastNotification toast = new ToastNotification(content.GetXml());

// Get the collection notifier
var notifier = await ToastNotificationManager.GetDefault().GetToastNotifierForToastCollectionIdAsync("MyToastCollection");

// And show the toast
notifier.Show(toast);

スケジュールされたトーストをコレクションに追加する

// Create scheduled toast from XML above
ScheduledToastNotification scheduledToast = new ScheduledToastNotification(content.GetXml(), DateTimeOffset.Now.AddSeconds(10));

// Get notifier
var notifier = await ToastNotificationManager.GetDefault().GetToastNotifierForToastCollectionIdAsync("MyToastCollection");
    
// Add to schedule
notifier.AddToSchedule(scheduledToast);

プッシュ トーストをコレクションに送信する

プッシュ トーストの場合は、POST メッセージに X-WNS-CollectionId ヘッダーを追加する必要があります。

// Add header to HTTP request
request.Headers.Add("X-WNS-CollectionId", collectionId); 

コレクションの管理

トースト コレクション マネージャーを作成する

この 「コレクションの管理」セクションの残りのコード スニペットでは、以下の collectionManager を使用します。

ToastCollectionManger collectionManager = ToastNotificationManager.GetDefault().GetToastCollectionManager();

すべてのコレクションを取得する

IReadOnlyList<ToastCollection> collections = await collectionManager.FindAllToastCollectionsAsync();

作成されたコレクションの数を取得する

int toastCollectionCount = (await collectionManager.FindAllToastCollectionsAsync()).Count;

コレクションを削除する

await collectionManager.RemoveToastCollectionAsync("MyToastCollection");

コレクションを更新する

コレクションを更新するには、同じ ID を持つ新しいコレクションを作成し、コレクションの新しいインスタンスを保存します。

string displayName = "Updated Display Name"; 
string launchArg = "UpdatedLaunchArgs"; 
Uri icon = new Windows.Foundation.Uri("ms-appx:///Assets/updatedPicture.png");

// Construct a new toast collection with the same collection id
ToastCollection updatedToastCollection = new ToastCollection(
	"MyToastCollection", 
	displayName,
	launchArg, 
	icon);

// Calls the platform to update the collection by saving the new instance
await collectionManager.SaveToastCollectionAsync(updatedToastCollection);  								

コレクション内でのトーストの管理

グループとタグのプロパティ

グループプロパティとタグプロパティは、コレクション内の通知を一意に識別します。 グループ (およびタグ) は、通知を識別するための複合主キー (複数の識別子) として機能します。 たとえば、通知を削除または置換する場合は、通知削除/置換を指定できる必要があります。そのためには、タグとグループを指定します。 たとえば、メッセージング アプリです。 開発者は、会話 ID をグループとして使用し、メッセージ ID をタグとして使用できます。

コレクションからトーストを削除する

タグ ID とグループ ID を使用して個々のトーストを削除したり、コレクション内のすべてのトーストをクリアしたりできます。

// Get the history
var collectionHistory = await ToastNotificationManager.GetDefault().GetHistoryForToastCollectionAsync("MyToastCollection");

// Remove toast
collectionHistory.Remove(tag, group); 

コレクション内のすべてのトーストをクリアする

// Get the history
var collectionHistory = await ToastNotificationManager.GetDefault().GetHistoryForToastCollectionAsync("MyToastCollection");

// Remove toast
collectionHistory.Clear();

Notifications Visualizer のコレクション

Notifications Visualizer ツールを使用すると、コレクションの設計に役立ちます。 以下のステップに従います。

  • 右下隅にある歯車アイコンをクリックします。
  • [Toast collections]\(トースト コレクション\) を選択します。
  • トーストのプレビューの上に、[トースト コレクション] ドロップダウン メニューがあります。 [コレクションの管理] を選択します。
  • [コレクションの追加] をクリックし、コレクションの詳細を入力して保存します。
  • さらにコレクションを追加するか、[コレクションの管理] ボックスをオフにしてメイン画面に戻ることができます。
  • [トースト コレクション] ドロップダウン メニューから、トーストを追加するコレクションを選択します。
  • トーストを起動すると、アクション センターの適切なコレクションにトーストが追加されます。

その他の詳細

作成したトースト コレクションも、ユーザーの通知設定に反映されます。 ユーザーは、個々のコレクションの設定を切り替えて、これらのサブグループのオンとオフを切り替えることができます。 アプリの最上位レベルで通知がオフになっている場合、すべてのコレクション通知もオフになります。 さらに、各コレクションは既定でアクション センターに 3 つの通知を表示し、ユーザーはそれを展開して最大 20 個の通知を表示できます。