Compartir a través de


Agrupación de notificaciones emergentes con colecciones

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.

Important

requiere Creators Update: debe tener como destino el SDK 15063 y ejecutar la compilación 15063 o posterior para usar colecciones toast. 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 de notificación interactiva.
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 desde tres canalizaciones de notificaciones diferentes: local, programada y push. Para cada uno de estos ejemplos, vamos a crear una notificación de ejemplo para enviar con el código justo después y, a continuación, nos centraremos en cómo agregar la notificación a una colección a través de cada flujo de trabajo.

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

Enviar un mensaje emergente 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);

Añadir una notificación emergente 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);

Enviar una notificación emergente a una colección

Para las notificaciones push, 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);  								

Gestión de notificaciones emergentes 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.

Eliminar un mensaje emergente de una colección

Puede eliminar notificaciones individuales utilizando las etiquetas y los ID de grupo, o borrar todas las notificaciones en 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 sus colecciones. Para hacerlo, siga estos pasos:

  • Haga clic en el icono de engranaje de la esquina inferior derecha.
  • Seleccione "Colecciones de notificaciones".
  • Encima de la vista previa del "toast", hay un menú desplegable "Colección de Toasts". 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 el mensaje emergente desde el menú desplegable 'Colección de mensajes'.
  • Al enviar la notificación de aviso, se agregará a la colección adecuada en el Centro de actividades.

Otros detalles

Las colecciones de toast que creas también se reflejarán en la configuración de notificaciones 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.