Freigeben über


Verwenden von App-Benachrichtigungen mit einer Konsolen-App

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.

Screenshot einer App-Benachrichtigung

Dieser Artikel führt Sie durch die Schritte zum Erstellen und Senden einer App-Benachrichtigung aus einer .NET Konsolen-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 .NET Konsolen-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 Ihrer Main Methode den NotificationInvoked-Handlervor dem Aufrufen von Register. Die Konsolen-App muss weiterhin ausgeführt werden, um Aktivierungsrückrufe zu empfangen, wenn auf Benachrichtigungen geklickt wird.

Program.cs

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

// Register the notification handler before calling Register
AppNotificationManager.Default.NotificationInvoked += (sender, args) =>
{
    // Handle notification activation.
    // args.Argument contains the arguments from the notification
    // or button that was clicked, as key=value pairs separated
    // by '&', for example "action=acknowledge".
    Console.WriteLine($"Notification activated! Arguments: {args.Argument}");
};

AppNotificationManager.Default.Register();

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.

var notification = new AppNotificationBuilder()
    .AddArgument("action", "viewItem")
    .AddText("Console Notification")
    .AddText("This was sent from a console app using Windows App SDK.")
    .AddButton(new AppNotificationButton("Acknowledge")
        .AddArgument("action", "acknowledge"))
    .BuildNotification();

AppNotificationManager.Default.Show(notification);

Halten Sie die App am Laufen

Damit der NotificationInvoked Handler aufgerufen wird, muss die Konsolen-App weiterhin ausgeführt werden, wenn der Benutzer auf die Benachrichtigung klickt. Wenn die App beendet wird, bevor der Benutzer mit der Benachrichtigung interagiert, startet der nächste Klick einen neuen Prozess.

Console.WriteLine("Notification sent! Waiting for activation...");
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();

// Unregister when the app exits
AppNotificationManager.Default.Unregister();

Vollständiges Beispiel

Hier ist ein vollständiger Program.cs, der eine Benachrichtigung sendet und die Aktivierung ausführt:

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

Console.WriteLine("Console App Notification Test");

// Step 1: Register for notification activation
AppNotificationManager.Default.NotificationInvoked += (sender, args) =>
{
    Console.WriteLine($"Notification activated! Arguments: {args.Argument}");
};

AppNotificationManager.Default.Register();

// Step 2: Send a notification
var notification = new AppNotificationBuilder()
    .AddArgument("action", "viewItem")
    .AddText("Console Notification")
    .AddText("This was sent from a console app using Windows App SDK.")
    .AddButton(new AppNotificationButton("Acknowledge")
        .AddArgument("action", "acknowledge"))
    .BuildNotification();

AppNotificationManager.Default.Show(notification);

// Step 3: Wait for user interaction
Console.WriteLine("Notification sent! Click it to test activation.");
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();

AppNotificationManager.Default.Unregister();