Menggunakan pemberitahuan aplikasi dengan aplikasi konsol

Pemberitahuan aplikasi adalah popup UI yang muncul di luar jendela aplikasi Anda, mengirimkan informasi atau tindakan tepat waktu kepada pengguna. Pemberitahuan dapat murni informasi, dapat meluncurkan aplikasi Anda saat diklik, atau dapat memicu tindakan latar belakang tanpa membawa aplikasi Anda ke latar depan.

Cuplikan layar pemberitahuan aplikasi

Artikel ini memandu Anda melalui langkah-langkah untuk membuat dan mengirim pemberitahuan aplikasi dari aplikasi konsol .NET, lalu menangani aktivasi saat pengguna berinteraksi dengannya. Artikel ini menggunakan API SDK Aplikasi WindowsMicrosoft.Windows.AppNotifications.

Untuk gambaran umum pemberitahuan dan panduan aplikasi untuk kerangka kerja lain, lihat Gambaran umum pemberitahuan aplikasi.

Artikel ini membahas pemberitahuan lokal. Untuk informasi tentang mengirimkan pemberitahuan dari layanan awan, lihat Pemberitahuan push.

Penting

Pemberitahuan untuk aplikasi dengan hak admin saat ini tidak didukung.

Prasyarat

  • Aplikasi konsol .NET yang menargetkan .NET 6 atau yang lebih baru
  • Paket NuGet SDK Aplikasi Windows (Microsoft.WindowsAppSDK)

Siapkan proyek Anda

Dalam file proyek Anda (.csproj), pastikan TargetFramework menyertakan kerangka kerja target Windows:

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

Tambahkan paket NuGet SDK Aplikasi Windows:

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

Untuk aplikasi yang tidak dikemas, tambahkan:

<WindowsPackageType>None</WindowsPackageType>

Mendaftar untuk pemberitahuan aplikasi

Dalam metode Anda Main , daftarkan handler NotificationInvokedsebelum memanggil Daftar. Aplikasi konsol harus tetap berjalan untuk menerima panggilan balik aktivasi saat pemberitahuan diklik.

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

Nota

Untuk aplikasi yang tidak dipaketkan, Register() secara otomatis menyiapkan pendaftaran server COM yang memungkinkan Windows meluncurkan aplikasi Anda saat pemberitahuan diklik. Anda tidak perlu mengonfigurasi aktivasi COM atau AUMID secara manual.

Mengirim pemberitahuan aplikasi

Gunakan AppNotificationBuilder untuk membuat konten pemberitahuan dan AppNotificationManager.Show untuk mengirim pemberitahuan.

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

Menjaga aplikasi tetap berjalan

NotificationInvoked Agar handler dipanggil, aplikasi konsol masih harus berjalan saat pengguna mengklik pemberitahuan. Jika aplikasi keluar sebelum pengguna berinteraksi dengan pemberitahuan, klik berikutnya akan meluncurkan proses baru.

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

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

Contoh lengkap

Berikut adalah versi lengkap Program.cs yang mengirim pemberitahuan dan menangani aktivasi:

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