Use notificações de aplicação com uma aplicação UWP

Uma notificação de aplicação é um pop-up na interface que aparece fora da janela da sua aplicação, fornecendo informações ou ações oportunas ao utilizador. As notificações podem ser puramente informativas, podem abrir a sua aplicação ao clicar, ou podem desencadear uma ação em segundo plano sem trazer a aplicação para o primeiro plano.

Captura de ecrã de uma notificação de aplicação

Este artigo explica-te os passos para criar e enviar uma notificação de aplicação a partir de uma aplicação UWP, e depois gerir a ativação quando o utilizador interagir com ela.

Para uma visão geral das notificações de aplicações e orientações para outros frameworks, consulte Visão geral das notificações de aplicações.

Este artigo aborda as notificações locais. Para informações sobre a entrega de notificações a partir de um serviço cloud, consulte Visão Geral das notificações Push.

Pré-requisitos

  • Um projeto de aplicação UWP no Visual Studio
  • A carga de trabalho de desenvolvimento da Plataforma Universal do Windows instalada no Visual Studio

Enviar uma notificação de aplicação

As aplicações UWP utilizam o espaço de nomes Windows.UI.Notifications para construir e enviar notificações usando XML. Esta secção mostra como enviar notificações usando C# e C++.

using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;

var xml = @"<toast launch=""action=viewConversation&amp;conversationId=9813"">
    <visual>
        <binding template=""ToastGeneric"">
            <text>Andrew sent you a picture</text>
            <text>Check this out, The Enchantments in Washington!</text>
        </binding>
    </visual>
</toast>";

var doc = new XmlDocument();
doc.LoadXml(xml);

var notification = new ToastNotification(doc);
ToastNotificationManager.CreateToastNotifier().Show(notification);

Manipular a ativação

Quando o utilizador clica na sua notificação (ou num botão na notificação com ativação em primeiro plano), o método OnActivated da sua aplicação é invocado. OnLaunched não é chamado para ativações de notificações, mesmo que a sua aplicação tenha sido fechada e esteja a lançar-se pela primeira vez. Recomendamos combinar OnLaunched e OnActivated integrar um método de inicialização partilhado.

App.xaml.cs

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    OnLaunchedOrActivated(e.PreviousExecutionState);

    var rootFrame = Window.Current.Content as Frame;
    if (e.PrelaunchActivated == false)
    {
        if (rootFrame?.Content == null)
        {
            rootFrame?.Navigate(typeof(MainPage), e.Arguments);
        }
        Window.Current.Activate();
    }
}

protected override void OnActivated(IActivatedEventArgs e)
{
    OnLaunchedOrActivated(e.PreviousExecutionState);

    if (e is ToastNotificationActivatedEventArgs toastArgs)
    {
        var rootFrame = Window.Current.Content as Frame;
        if (rootFrame?.Content == null)
        {
            rootFrame?.Navigate(typeof(MainPage));
        }
        Window.Current.Activate();

        // Parse the notification arguments
        string argument = toastArgs.Argument;
        // TODO: Navigate to the relevant content based on the arguments
    }
}

private void OnLaunchedOrActivated(ApplicationExecutionState previousState)
{
    if (Window.Current.Content is not Frame)
    {
        var rootFrame = new Frame();
        rootFrame.NavigationFailed += OnNavigationFailed;
        Window.Current.Content = rootFrame;
    }
}

Para informações sobre como adicionar botões, imagens, entradas, áudio e outros conteúdos ricos às suas notificações, consulte Conteúdo de notificações da aplicação.