Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
Este artigo explica-te os passos para criar e enviar uma notificação de aplicação a partir de uma aplicação WPF, e depois tratar da ativação quando o utilizador interagir com ela. Este artigo utiliza as APIs SDK de Aplicações WindowsMicrosoft.Windows.AppNotifications.
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 como entregar notificações a partir de um serviço na cloud, consulte Notificações Push.
Importante
As notificações para aplicações elevadas (de administrador) não são atualmente suportadas.
Pré-requisitos
- Uma aplicação WPF direcionada para .NET 6 ou versões posteriores
- O pacote NuGet SDK de Aplicações Windows (
Microsoft.WindowsAppSDK)
Configure o seu projeto
No ficheiro do teu projeto (.csproj), certifica-te de que o TargetFramework inclui um framework de Windows alvo:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Adicionar o pacote NuGet do SDK de Aplicações Windows:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Para aplicações não embaladas, adicione:
<WindowsPackageType>None</WindowsPackageType>
Registe-se para receber notificações de aplicações
No teu App.xaml.cs, regista-te para notificações no Startup gestor de eventos. Deve registar o seu NotificationInvoked handler antes de chamar Registar.
Primeiro, atualize App.xaml para usar um Startup gestor 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>
Depois, implemente a lógica de arranque e gestão de notificações:
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
Tens de ligar Register antes de ligar AppInstance.GetCurrent().GetActivatedEventArgs(). O NotificationInvoked handler deve estar registado antes de Register() ser chamado.
Observação
Para aplicações não empacotadas, o Register() configura automaticamente o registo do servidor COM, que permite Windows iniciar a sua aplicação quando uma notificação é clicada. Não precisas de configurar manualmente a ativação do COM ou um AUMID.
Enviar uma notificação de aplicação
Use o AppNotificationBuilder para construir o conteúdo das notificações e o 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 informações sobre como adicionar botões, imagens, entradas e outro conteúdo rico às suas notificações, consulte Conteúdo de notificações da aplicação.
Configuração de aplicação empacotada
Para aplicações de WPF não embaladas, Register() trata automaticamente do registo COM. Para aplicações empacotadas (MSIX), precisa de 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 ficheiro executável (por exemplo, YourApp.exe), e não um caminho de subdiretório.
Conteúdo relacionado
Windows developer