Eliminación de notificaciones de aplicación

Después de enviar una notificación de aplicación, es posible que tenga que quitarla del Centro de notificaciones cuando ya no sea relevante o controlar cuánto tiempo persiste. La clase AppNotificationManager proporciona métodos para quitar notificaciones y la clase AppNotification proporciona propiedades para controlar cuándo expiran automáticamente las notificaciones.

Para obtener más información sobre las notificaciones de la aplicación, consulte Introducción a las notificaciones de aplicaciones.

Eliminación de notificaciones del Centro de notificaciones

Para quitar notificaciones específicas, asigne primero valores de etiqueta y grupo al mostrarlos. Una etiqueta identifica una notificación específica y un grupo identifica un conjunto de notificaciones relacionadas. Por ejemplo, una aplicación de mensajería podría usar el identificador de subproceso de chat como grupo y el nombre de contacto como etiqueta.

AppNotificationManager proporciona varios métodos para quitar notificaciones del Centro de notificaciones:

Método Descripción
RemoveByTagAsync Quita todas las notificaciones con la etiqueta especificada.
RemoveByGroupAsync Quita todas las notificaciones del grupo especificado.
RemoveByTagAndGroupAsync Quita todas las notificaciones con la etiqueta y el grupo especificados.
RemoveByIdAsync Quita la notificación con el identificador especificado.
RemoveAllAsync Quita todas las notificaciones de la aplicación.

En el ejemplo siguiente se muestra cómo etiquetar las notificaciones al enviarlos y, a continuación, quitarlas más adelante. En este escenario, una aplicación de mensajería quita todas las notificaciones de un chat de grupo después de que el usuario lea la conversación y, a continuación, quita todas las notificaciones de un contacto específico después de que el usuario los mute.

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

void SendNotification(string message, string contactTag, string chatGroup)
{
    var notification = new AppNotificationBuilder()
        .AddText(message)
        .BuildNotification();

    // Tag and group the notification so it can be removed later
    notification.Tag = contactTag;
    notification.Group = chatGroup;

    AppNotificationManager.Default.Show(notification);
}

// Remove all notifications from a specific group chat
async Task RemoveGroupChatNotifications(string chatGroup)
{
    await AppNotificationManager.Default.RemoveByGroupAsync(chatGroup);
}

// Remove all notifications from a specific contact across all groups
async Task RemoveContactNotifications(string contactTag)
{
    await AppNotificationManager.Default.RemoveByTagAsync(contactTag);
}

// Remove all notifications for the app
async Task RemoveAllNotifications()
{
    await AppNotificationManager.Default.RemoveAllAsync();
}

Establecer una hora de expiración

Establezca una hora de expiración en la notificación mediante la propiedad Expiration si el contenido solo es relevante durante un período de tiempo determinado. Por ejemplo, una aplicación de calendario que envía un recordatorio de eventos debe establecer la expiración al final del evento.

Nota:

El tiempo de expiración predeterminado y máximo para una notificación es de 3 días.

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

var notification = new AppNotificationBuilder()
    .AddText("Team standup in 15 minutes")
    .AddText("Conference Room B")
    .BuildNotification();

// Remove the notification from Notification Center after one hour
notification.Expiration = DateTimeOffset.Now.AddHours(1);

AppNotificationManager.Default.Show(notification);

Expiración de notificaciones al reiniciar

Establezca la propiedad ExpiresOnReboot en true si desea quitar una notificación del Centro de notificaciones cuando se reinicie el equipo. Esto resulta útil para las notificaciones sensibles al tiempo que ya no tienen sentido después de un reinicio, como una llamada en curso o un recordatorio temporal.

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

var notification = new AppNotificationBuilder()
    .AddText("You're sharing your screen")
    .BuildNotification();

notification.ExpiresOnReboot = true;

AppNotificationManager.Default.Show(notification);

Consulte también