Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A app értesítés olyan üzenet, amelyet a app létrehozhat és továbbíthat a felhasználónak, amikor nincsenek jelen a app-ben.
Ez a rövid útmutató végigvezeti a Windows 10- vagy Windows 11-értesítések app létrehozásának, kézbesítésének és megjelenítésének lépésein gazdag tartalommal és interaktív műveletekkel. Ez a rövid útmutató helyi értesítéseket használ, amelyek a legegyszerűbben implementálható értesítések. Minden alkalmazástípus (WPF, UWP, WinForms, konzol) küldhet értesítéseket!
Note
Az "toast értesítés" kifejezés helyébe "app értesítés" lép. Ezek a kifejezések a Windows ugyanazon funkciójára vonatkoznak, de idővel megszüntetjük az "toast értesítés" használatát a dokumentációban.
Important
Ha nem UWP C++ alkalmazást app ír, tekintse meg a C++ WRL dokumentációját. C# appírása esetén tekintse meg a C# dokumentációját.
1. lépés: A NuGet-csomag telepítése
Értesítéseket a Windows Community Toolkit (WCT) szerkesztői szintaxisával vagy XML-lel hozhat létre app . Ha az utóbbit részesíti előnyben, ugorjon a 2. lépés részre, és tekintse meg a Builder nélküli szintaxis kódpéldáit.
A Visual Studio-megoldásban kattintson a jobb gombbal a projektre, kattintson a "NuGet-csomagok kezelése..." elemre, és keresse meg és telepítse a Microsoft.Toolkit.Uwp.NotificationsNuGet-csomag 7.0-s vagy újabb verzióját.
A Builder szintaxiskód-példái ezt a csomagot fogják használni. Ez a csomag lehetővé teszi, hogy XML használata nélkül hozzon létre app értesítéseket.
2. lépés: Névtér-deklarációk hozzáadása
using namespace Microsoft::Toolkit::Uwp::Notifications;
3. lépés: Értesítés küldése app
A Windows 10-ben és a Windows 11-ben az app értesítési tartalmakat egy adaptív nyelvvel írják le, amely nagy rugalmasságot biztosít az értesítés megjelenésével kapcsolatban. További információkért tekintse meg az értesítési tartalom dokumentációjátApp.
Kezdjük egy egyszerű szöveges értesítéssel. Hozza létre az értesítési tartalmat (az Értesítések tár használatával), és jelenítse meg az értesítést! Vegye figyelembe, hogy a névtér a Microsoft.Toolkit.Uwp.Notifications.
Ha nem a WCT-értesítések kódtár-szerkesztői szintaxisát használja, akkor ehelyett az XML-értesítési app sablont fogja létrehozni, szöveggel és értékekkel feltölteni, létrehozni és megjeleníteni az értesítést.
// 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();
4. lépés: Az aktiválás kezelése
Amikor a felhasználó rákattint az értesítésre (vagy az értesítés egyik gombjára, amely előtér-aktiválást használ), akkor a rendszer a(z) appApp.xaml.cppOnActivated metódusát hívja meg.
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
Inicializálnia kell a keretet, és aktiválnia kell az ablakot, ugyanúgy, mint az OnLaunched kódot.
Az OnLaunched nem lesz meghívva, ha a felhasználó az értesítésre app kattint, még akkor is, ha az ön app bezárva van, és első alkalommal indul el. Gyakran javasoljuk, hogy OnLaunched és OnActivated metódusokat kombinálja a saját OnLaunchedOrActivated metódusba, mivel mindkettőben ugyanaznak az inicializálásnak kell történnie.
Aktiválás a mélységben
Az értesítések végrehajthatóvá tételének első lépése, hogy hozzáad néhány indítási arg-t az értesítéshez, hogy az Ön app tudja, mit kell elindítania, amikor a felhasználó az értesítésre kattint (ebben az esetben olyan információkat is felveszünk, amelyek később azt jelzik, hogy nyissunk meg egy beszélgetést, és tudjuk, hogy melyik konkrét beszélgetést kell megnyitni).
// 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();
Képek hozzáadása
Az értesítésekhez gazdag tartalmat adhat hozzá. Hozzáadunk egy beágyazott képet és egy profilt (app emblémát felülíró) képet.
Note
Képek használhatók a app csomagból, a app helyi tárolóból vagy a webből. A Fall Creators Update-nek megfelelően a webes rendszerképek normál kapcsolatokon akár 3 MB-ot, forgalmi díjas kapcsolatokon pedig 1 MB-ot is tartalmazhatnak. A Fall Creators Update-et még nem futtató eszközökön a webes rendszerképeknek legfeljebb 200 KB-nak kell lenniük.
// 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();
Gombok és bemenetek hozzáadása
Az értesítések interaktívsá tétele érdekében gombokat és bemeneteket adhat hozzá. A gombok elindíthatják az előteret app, a protokollt vagy a háttérfeladatot. Hozzáadunk egy válasz szövegdobozt, egy "Tetszik" gombot és egy "Nézet" gombot, amely megnyitja a képet.
// 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();
Az előtérgombok aktiválása ugyanúgy történik, mint a fő értesítési törzs (a App.xaml.cpp OnActivated lesz meghívva).
Háttéraktiválás kezelése
Amikor háttéraktiválást állít be az app értesítésen (vagy az értesítésen belüli gombon), a háttérfeladat kerül végrehajtásra az előtérben lévő app helyett.
A háttérfeladatokkal kapcsolatos további információkért tekintse meg a Háttérfeladatok támogatása című témakörtapp.
Ha az 14393-at vagy újabb buildet célozza meg, a folyamat közbeni háttérfeladatokat is használhatja, ami jelentősen leegyszerűsíti a dolgokat. Vegye figyelembe, hogy a folyamatban lévő háttérfeladatok nem fognak futni a Windows régebbi verzióiban. Ebben a kódmintában egy folyamatban lévő háttérfeladatot fogunk használni.
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();
Ezután a App.xaml.cs bírálja felül az OnBackgroundActivated metódust. Ezután lekérheti az előtér-aktiváláshoz hasonló előre definiált argumentumokat és felhasználói bemeneteket.
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();
}
Lejárati idő beállítása
A Windows 10-ben és a 11-ben az összes app értesítés a Műveletközpontba kerül, miután a felhasználó elutasította vagy figyelmen kívül hagyta őket, így a felhasználók megtekinthetik az értesítést az előugró ablak eltűnése után.
Ha azonban az értesítésben szereplő üzenet csak egy ideig releváns, akkor meg kell adnia az értesítés lejárati idejét app , hogy a felhasználók ne láthassák a elavult információkat az Öntől app. Ha például egy promóció csak 12 órán keresztül érvényes, állítsa a lejárati időt 12 órára. Az alábbi kódban a lejárati idő 2 nap.
Note
A helyi app értesítések alapértelmezett és maximális lejárati ideje 3 nap.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("Expires in 2 days...")
->Show(toast =>
{
toast->ExpirationTime = DateTime::Now->AddDays(2);
});
Elsődleges kulcs megadása az app értesítéshez
Ha programozott módon szeretné eltávolítani vagy lecserélni az elküldött értesítést, a Címke tulajdonságot (és opcionálisan a Csoport tulajdonságot) kell használnia az értesítés elsődleges kulcsának megadásához. Ezután a jövőben ezt az elsődleges kulcsot használhatja az értesítés eltávolításához vagy cseréjéhez.
A már kézbesített app értesítések cseréjével/eltávolításával kapcsolatos további részletekért tekintse meg a rövid útmutatót: Értesítések kezelése toast a műveletközpontban (XAML).
A címke és a csoport együttes használata összetett elsődleges kulcsként működik. A csoport az általánosabb azonosító, ahol olyan csoportokat rendelhet hozzá, mint a "wallPosts", "messages", "friendRequests". Ezután a Címkének egyedileg kell azonosítania magát az értesítést a csoporton belülről. Egy általános csoport használatával az összes értesítés eltávolítható az adott csoportból a RemoveGroup APIhasználatával.
// Create toast content and show the toast!
(ref new ToastContentBuilder())
->AddText("New post on your wall!")
->Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
Értesítések törlése
Az alkalmazások felelősek a saját értesítéseik eltávolításáért és törléséért. Az app indításakor az értesítéseket automatikusan NEM töröljük.
A Windows csak akkor távolít el automatikusan értesítést, ha a felhasználó kifejezetten az értesítésre kattint.
Íme egy példa az üzenetküldési app műveletekre...
- A felhasználó több app értesítést kap egy beszélgetés új üzeneteiről
- A felhasználó az egyik értesítésre koppintva nyissa meg a beszélgetést
- A app megnyitja a beszélgetést, majd törli az adott beszélgetés összes értesítését, a RemoveGroup használatával az adott beszélgetéshez tartozó app-által megadott csoportban.
- A felhasználói műveletközpont mostantól megfelelően tükrözi az értesítési állapotot, mivel a Műveletközpontban nem maradt elavult értesítés a beszélgetésről.
Az összes értesítés törléséről vagy adott értesítések eltávolításáról a rövid útmutatóban tájékozódhat: Értesítések kezelése toast a műveletközpontban (XAML).
ToastNotificationManagerCompat::History->Clear();
Resources
Windows developer