Utiliser des notifications d’application avec une application console

Une notification d’application est une fenêtre contextuelle d’interface utilisateur qui s’affiche en dehors de la fenêtre de votre application, en fournissant des informations ou des actions en temps opportun à l’utilisateur. Les notifications peuvent être purement informationnelles, peuvent lancer votre application quand un clic est activé ou déclencher une action en arrière-plan sans amener votre application au premier plan.

Capture d’écran d’une notification d’application

Cet article vous guide tout au long des étapes de création et d’envoi d’une notification d’application à partir d’une application console .NET, puis gère l’activation lorsque l’utilisateur interagit avec lui. Cet article utilise les API SDK d'application WindowsMicrosoft.Windows.AppNotifications.

Pour obtenir une vue d’ensemble des notifications d’application et des conseils pour d’autres infrastructures, consultez la vue d’ensemble des notifications d’application.

Cet article traite des notifications locales. Pour plus d’informations sur la remise de notifications à partir d’un service cloud, consultez Notifications Push.

Important

Les notifications pour les applications avec élévation de privilèges (administrateur) ne sont actuellement pas prises en charge.

Prerequisites

  • Application console .NET ciblant .NET 6 ou version ultérieure
  • Paquet NuGet SDK d'application Windows (Microsoft.WindowsAppSDK)

Configuration de votre projet

Dans votre fichier projet (.csproj), vérifiez que la TargetFramework inclut une infrastructure cible Windows :

<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>

Ajoutez le package NuGet SDK d'application Windows :

<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />

Pour les applications non empaquetées, ajoutez :

<WindowsPackageType>None</WindowsPackageType>

S’inscrire aux notifications d’application

Dans votre Main méthode, inscrivez le gestionnaire NotificationInvokedavant d’appeler Register. L’application console doit rester en cours d’exécution pour recevoir des rappels d’activation lorsque les notifications sont cliquées.

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();

Note

Pour les applications non empaquetées, Register() configure automatiquement l’inscription du serveur COM qui permet Windows de lancer votre application lorsqu’une notification est cliqué. Vous n’avez pas besoin de configurer l’activation COM ou un AUMID manuellement.

Envoyer une notification d’application

Utilisez AppNotificationBuilder pour construire le contenu de notification et AppNotificationManager.Show pour envoyer une 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);

Maintenir l’exécution de l’application

Pour que le NotificationInvoked gestionnaire soit appelé, l’application console doit toujours s’exécuter lorsque l’utilisateur clique sur la notification. Si l’application se termine avant que l’utilisateur interagit avec la notification, le clic suivant lance à froid un nouveau processus.

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

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

Exemple complet

Voici une opération complète Program.cs qui envoie une notification et gère l’activation :

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();