使用集合对 Toast 通知进行分组
使用集合在操作中心组织应用的 Toast。 集合可帮助用户更轻松地在操作中心中找到信息,并允许开发人员更好地管理其通知。 下面的 API 允许删除、创建和更新通知集合。
重要
需要创意者更新:必须以 SDK 15063 为目标,并运行内部版本 15063 或更高版本才能使用 Toast 集合。 相关 API 包括 Windows.UI.Notifications.ToastCollection 和 Windows.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 个通知。