Remover notificações do aplicativo

Depois de enviar uma notificação do aplicativo, talvez seja necessário removê-la da Central de Notificações quando ela não for mais relevante ou controlar por quanto tempo ela persiste. A classe AppNotificationManager fornece métodos para remover notificações e a classe AppNotification fornece propriedades para controlar quando as notificações expiram automaticamente.

Para obter mais informações sobre notificações do aplicativo, consulte a visão geral das notificações do aplicativo.

Remover notificações da Central de Notificações

Para remover notificações específicas, primeiro atribua valores de Marca e Grupo ao mostrá-las. Uma marca identifica uma notificação específica e um Grupo identifica um conjunto de notificações relacionadas. Por exemplo, um aplicativo de mensagens poderia usar a ID do thread de chat como o Grupo e o nome do contato como a Marca.

AppNotificationManager fornece vários métodos para remover notificações da Central de Notificação:

Método Descrição
RemoveByTagAsync Remove todas as notificações com a etiqueta especificada.
RemoveByGroupAsync Remove todas as notificações no grupo especificado.
RemoveByTagAndGroupAsync Remove todas as notificações com a tag e o grupo especificados.
RemoveByIdAsync Remove a notificação com a ID especificada.
RemoveAllAsync Remove todas as notificações do aplicativo.

O exemplo a seguir mostra como marcar notificações ao enviá-las e removê-las mais tarde. Nesse cenário, um aplicativo de mensagens remove todas as notificações de um chat em grupo depois que o usuário lê a conversa e remove todas as notificações de um contato específico depois que o usuário as silencia.

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

Definir um tempo de expiração

Defina um tempo de expiração em sua notificação usando a propriedade Expiration se o conteúdo for relevante apenas por um determinado período de tempo. Por exemplo, um aplicativo de calendário que envia um lembrete de evento deve definir a expiração para o final do evento.

Observação

O tempo de expiração padrão e máximo para uma notificação é de 3 dias.

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

Expirar notificações na reinicialização

Defina a propriedade ExpiresOnReboot para true se você quiser que uma notificação seja removida da Central de Notificação quando o computador for reiniciado. Isso é útil para notificações sensíveis ao tempo que não são mais significativas após uma reinicialização, como uma chamada em andamento ou um lembrete temporário.

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 também