Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine App-Benachrichtigung ist ein UI-Popup, das außerhalb des Fensters Ihrer App angezeigt wird und dem Benutzer zeitnah Informationen oder Aktionen liefert. Benachrichtigungen können rein informativ sein, ihre App beim Klicken starten oder eine Hintergrundaktion auslösen, ohne ihre App in den Vordergrund zu bringen.
Dieser Artikel führt Sie durch die Schritte zum Erstellen und Senden einer App-Benachrichtigung aus einer WPF App und behandelt dann die Aktivierung, wenn der Benutzer damit interagiert. In diesem Artikel werden die APIs Windows App SDKMicrosoft.Windows.AppNotifications verwendet.
Eine Übersicht über App-Benachrichtigungen und Anleitungen für andere Frameworks finden Sie in der Übersicht über App-Benachrichtigungen.
In diesem Artikel werden lokale Benachrichtigungen behandelt. Informationen zum Übermitteln von Benachrichtigungen von einem Clouddienst finden Sie unter Pushbenachrichtigungen.
Von Bedeutung
Benachrichtigungen für Apps mit erhöhten Rechten (Administrator) werden derzeit nicht unterstützt.
Voraussetzungen
- Eine WPF App für .NET 6 oder höher
- Das Windows App SDK NuGet-Paket (
Microsoft.WindowsAppSDK)
Einrichten Ihres Projekts
Stellen Sie in der Projektdatei (.csproj) sicher, dass die TargetFramework ein Windows Zielframework enthält:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Fügen Sie das Windows App SDK NuGet-Paket hinzu:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Fügen Sie für entpackte Apps Folgendes hinzu:
<WindowsPackageType>None</WindowsPackageType>
Registrieren für App-Benachrichtigungen
Registrieren Sie in Ihrem App.xaml.cs für Benachrichtigungen im Startup-Ereignishandler. Sie müssen den NotificationInvoked-Handler registrieren , bevorSie Register aufrufen.
Aktualisieren Sie zuerst App.xaml, um einen Startup-Ereignishandler anstelle von StartupUri zu verwenden.
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>
Implementieren Sie dann die Logik für die Start- und Benachrichtigungsverarbeitung:
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);
}
}
Von Bedeutung
Sie müssen Register aufrufen, bevor Sie AppInstance.GetCurrent().GetActivatedEventArgs() aufrufen. Der NotificationInvoked Handler muss registriert werden, bevor Register() aufgerufen wird.
Hinweis
Bei entpackten Apps richtet Register() automatisch die COM-Serverregistrierung ein, mit der Windows ihre App starten kann, wenn auf eine Benachrichtigung geklickt wird. Sie müssen die COM-Aktivierung oder eine AUMID nicht manuell konfigurieren.
Senden einer App-Benachrichtigung
Verwenden Sie AppNotificationBuilder , um Benachrichtigungsinhalte und AppNotificationManager.Show zu erstellen, um eine Benachrichtigung zu senden.
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);
}
Informationen zum Hinzufügen von Schaltflächen, Bildern, Eingaben und anderen umfangreichen Inhalten zu Ihren Benachrichtigungen finden Sie unter App-Benachrichtigungsinhalte.
App-Paketeinrichtung
Bei entpackten WPF Apps verarbeitet Register() die COM-Registrierung automatisch. Für verpackte Apps (MSIX) müssen Sie die folgenden Erweiterungen zu Ihrem Package.appxmanifestHinzufügen:
<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>
Von Bedeutung
Das Executable Attribut sollte nur den Dateinamen der ausführbaren Datei (z. B. YourApp.exe), nicht einen Unterverzeichnispfad enthalten.
Verwandte Inhalte
Windows developer