Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat jest przeznaczony dla Ciebie, jeśli tworzysz niespakowaną aplikację app, która nie jest napisana w języku C# lub C++.
Oznacza to, że jeśli nie tworzysz opakowanego app (zobacz Tworzenie nowego projektu dla opakowanego pulpitu appWinUI 3), i nie tworzysz pakietu app z lokalizacją zewnętrzną (zobacz Udzielanie identyfikacji pakietu przez opakowanie z lokalizacją zewnętrzną), a twoim językiem nie jest C# ani C++.
Powiadomienie app to komunikat, który app może skonstruować i dostarczyć użytkownikowi, gdy użytkownik nie korzysta obecnie z usługi app. Ten szybki przewodnik przeprowadzi Cię przez kroki tworzenia, dostarczania i wyświetlania powiadomienia Windows app. W tym przewodniku szybkiego startu używane są powiadomienia lokalne, które najłatwiej zaimplementować.
Note
Termin "toast powiadomienie" jest zastępowany "app powiadomienie". Te dwa terminy odnoszą się do tej samej funkcji systemu Windows, ale z czasem wycofamy użycie "toast powiadomienia" w dokumentacji.
Important
Jeśli piszesz język C# app, zapoznaj się z dokumentacją języka C#. Jeśli piszesz program w C++ app, zapoznaj się z dokumentacją C++ UWP lub C++ WRL.
Krok 1: Zarejestruj swój app w rejestrze
Najpierw musisz zarejestrować informacje o app w rejestrze, w tym unikatowy identyfikator AUMID, który identyfikuje app, nazwę wyświetlaną, app ikonę oraz identyfikator GUID aktywatora 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>
Krok 2. Konfigurowanie aktywatora COM
Powiadomienia można klikać w dowolnym momencie, nawet jeśli app nie jest uruchomiona. W związku z tym aktywacja powiadomień jest obsługiwana za pośrednictwem aktywatora COM. Klasa COM musi zaimplementować interfejs INotificationActivationCallback. Identyfikator GUID dla twojej klasy COM musi być zgodny z identyfikatorem GUID podanym w wartości wpisu rejestru 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();
}
}
};
Krok 3. Wysyłanie app powiadomienia
W systemie Windows 10 app zawartość powiadomień jest opisywana przy użyciu języka adaptacyjnego, który zapewnia dużą elastyczność w sposobie wyglądu powiadomienia. Aby uzyskać więcej informacji, zobacz dokumentację App zawartości powiadomień .
Zaczniemy od prostego powiadomienia tekstowego. Skonstruuj zawartość powiadomienia (przy użyciu biblioteki powiadomień) i wyświetl powiadomienie!
Important
Należy użyć swojego identyfikatora AUMID z wcześniejszego kroku podczas wysyłania powiadomienia, aby powiadomienie było wyświetlane z poziomu 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);
Krok 4. Obsługa aktywacji
Aktywator COM zostanie aktywowany po kliknięciu powiadomienia.
More details
AUMID restrictions
Identyfikator AUMID powinien mieć długość co najwyżej 129 znaków. Jeśli identyfikator AUMID jest dłuższy niż 129 znaków, zaplanowane toast powiadomienia nie będą działać — podczas dodawania zaplanowanego powiadomienia otrzymasz następujący wyjątek: Obszar danych przekazany do wywołania systemowego jest zbyt mały. (0x8007007A).
Windows developer