Partilhar via


Agendar uma app notificação

As notificações agendadas app permitem que se agende uma notificação para aparecer posteriormente, independentemente de o app estar em execução naquele momento. Isso é útil para cenários como a exibição de lembretes ou outras tarefas de acompanhamento para o usuário, onde a hora e o conteúdo da notificação são conhecidos com antecedência.

Observe que as notificações agendadas app têm uma janela de entrega de 5 minutos. Se o computador for desligado durante o tempo de entrega programado e permanecer desligado por mais de 5 minutos, a notificação será "descartada" como não mais relevante para o usuário. Se você precisar de entrega garantida de notificações, independentemente de quanto tempo o computador ficou desligado, recomendamos usar uma tarefa em segundo plano com um gatilho de tempo, conforme ilustrado neste exemplo de código.

Note

O termo "toast notificação" está a ser substituído por "app notificação". Ambos os termos se referem ao mesmo recurso do Windows, mas com o tempo eliminaremos gradualmente o uso de "toast notificação" na documentação.

Important

As aplicações de ambiente de trabalho (embaladas e não embaladas) têm passos ligeiramente diferentes para enviar notificações e lidar com a ativação. Siga as instruções abaixo; no entanto, substitua ToastNotificationManager pela classe DesktopNotificationManagerCompat na documentação dos aplicativos de desktop .

APIs Importantes: Classe ScheduledToastNotification

Prerequisites

Para entender completamente este tópico, o seguinte será útil...

Etapa 1: Instalar o pacote NuGet

Instale o pacote NuGet Microsoft.Toolkit.Uwp.Notifications. Nosso exemplo de código usará este pacote. No final do artigo, forneceremos os trechos de código "simples" que não usam nenhum pacote NuGet. Este pacote permite que você crie app notificações sem usar XML.

Etapa 2: Adicionar declarações de namespace

using Microsoft.Toolkit.Uwp.Notifications; // Notifications library

Etapa 3: Agendar a notificação

Usaremos uma notificação simples baseada em texto lembrando um aluno sobre a lição de casa que eles devem fazer hoje. Construa a notificação e agende-a!

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5));

Forneça uma chave primária para sua notificação

Se desejar cancelar, remover ou substituir programaticamente a notificação agendada, você precisará usar a propriedade Tag (e, opcionalmente, a propriedade Group) para fornecer uma chave primária para sua notificação. Em seguida, você pode usar essa chave primária no futuro para cancelar, remover ou substituir a notificação.

Para ver mais detalhes sobre como substituir/remover notificações já entreguesapp, consulte Guia de início rápido: gerenciando toast notificações na central de ações (XAML).

Tag e Grupo combinados atuam como uma chave primária composta. Grupo é o identificador mais genérico, onde você pode atribuir grupos como "wallPosts", "mensagens", "friendRequests", etc. E, em seguida, a Tag deve identificar exclusivamente a própria notificação dentro do grupo. Usando um grupo genérico, você pode remover todas as notificações desse grupo usando a API RemoveGroup.

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5), toast =>
    {
        toast.Tag = "18365";
        toast.Group = "ASTR 170B1";
    });

Cancelar notificações agendadas

Para cancelar uma notificação agendada, primeiro você precisa recuperar a lista de todas as notificações agendadas.

Em seguida, encontre sua notificação agendada app correspondente à tag (e, opcionalmente, ao grupo) especificada anteriormente e chame RemoveFromSchedule().

// Create the toast notifier
ToastNotifierCompat notifier = ToastNotificationManagerCompat.CreateToastNotifier();

// Get the list of scheduled toasts that haven't appeared yet
IReadOnlyList<ScheduledToastNotification> scheduledToasts = notifier.GetScheduledToastNotifications();

// Find our scheduled toast we want to cancel
var toRemove = scheduledToasts.FirstOrDefault(i => i.Tag == "18365" && i.Group == "ASTR 170B1");
if (toRemove != null)
{
    // And remove it from the schedule
    notifier.RemoveFromSchedule(toRemove);
}

Important

Um Win32 app não empacotado (falta identidade de pacote em tempo de execução) deve usar a classe ToastNotificationManagerCompat como visto acima. Se usar o próprio ToastNotificationManager, receberá uma exceção de elemento não encontrado. Todos os tipos de aplicativos podem usar a classe Compat e ela funcionará corretamente.

Activation handling

Consulte os documentos de envio de uma notificação local app para saber mais sobre como lidar com a ativação. A ativação de uma notificação agendada app é tratada da mesma forma que a ativação de uma notificação local app .

Adicionando ações, entradas e muito mais

Consulte a documentação sobre o envio de uma notificação local app para aprender mais sobre tópicos avançados, como ações e entradas. As ações e entradas funcionam da mesma forma nas notificações locais app e nas notificações agendadas app .

Resources