Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот раздел предназначен для вас, если вы разрабатываете распаковку app , которая не является C# или C++.
То есть, если вы не разрабатываете упакованное app (см. Создание нового проекта для упакованного рабочего стола app WinUI), и вы не разрабатываете упакованное приложение app с внешним расположением (см. Предоставление удостоверения пакета посредством упаковки с внешним расположением), и ваш проект не на app C# или C++.
Уведомление app — это сообщение, которое app может создавать и доставлять пользователю, пока пользователь не использует ваш app. В этом кратком руководстве описаны действия по созданию, доставке и отображению уведомления Windows app . В этой краткой инструкции используются локальные уведомления, которые являются наиболее простыми для реализации.
Note
Термин "toast уведомление" заменяется на "app уведомление". Эти термины относятся к одной и той же функции Windows, но со временем мы постепенно перестанем использовать термин "toast уведомление" в документации.
Important
Если вы пишете C# app, ознакомьтесь с документацией по C#. Если вы пишете на C++ app, ознакомьтесь с документацией по C++ UWP или C++ WRL.
Шаг 1. Регистрация app в реестре
Сначала необходимо зарегистрировать сведения вашего app в реестре, включая уникальный идентификатор AUMID, который идентифицирует ваш app, отображаемое имя вашего app, значок и GUID активатора COM.
<registryKey keyName="HKEY_LOCAL_MACHINE\Software\Classes\AppUserModelId\<YOUR_AUMID>">
<registryValue
name="DisplayName"
value="My App"
valueType="REG_EXPAND_SZ" />
<registryValue
name="IconUri"
value="C:\icon.png"
valueType="REG_EXPAND_SZ" />
<registryValue
name="IconBackgroundColor"
value="AARRGGBB"
valueType="REG_SZ" />
<registryValue
name="CustomActivator"
value="{YOUR COM ACTIVATOR GUID HERE}"
valueType="REG_SZ" />
</registryKey>
Шаг 2. Настройка активатора COM
Уведомления можно щелкнуть в любой момент времени, даже если ваше app не запущено. Таким образом, активация уведомлений обрабатывается с помощью активатора COM. Класс COM должен реализовать интерфейс INotificationActivationCallback. GUID для вашего класса COM должен совпадать с GUID, указанным в параметре CustomActivator реестра.
struct callback : winrt::implements<callback, INotificationActivationCallback>
{
HRESULT __stdcall Activate(
LPCWSTR app,
LPCWSTR args,
[[maybe_unused]] NOTIFICATION_USER_INPUT_DATA const* data,
[[maybe_unused]] ULONG count) noexcept final
{
try
{
std::wcout << this_app_name << L" has been called back from a notification." << std::endl;
std::wcout << L"Value of the 'app' parameter is '" << app << L"'." << std::endl;
std::wcout << L"Value of the 'args' parameter is '" << args << L"'." << std::endl;
return S_OK;
}
catch (...)
{
return winrt::to_hresult();
}
}
};
Шаг 3. Отправка app уведомления
В Windows 10 содержимое вашего app уведомления описывается с помощью адаптивного языка, который обеспечивает большую гибкость в том, как выглядит ваше уведомление. Дополнительные сведения см. в документации по содержимомуApp уведомлений.
Начнем с простого текстового уведомления. Создайте содержимое уведомления (с помощью библиотеки уведомлений) и покажите уведомление!
Important
При отправке уведомления необходимо использовать ранее упомянутый AUMID, чтобы уведомление отображалось от вашей app.
// Construct the toast template
XmlDocument doc;
doc.LoadXml(L"<toast>\
<visual>\
<binding template=\"ToastGeneric\">\
<text></text>\
<text></text>\
</binding>\
</visual>\
</toast>");
// Populate with text and values
doc.SelectSingleNode(L"//text[1]").InnerText(L"Andrew sent you a picture");
doc.SelectSingleNode(L"//text[2]").InnerText(L"Check this out, The Enchantments in Washington!");
// Construct the notification
ToastNotification notif{ doc };
// And send it! Use the AUMID you specified earlier.
ToastNotificationManager::CreateToastNotifier(L"MyPublisher.MyApp").Show(notif);
Шаг 4. Обработка активации
Ваш COM активатор будет запущен при щелчке по уведомлению.
Дополнительные сведения
Ограничения AUMID
Значение AUMID должно составлять не более 129 символов. Если AUMID больше 129 символов, запланированные toast уведомления не будут работать, вы получите следующее исключение при добавлении запланированного уведомления: область данных, переданная в системный вызов, слишком мала. (0x8007007A).
Windows developer