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.
Powiadomienie app to komunikat, który app może skonstruować i dostarczyć użytkownikowi, gdy nie znajdują się obecnie w twojej aplikacji app.
Ten przewodnik Szybki start przeprowadzi Cię przez kroki tworzenia, dostarczania i wyświetlania powiadomienia systemu Windows 10 lub Windows 11 app przy użyciu rozbudowanej zawartości i akcji interaktywnych. W tym przewodniku szybkiego startu używane są powiadomienia lokalne, które najłatwiej zaimplementować. Wszystkie typy aplikacji (WPF, UWP, WinForms, konsola) mogą wysyłać powiadomienia!
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++ spoza platformy UWP app, zapoznaj się z dokumentacją biblioteki WRL języka C++ . Jeśli piszesz język C# app, zapoznaj się z dokumentacją języka C#.
Krok 1. Instalowanie pakietu NuGet
Powiadomienia można tworzyć app za pomocą składni konstruktora zestawu narzędzi Windows Community Toolkit (WCT) LUB przy użyciu kodu XML. Jeśli wolisz to drugie, przejdź do Krok 2 i odnieś się do przykładów kodu bez składni typu builder.
W rozwiązaniu programu Visual Studio kliknij prawym przyciskiem myszy projekt, kliknij pozycję "Zarządzaj pakietami NuGet..." i wyszukaj i zainstaluj Microsoft.Toolkit.Uwp.Notifications w wersji 7.0 lub nowszej.
Przykłady kodu dla naszego Buildera użyją składni z tego pakietu. Ten pakiet umożliwia tworzenie app powiadomień bez użycia kodu XML.
Krok 2. Dodawanie deklaracji przestrzeni nazw
using namespace Microsoft::Toolkit::Uwp::Notifications;
Krok 3. Wysyłanie app powiadomienia
W systemach Windows 10 i Windows 11 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! Należy pamiętać, że przestrzeń nazw to Microsoft.Toolkit.Uwp.Notifications.
Jeśli nie używasz składni konstruktora biblioteki powiadomień WCT, zamiast tego skonstruujesz szablon powiadomienia XML app , wypełnisz go tekstem i wartościami, skonstruujesz powiadomienie i pokażesz.
// Construct the content and show the toast!
(ref new ToastContentBuilder())
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->AddText("Check this out, The Enchantments in Washington!")
->Show();
Krok 4. Obsługa aktywacji
Gdy użytkownik kliknie powiadomienie (lub przycisk w powiadomieniu z aktywacją w trybie pierwszoplanowym), metoda app w pliku App's .xaml.cpp zostanie wywołana.
App.xaml.cpp
void App::OnActivated(IActivatedEventArgs^ e)
{
// Handle notification activation
if (e->Kind == ActivationKind::ToastNotification)
{
ToastNotificationActivatedEventArgs^ toastActivationArgs = (ToastNotificationActivatedEventArgs^)e;
// Obtain the arguments from the notification
ToastArguments^ args = ToastArguments::Parse(toastActivationArgs->Argument);
// Obtain any user input (text boxes, menu selections) from the notification
auto userInput = toastActivationArgs->UserInput;
// TODO: Show the corresponding content
}
}
Important
Musisz zainicjować ramkę i aktywować okno tak jak w kodzie OnLaunched.
OnLaunched nie jest uruchamiane, jeśli użytkownik kliknie na powiadomienieapp, nawet jeśli app był zamknięty i jest uruchamiany po raz pierwszy. Często zalecamy połączenie OnLaunched i OnActivated we własną metodę OnLaunchedOrActivated, ponieważ w obu tych przypadkach musi wystąpić ta sama inicjalizacja.
Szczegółowe informacje dotyczące aktywacji
Pierwszym krokiem, aby uczynić powiadomienia interaktywnymi, jest dodanie do nich niektórych argumentów uruchamiania, dzięki czemu app będzie wiedzieć, co uruchomić, gdy użytkownik kliknie powiadomienie (w tym przypadku będziemy zawierać informacje, które później powiedzą nam, że powinniśmy otworzyć konwersację, i będziemy wiedzieli, którą konkretną konwersację otworzyć).
// Construct the content and show the toast!
(ref new ToastContentBuilder())
// Arguments returned when user taps body of notification
->AddArgument("action", "viewConversation")
->AddArgument("conversationId", 9813)
->AddText("Andrew sent you a picture")
->Show();
Dodawanie obrazów
Możesz dodać bogatą zawartość do powiadomień. Dodamy obraz wbudowany i obraz profilu (app przesłonięcia logo).
Note
Obrazy mogą być używane z pakietu app, lokalnej pamięci app lub z Internetu. W ramach aktualizacji Fall Creators Update obrazy internetowe mogą mieć do 3 MB na zwykłych połączeniach i 1 MB w przypadku połączeń taryfowych. Na urządzeniach, na których nie uruchomiono jeszcze aktualizacji Fall Creators Update, obrazy internetowe nie mogą być większe niż 200 KB.
// Construct the content and show the toast!
(ref new ToastContentBuilder())
...
// Inline image
->AddInlineImage(ref new Uri("https://picsum.photos/360/202?image=883"))
// Profile (app logo override) image
->AddAppLogoOverride(ref new Uri("ms-appdata:///local/Andrew.jpg"), ToastGenericAppLogoCrop::Circle)
->Show();
Dodawanie przycisków i danych wejściowych
Możesz dodawać przyciski i dane wejściowe, aby otrzymywać powiadomienia interakcyjne. Przyciski mogą uruchamiać pierwszy plan app, protokół lub zadanie w tle. Dodamy pole tekstowe odpowiedzi, przycisk "Lubię to" i przycisk "Wyświetl", który otwiera obraz.
// Construct the content
(ref new ToastContentBuilder())
->AddArgument("conversationId", 9813)
...
// Text box for replying
->AddInputTextBox("tbReply", "Type a response")
// Buttons
->AddButton((ref new ToastButton())
->SetContent("Reply")
->AddArgument("action", "reply")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("Like")
->AddArgument("action", "like")
->SetBackgroundActivation())
->AddButton((ref new ToastButton())
->SetContent("View")
->AddArgument("action", "view"))
->Show();
Aktywacja przycisków pierwszego planu jest obsługiwana w taki sam sposób, jak główna treść powiadomienia ( Appzostanie wywołana .xaml.cpp OnActivated).
Obsługa aktywacji w tle
Gdy określisz uruchamianie w tle dla swojego powiadomienia app (lub przycisku wewnątrz powiadomienia), zadanie w tle zostanie wykonane zamiast uruchamiania zadania pierwszoplanowego app.
Aby uzyskać więcej informacji na temat zadań w tle, zobacz Wspieraj swój app za pomocą zadań w tle.
Jeśli celujesz w wersję 14393 lub nowszą, możesz użyć zadań w tle w obrębie procesu, które znacznie upraszczają pracę. Należy pamiętać, że zadania w tle w procesie nie będą działać w starszych wersjach systemu Windows. W tym przykładzie kodu użyjemy zadania w tle w ramach procesu.
const string taskName = "ToastBackgroundTask";
// If background task is already registered, do nothing
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals(taskName)))
return;
// Otherwise request access
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
// Create the background task
BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
{
Name = taskName
};
// Assign the toast action trigger
builder.SetTrigger(new ToastNotificationActionTrigger());
// And register the task
BackgroundTaskRegistration registration = builder.Register();
Następnie w App.xaml.cs nadpisz metodę OnBackgroundActivated. Następnie możesz pobrać wstępnie zdefiniowane argumenty i dane wejściowe użytkownika, podobnie jak w przypadku aktywacji na pierwszym planie.
App.xaml.cs
protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
var deferral = args.TaskInstance.GetDeferral();
switch (args.TaskInstance.Task.Name)
{
case "ToastBackgroundTask":
var details = args.TaskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
if (details != null)
{
string arguments = details.Argument;
var userInput = details.UserInput;
// Perform tasks
}
break;
}
deferral.Complete();
}
Ustawianie czasu wygaśnięcia
W systemie Windows 10 i 11 wszystkie app powiadomienia trafiają do Centrum akcji po ich odrzuceniu lub zignorowaniu przez użytkownika, aby użytkownicy mogli przeglądać powiadomienia po zniknięciu okienka.
Jeśli jednak komunikat w powiadomieniu jest istotny tylko przez pewien czas, należy ustawić czas wygaśnięcia na powiadomieniu app, aby użytkownicy nie widzieli nieaktualnych informacji z app. Jeśli na przykład promocja jest ważna tylko przez 12 godzin, ustaw czas wygaśnięcia na 12 godzin. W poniższym kodzie ustawiliśmy czas wygaśnięcia na 2 dni.
Note
Domyślny i maksymalny czas wygaśnięcia dla powiadomień lokalnych app wynosi 3 dni.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("Expires in 2 days...")
->Show(toast =>
{
toast->ExpirationTime = DateTime::Now->AddDays(2);
});
Podaj klucz podstawowy dla app powiadomienia
Jeśli chcesz programowo usunąć lub zamienić wysyłane powiadomienie, musisz użyć właściwości Tag (i opcjonalnie właściwości Grupa), aby podać klucz podstawowy powiadomienia. Następnie możesz użyć tego klucza podstawowego w przyszłości, aby usunąć lub zamienić powiadomienie.
Aby uzyskać więcej informacji na temat zastępowania/usuwania już dostarczonych app powiadomień, zobacz Szybki start: zarządzanie powiadomieniami toast w centrum akcji (XAML).
Tag i grupa łączone działają jako złożony klucz podstawowy. Grupa to bardziej ogólny identyfikator, w którym można przypisywać grupy, takie jak "wallPosts", "messages", "friendRequests" itp. Następnie tag powinien jednoznacznie zidentyfikować samo powiadomienie z grupy. Korzystając z grupy ogólnej, można usunąć wszystkie powiadomienia z tej grupy przy użyciu interfejsu API RemoveGroup.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("New post on your wall!")
->Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
Wyczyść powiadomienia
Aplikacje są odpowiedzialne za usuwanie i czyszczenie własnych powiadomień. Po uruchomieniu app nie usuwamy automatycznie powiadomień.
System Windows automatycznie usunie powiadomienie tylko wtedy, gdy użytkownik jawnie kliknie powiadomienie.
Oto przykład działania komunikatów app ...
- Użytkownik otrzymuje wiele app powiadomień o nowych wiadomościach w konwersacji
- Użytkownik dotknie jedno z tych powiadomień, aby otworzyć konwersację
- Element app otwiera konwersację, a następnie wyczyszcza wszystkie powiadomienia dotyczące tej konwersacji (przy użyciu polecenia RemoveGroup na grupie dostarczonej przez app dla tej konwersacji)
- Centrum akcji użytkownika teraz prawidłowo odzwierciedla stan powiadomienia, ponieważ w Centrum akcji nie ma już nieaktualnych powiadomień dla tej konwersacji.
Aby dowiedzieć się więcej na temat czyszczenia wszystkich powiadomień lub usuwania określonych powiadomień, zobacz Szybki start: zarządzanie powiadomieniami toast w centrum akcji (XAML).
ToastNotificationManagerCompat::History->Clear();
Resources
Windows developer