Поделиться через


Группирование всплывающих уведомлений с коллекциями

Используйте коллекции для упорядочивания уведомлений вашего приложения в Центре действий. Коллекции помогают пользователям находить сведения в Центре уведомлений проще и позволяют разработчикам лучше управлять своими уведомлениями. Приведенные ниже API позволяют удалять, создавать и обновлять коллекции уведомлений.

Important

Требуется Creators Update: Для использования коллекций всплывающих уведомлений необходимо установить и запускать сборку SDK 15063 или более позднюю. Связанные API включают Windows.UI.Notifications.ToastCollection и Windows.UI.Notifications.ToastCollectionManager

В приведенном ниже примере можно увидеть приложение для обмена сообщениями, разделяющее уведомления на основе группы чатов; каждый заголовок (Comp Sci 160A Project Chat, Direct Messages, Lacrosse Team Chat) является отдельной коллекцией. Обратите внимание, что уведомления группируются по отдельности, как если бы они были из отдельного приложения, даже если они являются всеми уведомлениями из одного приложения. Если вы ищете более тонкий способ упорядочить уведомления, см. заголовки всплывающих уведомлений.
Пример коллекции с двумя разными группами уведомлений

Создание коллекций

При создании каждой коллекции необходимо указать отображаемое имя и значок, которые отображаются в Центре уведомлений в рамках заголовка коллекции, как показано на рисунке выше. Коллекции также требуют аргумента запуска, чтобы помочь приложению перейти в нужное расположение в приложении, когда пользователь нажимает на название коллекции.

Создание коллекции

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

Отправка уведомлений в коллекцию

Мы изучим отправку уведомлений через три различных канала: локальный, запланированный и push-уведомления. Для каждого из этих примеров мы создадим пример всплывающего уведомления для отправки с кодом сразу же ниже, а затем рассмотрим, как добавить всплывающее уведомление в коллекцию через каждый конвейер.

Создайте всплывающее содержимое:

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

Отправить push-уведомление в коллекцию

Для push-уведомлений необходимо добавить заголовок X-WNS-CollectionId в POST-сообщение.

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

Обновление коллекции

Вы можете обновить коллекции, создав новую коллекцию с тем же идентификатором и сохранив новый экземпляр коллекции.

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

Управление уведомлениями в коллекции

Свойства групп и тегов

Свойства группы и тега однозначно определяют уведомление в коллекции. Группа (и тег) служит составным первичным ключом (несколько идентификаторов) для идентификации уведомления. Например, если вы хотите удалить или заменить уведомление, необходимо указать , какое уведомление нужно удалить или заменить, указав тег и группу. Примером является приложение для обмена сообщениями. Разработчик может использовать идентификатор беседы в качестве группы и идентификатор сообщения в качестве тега.

Удалить тост из коллекции

Вы можете удалить отдельные уведомления с помощью идентификаторов тегов и групп или очистить все уведомления в коллекции.

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

Коллекции в визуализаторе уведомлений

Вы можете использовать средство визуализатора уведомлений для разработки коллекций. Выполните следующие действия.

  • Щелкните значок шестеренки в правом нижнем углу.
  • Выберите "Коллекции Toast".
  • Над предварительным просмотром всплывающего уведомления есть раскрывающееся меню "Коллекция toast". Выберите управление коллекциями.
  • Нажмите кнопку "Добавить коллекцию", заполните сведения о коллекции и сохраните ее.
  • Вы можете добавить дополнительные коллекции или щелкнуть поле управления коллекциями, чтобы вернуться на главный экран.
  • Выберите коллекцию из выпадающего меню "Toast Collection", в которую вы хотите добавить тост.
  • При срабатывании всплывающего уведомления он будет добавлен в соответствующую коллекцию в Центре уведомлений.

Прочие сведения

Коллекции уведомлений-тостов, которые вы создаете, также будут отражены в параметрах уведомлений пользователя. Пользователи могут переключать параметры для каждой отдельной коллекции, чтобы включить или отключить эти подгруппы. Если уведомления отключены на верхнем уровне для приложения, все уведомления о коллекциях также будут отключены. Кроме того, каждая коллекция по умолчанию отображает 3 уведомления в Центре уведомлений, а пользователь может развернуть его, чтобы отобразить до 20 уведомлений.