Compartir a través de


Agrupación de notificaciones del sistema con recopilaciones

Usa colecciones para organizar las notificaciones del sistema de la aplicación en el Centro de actividades. Las recopilaciones ayudan a los usuarios a localizar información en el Centro de actividades con mayor facilidad y permiten a los desarrolladores administrar mejor sus notificaciones. Las API siguientes permiten quitar, crear y actualizar recopilaciones de notificaciones.

Importante

Requiere Creators Update: debe tener como destino el SDK 15063 y ejecutar la compilación 15063 o posterior para usar colecciones de notificaciones del sistema. Las API relacionadas incluyen Windows.UI.Notifications.ToastCollection y Windows.UI.Notifications.ToastCollectionManager

Puede ver el ejemplo siguiente con una aplicación de mensajería que separa las notificaciones en función del grupo de chat; cada título (Comp Sci 160A Project Chat, Direct Messages, Lacrosse Team Chat) es una colección independiente. Observe cómo las notificaciones se agrupan de forma distinta como si fueran de una aplicación independiente, aunque todas sean notificaciones de la misma aplicación. Si busca una manera más sutil de organizar las notificaciones, consulte encabezados del sistema.
Ejemplo de colección con dos grupos de notificaciones diferentes

Creación de colecciones

Al crear cada colección, debe proporcionar un nombre para mostrar y un icono, que se muestran dentro del Centro de actividades como parte del título de la colección, como se muestra en la imagen anterior. Las colecciones también requieren un argumento de inicio para ayudar a la aplicación a navegar a la ubicación correcta dentro de la aplicación cuando el usuario hace clic en el título de la colección.

Creación de una colección

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

Envío de notificaciones a una colección

Trataremos el envío de notificaciones de tres canalizaciones del sistema diferentes: local, programada e inserción. Para cada uno de estos ejemplos, vamos a crear una notificación del sistema de ejemplo para enviar con el código inmediatamente siguiente y, a continuación, nos centraremos en cómo agregar la notificación del sistema a una colección a través de cada canalización.

Construya el contenido de la notificación del sistema:

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

Envío de una notificación del sistema a una colección

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

Adición de una notificación del sistema programada a una colección

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

Envío de una notificación del sistema de inserción a una colección

Para las notificaciones del sistema de inserción, debe agregar el encabezado X-WNS-CollectionId al mensaje POST.

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

Administración de colecciones

Creación del administrador de recopilación de notificaciones del sistema

Para el resto de los fragmentos de código de esta sección "Managing Collections" (Administrar colecciones), usaremos el collectionManager siguiente.

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

Obtener todas las colecciones

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

Obtención del número de colecciones creadas

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

Quitar una colección

await collectionManager.RemoveToastCollectionAsync("MyToastCollection");

Actualizar una colección

Puede actualizar las colecciones creando una nueva colección con el mismo identificador y guardando la nueva instancia de la colección.

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

Administración de notificaciones del sistema dentro de una colección

Propiedades de grupo y etiqueta

Las propiedades de grupo y etiquetan juntas identifican de forma única una notificación dentro de una colección. Group (y Tag) actúa como clave principal compuesta (más de un identificador) para identificar la notificación. Por ejemplo, si desea quitar o reemplazar una notificación, debe poder especificar qué notificación desea quitar o reemplazar; para ello, especifique la etiqueta y el grupo. Un ejemplo es una aplicación de mensajería. El desarrollador podría usar el identificador de conversación como grupo y el identificador de mensaje como etiqueta.

Eliminación de una notificación del sistema de una colección

Puede quitar notificaciones del sistema individuales mediante las etiquetas y los identificadores de grupo, o borrar todas las notificaciones del sistema de una colección.

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

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

Borrar todas las notificaciones del sistema dentro de una colección

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

// Remove toast
collectionHistory.Clear();

Recopilaciones en el visualizador de notificaciones

Puede usar la herramienta Visualizador de notificaciones para ayudar a diseñar las colecciones. Siga los pasos siguientes:

  • Haga clic en el icono de engranaje de la esquina inferior derecha.
  • Seleccione "Colecciones del sistema".
  • Encima de la vista previa de la notificación del sistema, hay un menú desplegable "Colección de notificaciones del sistema". Seleccione Administrar recopilaciones.
  • Haga clic en "Agregar colección", rellene los detalles de la colección y guarde.
  • Puede agregar más colecciones o hacer clic en el cuadro Administrar colecciones para volver a la pantalla principal.
  • Seleccione la colección a la que desea agregar la notificación del sistema en el menú desplegable "Colección de notificaciones del sistema".
  • Al activar la notificación del sistema, se agregará a la colección adecuada en el Centro de actividades.

Otros detalles

Las colecciones del sistema que cree también se reflejarán en la configuración de notificación del usuario. Los usuarios pueden alternar la configuración de cada colección individual para activar o desactivar estos subgrupos. Si las notificaciones están desactivadas en el nivel superior de la aplicación, todas las notificaciones de recopilación también se desactivarán. Además, cada colección mostrará de forma predeterminada 3 notificaciones en el Centro de actividades y el usuario puede expandirla para mostrar hasta 20 notificaciones.