Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es para usted si está desarrollando un desempaquetado app que no es C# o C++.
Es decir, si no estás desarrollando un paquete app (consulta Crear un nuevo proyecto para un escritorio appde WinUI 3 empaquetado) y no estás desarrollando un empaquetado app con ubicación externa (consulta Conceder identidad de paquete mediante empaquetado con ubicación externa) y app no es C# ni C++.
Una notificación app es un mensaje que app puede construir y entregar al usuario cuando el usuario no está utilizando app actualmente. Este inicio rápido le guía por los pasos para crear, entregar y mostrar una notificación de Windows app . En este inicio rápido se usan las notificaciones locales, que son las más sencillas de implementar.
Note
El término "toast notificación" se va a reemplazar por "app notification". Estos términos hacen referencia a la misma característica de Windows, pero con el tiempo se eliminará el uso de "toast notificación" en la documentación.
Important
Si está escribiendo un C# app, consulte la documentación de C#. Si escribes un C++ app, consulta la documentación de C++ para UWP o C++ WRL .
Paso 1: Registrar app en el Registro
Primero debe registrar la información de tu app en el registro, incluyendo un AUMID único que identifique a tu app, el nombre para mostrar de tu app, tu icono, y un GUID de un activador 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>
Paso 2: Configurar el activador COM
Las notificaciones se pueden hacer clic en cualquier momento dado, incluso cuando app no se está ejecutando. Por lo tanto, la activación de notificaciones se controla a través de un activador COM. La clase COM debe implementar la INotificationActivationCallback interfaz . El GUID de la clase COM debe coincidir con el GUID especificado en el valor CustomActivator del registro.
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();
}
}
};
Paso 3: Enviar una app notificación
En Windows 10, el contenido de tu notificación app se describe mediante un lenguaje adaptable que permite una gran flexibilidad con cómo se ve tu notificación. Consulte la documentación del contenido de laApp notificación para obtener más información.
Comenzaremos con una notificación sencilla basada en texto. Construya el contenido de la notificación (mediante la biblioteca de notificaciones) y muestre la notificación.
Important
Debe usar su AUMID anterior al enviar la notificación para que esta aparezca desde su 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);
Paso 4: Control de la activación
El activador COM se activará cuando se haga clic en la notificación.
More details
AUMID restrictions
El AUMID debe tener como máximo 129 caracteres. Si el AUMID tiene más de 129 caracteres, las notificaciones programadas toast no funcionarán; obtendrá la siguiente excepción al agregar una notificación programada: el área de datos pasada a una llamada del sistema es demasiado pequeña. (0x8007007A).