Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Este artigo guia você pelas etapas para criar e enviar uma notificação de aplicativo de um aplicativo WPF e, em seguida, como manipular a ativação quando o usuário interagir com ele. Este artigo usa as APIs SDK do Aplicativo WindowsMicrosoft.Windows.AppNotifications.
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 as notificações por push.
Importante
No momento, não há suporte para notificações para aplicativos com privilégios elevados (administrador).
Pré-requisitos
- Um aplicativo WPF destinado ao .NET 6 ou posterior
- O pacote NuGet SDK do Aplicativo Windows (
Microsoft.WindowsAppSDK)
Configure seu projeto
No arquivo de projeto (.csproj), verifique se o TargetFramework inclui uma estrutura de destino Windows:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Adicione o pacote NuGet SDK do Aplicativo Windows:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Para aplicativos não empacotados, adicione:
<WindowsPackageType>None</WindowsPackageType>
Registrar-se para notificações de aplicativo
Em seu App.xaml.cs, registre-se para receber notificações no Startup manipulador de eventos. Você deve registrar seu manipulador NotificationInvokedantes de chamar o Registro.
Primeiro, atualize App.xaml para usar um Startup manipulador de eventos em vez de StartupUri:
App.xaml
<Application x:Class="WpfNotifications.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="OnStartup">
</Application>
Em seguida, implemente a lógica de inicialização e tratamento de notificação.
App.xaml.cs
using System.Windows;
using Microsoft.Windows.AppNotifications;
namespace WpfNotifications;
public partial class App : Application
{
private void OnStartup(object sender, StartupEventArgs e)
{
// Register the notification handler before calling Register
AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked;
AppNotificationManager.Default.Register();
// Show the main window
var mainWindow = new MainWindow();
mainWindow.Show();
}
private void OnNotificationInvoked(
AppNotificationManager sender,
AppNotificationActivatedEventArgs args)
{
// NotificationInvoked is raised on a background thread,
// so dispatch to the UI thread for any UI updates
Current.Dispatcher.Invoke(() =>
{
// Parse args.Argument to determine what action to take.
// args.Argument contains the arguments from the notification
// or button that was clicked, as key=value pairs separated
// by '&', for example "action=reply&conversationId=9813".
});
}
protected override void OnExit(ExitEventArgs e)
{
AppNotificationManager.Default.Unregister();
base.OnExit(e);
}
}
Importante
Você deve ligar Register antes de ligar AppInstance.GetCurrent().GetActivatedEventArgs(). O NotificationInvoked manipulador deve ser registrado antes de Register() ser chamado.
Observação
Para aplicativos não empacotados, Register() configura automaticamente o registro do servidor COM que permite que Windows inicie seu aplicativo quando uma notificação é clicada. Você não precisa configurar a ativação COM ou um AUMID manualmente.
Enviar uma notificação do aplicativo
Use AppNotificationBuilder para construir o conteúdo da notificação e AppNotificationManager.Show para enviar uma notificação.
Mainwindow.xaml.cs
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;
private void SendNotification()
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Para obter informações sobre como adicionar botões, imagens, entradas e outros conteúdos avançados às notificações, consulte o conteúdo da notificação do aplicativo.
Configuração do aplicativo em pacote
Para aplicativos de WPF não empacotados, Register() manipula automaticamente o registro COM. Para aplicativos empacotados (MSIX), você precisa adicionar as seguintes extensões ao seu Package.appxmanifest:
<Package
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="... com desktop">
<Applications>
<Application>
<Extensions>
<!--Specify which CLSID to activate when notification is clicked-->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation
ToastActivatorCLSID="YOUR-GUID-HERE" />
</desktop:Extension>
<!--Register COM CLSID-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer
Executable="YourApp.exe"
Arguments="----AppNotificationActivated:"
DisplayName="YourApp">
<com:Class Id="YOUR-GUID-HERE" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Importante
O Executable atributo deve conter apenas o nome do arquivo executável (por exemplo, YourApp.exe), não um caminho de subdiretório.
Conteúdo relacionado
Windows developer