Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Уведомление о приложении — это всплывающее окно пользовательского интерфейса, которое отображается вне окна приложения, предоставляя пользователю своевременную информацию или действия. Уведомления могут быть исключительно информационными, могут запускать приложение при щелчке или запускать фоновое действие без вывода приложения на передний план.
В этой статье описаны действия по созданию и отправке уведомления приложения из консольного приложения .NET, а затем обработать активацию при взаимодействии с ним пользователем. В этой статье используются API Windows App SDKМайкрософт.Windows.AppNotifications.
Общие сведения о уведомлениях и рекомендациях для других платформ см. в обзоре уведомлений о приложениях.
В этой статье рассматриваются локальные уведомления. Сведения о доставке уведомлений из облачной службы см. в разделе о Push-уведомлениях.
Это важно
Уведомления о приложениях с повышенными привилегиями (администратор) в настоящее время не поддерживаются.
Необходимые условия
- Консольное приложение .NET, предназначенное для .NET 6 или более поздней версии
- Пакет NuGet Windows App SDK (
Майкрософт.WindowsAppSDK)
Настройте ваш проект
В файле проекта (.csproj) убедитесь, что TargetFramework включает целевую платформу Windows:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Добавьте пакет NuGet Windows App SDK:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Для неупакованных приложений добавьте:
<WindowsPackageType>None</WindowsPackageType>
Регистрация уведомлений о приложении
Main В методе зарегистрируйте обработчик NotificationInvokedперед вызовом Register. Консольное приложение должно оставаться запущенным, чтобы получать обратные вызовы активации, когда пользователи щелкают по уведомлениям.
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();
Замечание
Для распакованных приложений Register() автоматически настраивает регистрацию COM-сервера, которая позволяет Windows запускать приложение при щелчке уведомления. Вам не нужно настраивать активацию COM или AUMID вручную.
Отправка уведомления о приложении
Используйте AppNotificationBuilder для создания содержимого уведомлений и AppNotificationManager.Show для отправки уведомления.
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);
Сохранение работы приложения
Для вызова обработчика NotificationInvoked консольное приложение должно по-прежнему работать, когда пользователь щелкает уведомление. Если приложение завершает работу до того, как пользователь взаимодействует с уведомлением, следующий щелчок инициирует холодный старт нового процесса.
Console.WriteLine("Notification sent! Waiting for activation...");
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();
// Unregister when the app exits
AppNotificationManager.Default.Unregister();
Полный пример
Ниже приведено полное сообщение Program.cs , которое отправляет уведомление и обрабатывает активацию:
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();
Связанный контент
Windows developer