Freigeben über


Planen einer Popupbenachrichtigung

Mit geplanten Popupbenachrichtigungen können Sie planen, dass eine Benachrichtigung zu einem späteren Zeitpunkt angezeigt wird, unabhängig davon, ob Ihre App zu diesem Zeitpunkt ausgeführt wird. Dies ist nützlich für Szenarien wie das Anzeigen von Erinnerungen oder andere Nachverfolgungsaufgaben für den Benutzer, bei denen die Zeit und der Inhalt der Benachrichtigung vorab bekannt sind.

Beachten Sie, dass geplante Popupbenachrichtigungen ein Übermittlungsfenster von 5 Minuten aufweisen. Wenn der Computer während der geplanten Zustellungszeit deaktiviert ist und länger als 5 Minuten deaktiviert bleibt, wird die Benachrichtigung "gelöscht", da sie für den Benutzer nicht mehr relevant ist. Wenn Sie eine garantierte Zustellung von Benachrichtigungen benötigen, unabhängig davon, wie lange der Computer ausgeschaltet wurde, empfehlen wir die Verwendung einer Hintergrundaufgabe mit einem Zeitauslöser, wie in diesem Codebeispiel veranschaulicht.

Wichtig

Desktopanwendungen (sowohl verpackt als auch entpackt) weisen geringfügig unterschiedliche Schritte zum Senden von Benachrichtigungen und zum Behandeln der Aktivierung auf. Folgen Sie den nachstehenden Anweisungen, ersetzen ToastNotificationManager Sie jedoch durch die DesktopNotificationManagerCompat Klasse aus der Dokumentation zu Desktop-Apps .

Wichtige APIs: ScheduledToastNotification-Klasse

Voraussetzungen

Um dieses Thema vollständig zu verstehen, ist Folgendes hilfreich...

  • Ein funktionierendes Wissen über Popupbenachrichtigungsbegriffe und -konzepte. Weitere Informationen finden Sie unter Übersicht über Popups und Info-Center.
  • Vertrautheit mit Windows 10-Popupbenachrichtigungsinhalten. Weitere Informationen finden Sie in der Dokumentation zu Popupinhalten.
  • Ein Windows 10-UWP-App-Projekt

Schritt 1: Installieren des NuGet-Pakets

Installieren Sie das NuGet-Paket "Microsoft.Toolkit.Uwp.Notifications". Unser Codebeispiel verwendet dieses Paket. Am Ende des Artikels stellen wir die "einfachen" Codeausschnitte bereit, die keine NuGet-Pakete verwenden. Mit diesem Paket können Sie Popupbenachrichtigungen erstellen, ohne XML zu verwenden.

Schritt 2: Hinzufügen von Namespacedeklarationen

using Microsoft.Toolkit.Uwp.Notifications; // Notifications library

Schritt 3: Planen der Benachrichtigung

Wir verwenden eine einfache textbasierte Benachrichtigung, die einen Schüler an die hausaufgaben erinnert, die sie heute fällig haben. Erstellen Sie die Benachrichtigung, und planen Sie sie!

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5));

Bereitstellen eines Primärschlüssels für Das Popup

Wenn Sie die geplante Benachrichtigung programmgesteuert abbrechen, entfernen oder ersetzen möchten, müssen Sie die Tag-Eigenschaft (und optional die Group-Eigenschaft) verwenden, um einen Primärschlüssel für Ihre Benachrichtigung bereitzustellen. Anschließend können Sie diesen Primärschlüssel in Zukunft verwenden, um die Benachrichtigung abzubrechen, zu entfernen oder zu ersetzen.

Weitere Informationen zum Ersetzen/Entfernen bereits übermittelter Popupbenachrichtigungen finden Sie in der Schnellstartanleitung: Verwalten von Popupbenachrichtigungen im Info-Center (XAML).

Tag und Gruppe kombiniert fungieren als zusammengesetzter Primärschlüssel. "Gruppe" ist der allgemeinere Bezeichner, bei dem Sie Gruppen wie "wallPosts", "messages", "friendRequests" usw. zuweisen können. Anschließend sollte "Tag" die Benachrichtigung selbst innerhalb der Gruppe eindeutig identifizieren. Mithilfe einer generischen Gruppe können Sie dann alle Benachrichtigungen aus dieser Gruppe mithilfe der RemoveGroup-API entfernen.

// Construct the content and schedule the toast!
new ToastContentBuilder()
    .AddArgument("action", "viewItemsDueToday")
    .AddText("ASTR 170B1")
    .AddText("You have 3 items due today!");
    .Schedule(DateTime.Now.AddSeconds(5), toast =>
    {
        toast.Tag = "18365";
        toast.Group = "ASTR 170B1";
    });

Abbrechen geplanter Benachrichtigungen

Um eine geplante Benachrichtigung abzubrechen, müssen Sie zuerst die Liste aller geplanten Benachrichtigungen abrufen.

Suchen Sie dann ihr geplantes Popup, das dem zuvor angegebenen Tag entspricht (und optional gruppieren), und rufen Sie RemoveFromSchedule() auf.

// Create the toast notifier
ToastNotifierCompat notifier = ToastNotificationManagerCompat.CreateToastNotifier();

// Get the list of scheduled toasts that haven't appeared yet
IReadOnlyList<ScheduledToastNotification> scheduledToasts = notifier.GetScheduledToastNotifications();

// Find our scheduled toast we want to cancel
var toRemove = scheduledToasts.FirstOrDefault(i => i.Tag == "18365" && i.Group == "ASTR 170B1");
if (toRemove != null)
{
    // And remove it from the schedule
    notifier.RemoveFromSchedule(toRemove);
}

Wichtig

Eine entpackte Win32-App (keine Paketidentität zur Laufzeit) muss die ToastNotificationManagerCompat-Klasse verwenden, wie oben dargestellt. Wenn Sie ToastNotificationManager selbst verwenden, erhalten Sie eine Ausnahme, die nicht gefunden wurde. Alle Arten von Apps können die Compat-Klasse verwenden und funktionieren ordnungsgemäß.

Aktivierungsbehandlung

Weitere Informationen zum Behandeln der Aktivierung finden Sie unter " Senden eines lokalen Popupdokuments ". Die Aktivierung einer geplanten Popupbenachrichtigung wird genauso behandelt wie die Aktivierung einer lokalen Popupbenachrichtigung.

Hinzufügen von Aktionen, Eingaben und mehr

Weitere Informationen zu erweiterten Themen wie Aktionen und Eingaben finden Sie unter " Senden einer lokalen Popupdokumentation ". Aktionen und Eingaben funktionieren in lokalen Popups genauso wie bei geplanten Popups.

Ressourcen