使用集合对 Toast 通知进行分组

使用集合在操作中心组织应用的 Toast。 集合可帮助用户更轻松地在操作中心中找到信息,并允许开发人员更好地管理其通知。 下面的 API 允许删除、创建和更新通知集合。

重要

需要创意者更新:必须以 SDK 15063 为目标,并运行内部版本 15063 或更高版本才能使用 Toast 集合。 相关 API 包括 Windows.UI.Notifications.ToastCollectionWindows.UI.Notifications.ToastCollectionManager

可以使用消息应用查看以下示例,该应用基于聊天组分隔通知;每个游戏(Comp Sci 160A 项目聊天、直接消息、棍网球团队聊天)都是一个单独的集合。 请注意通知的分组方式,就像它们来自单独的应用一样,即使它们都是来自同一应用的所有通知。 如果你正在寻找一种更微妙的方式来组织通知,请参阅 Toast 标头
具有两组不同通知的集合示例

创建集合

创建每个集合时,需要提供显示名称和图标,该图标显示在操作中心作为集合标题的一部分,如下图所示。 集合还需要启动参数,以帮助应用在用户单击集合标题时导航到应用内的正确位置。

创建集合

// 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);  								
}

向集合发送通知

我们将介绍从三个不同的 Toast 管道发送通知:本地、计划和推送。 对于上述每个示例,我们将创建一个示例 Toast,以便紧随下面的代码一起发送,然后我们将重点介绍如何通过每个管道将 Toast 添加到集合。

构造 toast 内容:

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

将 Toast 发送到集合

// 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);

将计划的 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);

将推送 Toast 发送到集合

对于推送 Toast,需要将 X-WNS-CollectionId 标头添加到 POST 消息。

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

管理集合

创建 Toast 集合管理器

对于此“管理集合”部分中的其余代码片段,我们将使用以下 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);  								

管理集合中的 Toast

组和标记属性

组和标记属性一起唯一标识集合中的通知。 组(和标记)充当复合主键(多个标识符)来标识通知。 例如,如果要删除或替换通知,则必须能够指定 要删除/替换的通知 ;可以通过指定标记和组来执行此操作。 例如,消息应用。 开发人员可以使用对话 ID 作为组,并将消息 ID 用作标记。

从集合中删除 Toast

可以使用标记和组 ID 删除单个 Toast,或者清除集合中的所有 Toast。

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

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

清除集合中的所有 Toast

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

// Remove toast
collectionHistory.Clear();

通知可视化工具中的集合

可以使用 通知可视化工具 来帮助设计集合。 请遵循以下步骤:

  • 单击右下角的齿轮图标。
  • 选择“Toast 集合”。
  • 在 Toast 预览版上方,有一个“Toast 集合”下拉菜单。 选择“管理集合”。
  • 单击“添加集合”,填写集合的详细信息,然后保存。
  • 可以添加更多集合,或单击“管理集合”框以返回到主屏幕。
  • 从“Toast 集合”下拉菜单中选择要将 Toast 添加到的集合。
  • 触发 Toast 时,它将添加到操作中心中的相应集合。

其他详细信息

你创建的 Toast 集合也将反映在用户的通知设置中。 用户可以切换每个集合的设置,以打开或关闭这些子组。 如果在应用的顶级关闭通知,则所有集合通知也将关闭。 此外,每个集合默认在操作中心显示 3 个通知,用户可以将其展开以显示最多 20 个通知。