Usar notificações de aplicativo com um aplicativo UWP

Uma notificação de aplicativo é um pop-up de interface do usuário que aparece fora da janela do aplicativo, fornecendo informações ou ações oportunas ao usuário. As notificações podem ser puramente informativas, podem iniciar seu aplicativo quando clicadas ou podem disparar uma ação em segundo plano sem colocar seu aplicativo em primeiro plano.

Captura de tela de uma notificação do aplicativo

Este artigo orienta você pelas etapas para criar e enviar uma notificação de aplicativo de um aplicativo UWP e, em seguida, manipular a ativação quando o usuário interagir com ele.

Para obter uma visão geral das notificações do aplicativo e das diretrizes para outras estruturas, consulte a visão geral das notificações do aplicativo.

Este artigo aborda as notificações locais. Para obter informações sobre como fornecer notificações de um serviço de nuvem, consulte a visão geral das notificações por push.

Pré-requisitos

  • Um projeto de aplicativo UWP no Visual Studio
  • A carga de trabalho de desenvolvimento da Plataforma Universal do Windows instalada no Visual Studio

Enviar uma notificação do aplicativo

Os aplicativos UWP usam o namespace Windows.UI.Notifications para construir e enviar notificações usando XML. Esta seçã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);

Gerenciar a ativação

Quando o usuário clica na sua notificação (ou em um botão na notificação com ativação em primeiro plano), o OnActivated método do aplicativo é invocado. OnLaunched não é chamado para ativações de notificação, mesmo que seu aplicativo tenha sido fechado e seja iniciado pela primeira vez. É recomendável combinar OnLaunched e OnActivated usar um método de inicialização compartilhado.

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 obter informações sobre como adicionar botões, imagens, entradas, áudio e outros conteúdos avançados às notificações, consulte o conteúdo da notificação do aplicativo.