Agendar uma notificação do sistema
As notificações do sistema agendadas permitem que você agende uma notificação para aparecer mais tarde, independentemente de seu aplicativo estar em execução naquele momento. Isso é útil para cenários como exibir lembretes ou outras tarefas de acompanhamento para o usuário, em que a hora e o conteúdo da notificação são conhecidos antecipadamente.
Observe que as notificações do sistema agendadas 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" por não ser 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.
Importante
Os aplicativos da área de trabalho (empacotados e não empacotados) têm etapas ligeiramente diferentes para enviar notificações e lidar com a ativação. Siga as instruções abaixo, no entanto, substitua ToastNotificationManager
DesktopNotificationManagerCompat
pela classe da documentação dos aplicativos da área de trabalho.
APIs importantes: classe ScheduledToastNotification
Pré-requisitos
Para entender completamente este tópico, o seguinte será útil...
- Um conhecimento prático dos termos e conceitos de notificação do sistema. Para obter mais informações, consulte Visão geral da notificação do sistema e da central de ações.
- Uma familiaridade com o conteúdo de notificação do sistema do Windows 10. Para obter mais informações, consulte a documentação de conteúdo do sistema.
- Um projeto de aplicativo UWP do Windows 10
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 snippets de código "simples" que não usam nenhum pacote NuGet. Este pacote permite que você crie notificações do sistema 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 o aluno sobre o dever de casa que ele deve 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));
Fornecer uma chave primária para sua notificação do sistema
Se você quiser cancelar, remover ou substituir programaticamente a notificação agendada, 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 do sistema já entregues, consulte Guia de início rápido: gerenciando notificações do sistema na central de ações (XAML).
Tag e Group 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 então Tag deve identificar exclusivamente a notificação em si de 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 do sistema agendada que corresponda à 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);
}
Importante
Um aplicativo Win32 não empacotado (sem identidade de pacote em runtime) deve usar a classe ToastNotificationManagerCompat, conforme visto acima. Se você 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.
Tratamento de ativação
Consulte os documentos de envio de uma notificação do sistema local para saber mais sobre como lidar com a ativação. A ativação de uma notificação do sistema agendada é tratada da mesma forma que a ativação de uma notificação do sistema local.
Adicionando ações, entradas e muito mais
Consulte os documentos de envio de uma notificação do sistema local para saber mais sobre tópicos avançados, como ações e entradas. Ações e entradas funcionam da mesma forma em notificações do sistema locais e em notificações do sistema agendadas.
Recursos
Windows developer