Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine App-Benachrichtigung ist eine Meldung, die Ihre App erstellen und übermitteln kann, während der Benutzer sich derzeit nicht in Ihrer App befindet.
Diese Schnellstartanleitung führt Sie durch die Schritte zum Erstellen, Bereitstellen und Anzeigen einer Windows 10- oder Windows 11-App-Benachrichtigung mit umfangreichen Inhalten und interaktiven Aktionen. In dieser Schnellstartanleitung werden lokale Benachrichtigungen verwendet, bei denen es sich um die einfachste zu implementierende Benachrichtigung handelt. Alle Arten von Apps (WPF, UWP, WinForms, Konsole) können Benachrichtigungen senden!
Note
Der Begriff "Toast-Benachrichtigung" wird durch "App-Benachrichtigung" ersetzt. Diese Begriffe beziehen sich beide auf dasselbe Feature von Windows. Im Laufe der Zeit werden wir jedoch die Verwendung des Begriffs "Toast-Benachrichtigung" in der Dokumentation einstellen.
Important
Wenn Sie eine C++-App schreiben, lesen Sie die Dokumentation von entweder C++ UWP oder C++ WRL.
Schritt 1: Installieren des NuGet-Pakets
Klicken Sie in Ihrer Visual Studio-Projektmappe mit der rechten Maustaste auf Ihr Projekt, klicken Sie auf "NuGet-Pakete verwalten...", und suchen Sie nach und installieren Sie das Microsoft.Toolkit.Uwp.NotificationsNuGet-Paket, Version 7.0 oder höher.
Important
.NET Framework-Desktop-Apps, die weiterhin packages.config verwenden, müssen zu PackageReference migrieren, andernfalls werden die Windows-SDKs nicht ordnungsgemäß referenziert. Klicken Sie in Ihrem Projekt mit der rechten Maustaste auf "Verweise", und klicken Sie auf "Packages.config zu PackageReference migrieren".
.NET Core 3.0 WPF-Apps müssen auf .NET Core 3.1 aktualisiert werden, andernfalls fehlen die APIs.
.NET-Apps müssen eine der Windows TFMs verwenden, andernfalls fehlen die APIs zum Senden und Verwalten von App-Benachrichtigungen, wie z.B. Show(). Legen Sie Ihre TFM auf net6.0-windows10.0.17763.0 oder höher fest.
Unser Codebeispiel verwendet dieses Paket. Mit diesem Paket können Sie App-Benachrichtigungen ohne XML erstellen und auch Desktop-Apps App-Benachrichtigungen senden.
Schritt 2: Senden einer App-Benachrichtigung
In Windows 10 und Windows 11 wird der App-Benachrichtigungsinhalt mithilfe einer adaptiven Sprache beschrieben, die eine hohe Flexibilität bei der Darstellung Ihrer Benachrichtigung ermöglicht. Weitere Informationen finden Sie in der App-Benachrichtigungsinhaltsdokumentation .
Wir beginnen mit einer einfachen textbasierten Benachrichtigung. Erstellen Sie den Benachrichtigungsinhalt (mithilfe der Benachrichtigungsbibliothek), und zeigen Sie die Benachrichtigung an! Beachten Sie, dass der Namespace Microsoft.Toolkit.Uwp.Notificationsist.
// Requires Microsoft.Toolkit.Uwp.Notifications NuGet package version 7.0 or greater
new ToastContentBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", 9813)
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.Show(); // Not seeing the Show() method? Make sure you have version 7.0, and if you're using .NET 6 (or later), then your TFM must be net6.0-windows10.0.17763.0 or greater
Versuchen Sie, diesen Code auszuführen, und die Benachrichtigung sollte angezeigt werden!
Schritt 3: Durchführen der Aktivierung
Nach dem Anzeigen einer Benachrichtigung müssen Sie wahrscheinlich das Klicken des Benutzers auf die Benachrichtigung handhaben (ob dies bedeutet, dass bestimmte Inhalte angezeigt werden, nachdem der Benutzer darauf geklickt hat, Ihre App im Allgemeinen zu öffnen, oder eine Aktion auszuführen, wenn der Benutzer auf die Benachrichtigung klickt).
Die Schritte zum Behandeln der Aktivierung unterscheiden sich für UWP und für verpackte und entpackte Desktop-Apps.
Zuerst fügen Sie in Ihrer Package.appxmanifestFolgendes hinzu:
- Deklaration für xmlns:com
- Deklaration für xmlns:desktop
- Im Attribut IgnorableNamespacescom und Desktop
- desktop:Extension für windows.toastNotificationActivation, um die CLSID Ihres Toast-Benachrichtigungsaktivators zu deklarieren (mithilfe einer neuen GUID Ihrer Wahl).
- Nur MSIX: com:Extension für den COM-Aktivator unter Verwendung der GUID aus Schritt #4. Achten Sie darauf, die
Arguments="-ToastActivated"beizufügen, damit Sie wissen, dass Ihr Start über eine Benachrichtigung erfolgt.
Package.appxmanifest
<!--Add these namespaces-->
<Package
...
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="... com desktop">
...
<Applications>
<Application>
...
<Extensions>
<!--Specify which CLSID to activate when toast clicked-->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="replaced-with-your-guid-C173E6ADF0C3" />
</desktop:Extension>
<!--Register COM CLSID LocalServer32 registry key-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="YourProject\YourProject.exe" Arguments="-ToastActivated" DisplayName="Toast activator">
<com:Class Id="replaced-with-your-guid-C173E6ADF0C3" DisplayName="Toast activator"/>
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Abonnieren Sie dann im Startcode Ihrer App (App.xaml.cs OnStartup für WPF) das OnActivated-Ereignis.
// Listen to notification activation
ToastNotificationManagerCompat.OnActivated += toastArgs =>
{
// Obtain the arguments from the notification
ToastArguments args = ToastArguments.Parse(toastArgs.Argument);
// Obtain any user input (text boxes, menu selections) from the notification
ValueSet userInput = toastArgs.UserInput;
// Need to dispatch to UI thread if performing UI operations
Application.Current.Dispatcher.Invoke(delegate
{
// TODO: Show the corresponding content
MessageBox.Show("Toast activated. Args: " + toastArgs.Argument);
});
};
Wenn der Benutzer auf eine Ihrer Benachrichtigungen klickt (oder eine Schaltfläche auf der Benachrichtigung), geschieht Folgendes...
Wenn Ihre App derzeitausgeführt wird...
- Das ToastNotificationManagerCompat.OnActivated-Ereignis wird in einem Hintergrund-Thread ausgelöst.
Wenn Ihre App derzeit geschlossen ist,...
- Die EXE Ihrer App wird gestartet und
ToastNotificationManagerCompat.WasCurrentProcessToastActivated()gibt "true" zurück, um anzugeben, dass der Prozess aufgrund einer modernen Aktivierung gestartet wurde und der Ereignishandler bald aufgerufen wird. - Anschließend wird das Ereignis ToastNotificationManagerCompat.OnActivated in einem Hintergrundthread aufgerufen.
Schritt 4: Behandeln der Deinstallation
Sie müssen nichts tun! Wenn MSIX-Apps deinstalliert werden, werden alle Benachrichtigungen und alle anderen zugehörigen Ressourcen automatisch bereinigt.
Hinzufügen von Bildern
Sie können Benachrichtigungen umfangreiche Inhalte hinzufügen. Wir fügen ein Inlinebild und ein Profilbild zum Ersetzen des App-Logos hinzu.
Note
Bilder können aus dem App-Paket, dem lokalen Speicher der App oder aus dem Web verwendet werden. Ab dem Fall Creators Update können Webbilder bei normalen Verbindungen bis zu 3 MB und bei getakteten Verbindungen bis zu 1 MB groß sein. Auf Geräten, auf denen das Fall Creators Update noch nicht ausgeführt wird, dürfen Webbilder nicht größer als 200 KB sein.
Important
Http-Bilder werden nur in verpackten Apps unterstützt, die über die Internetfunktion in ihrem Manifest verfügen. Entpackte Apps unterstützen keine HTTP-Bilder; Sie müssen das Bild in Ihre lokalen App-Daten herunterladen und lokal darauf verweisen.
// Construct the content and show the toast!
new ToastContentBuilder()
...
// Inline image
.AddInlineImage(new Uri("https://picsum.photos/360/202?image=883"))
// Profile (app logo override) image
.AddAppLogoOverride(new Uri("ms-appdata:///local/Andrew.jpg"), ToastGenericAppLogoCrop.Circle)
.Show();
Hinzufügen von Schaltflächen und Eingaben
Sie können Schaltflächen und Eingaben hinzufügen, um Ihre Benachrichtigungen interaktiv zu gestalten. Schaltflächen können Ihre Vordergrund-App, ein Protokoll oder Ihre Hintergrundaufgabe starten. Wir fügen ein Antworttextfeld, eine Schaltfläche "Gefällt mir" und eine Schaltfläche "Ansicht" hinzu, mit der das Bild geöffnet wird.
int conversationId = 384928;
// Construct the content
new ToastContentBuilder()
.AddArgument("conversationId", conversationId)
...
// Text box for replying
.AddInputTextBox("tbReply", placeHolderContent: "Type a response")
// Buttons
.AddButton(new ToastButton()
.SetContent("Reply")
.AddArgument("action", "reply")
.SetBackgroundActivation())
.AddButton(new ToastButton()
.SetContent("Like")
.AddArgument("action", "like")
.SetBackgroundActivation())
.AddButton(new ToastButton()
.SetContent("View")
.AddArgument("action", "viewImage")
.AddArgument("imageUrl", image.ToString()))
.Show();
Die Aktivierung von Vordergrundschaltflächen wird auf die gleiche Weise wie der Haupttext der Benachrichtigung behandelt (Ihre App.xaml.cs OnActivated wird aufgerufen).
Beachten Sie, dass Argumente, die der App-Benachrichtigung auf oberster Ebene (z. B. Unterhaltungs-ID) hinzugefügt werden, auch zurückgegeben werden, wenn auf die Schaltflächen geklickt werden, sofern Schaltflächen die AddArgument-API wie oben dargestellt verwenden (wenn Sie benutzerdefinierte Argumente auf einer Schaltfläche zuweisen, werden die Argumente der obersten Ebene nicht eingeschlossen).
Behandeln der Hintergrundaktivierung
Bei Desktopanwendungen werden Hintergrundaktivitäten genauso behandelt wie Vordergrundaktivitäten (Ihr OnActivated Ereignishandler wird ausgelöst). Sie können auswählen, die Benutzeroberfläche nicht anzuzeigen und Ihre App nach der Aktivierung zu schließen.
Festlegen einer Ablaufzeit
In Windows 10 werden alle App-Benachrichtigungen im Info-Center angezeigt, nachdem sie vom Benutzer geschlossen oder ignoriert wurden, sodass Benutzer Ihre Benachrichtigung sehen können, nachdem das Popup nicht mehr angezeigt wurde.
Wenn die Nachricht in Ihrer Benachrichtigung jedoch nur für einen bestimmten Zeitraum relevant ist, sollten Sie eine Ablaufzeit für die App-Benachrichtigung festlegen, damit die Benutzer veraltete Informationen aus Ihrer App nicht sehen. Wenn eine Aktion beispielsweise nur 12 Stunden gültig ist, legen Sie die Ablaufzeit auf 12 Stunden fest. Im folgenden Code legen wir die Ablaufzeit auf 2 Tage fest.
Note
Die Standard- und maximale Ablaufzeit für lokale App-Benachrichtigungen beträgt 3 Tage.
// Create toast content and show the toast!
new ToastContentBuilder()
.AddText("Expires in 2 days...")
.Show(toast =>
{
toast.ExpirationTime = DateTime.Now.AddDays(2);
});
Bereitstellen eines Primärschlüssels für Ihre Benachrichtigung
Wenn Sie die gesendete Benachrichtigung programmgesteuert 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 zu entfernen oder zu ersetzen.
Weitere Informationen zum Ersetzen/Entfernen bereits bereitgestellter App-Benachrichtigungen finden Sie unter Schnellstart: Verwalten von Toastbenachrichtigungen im Info-Center (XAML).
Tag und Gruppe fungieren kombiniert als zusammengesetzter Primärschlüssel. "Gruppe" ist der allgemeinere Bezeichner, bei dem Gruppen wie „wallPosts“, „messages“, „friendRequests“ usw. zugewiesen werden 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-APIentfernen.
// Create toast content and show the toast!
new ToastContentBuilder()
.AddText("New post on your wall!")
.Show(toast =>
{
toast.Tag = "18365";
toast.Group = "wallPosts";
});
Löschen Ihrer Benachrichtigungen
Apps sind für das Entfernen und Löschen eigener Benachrichtigungen verantwortlich. Wenn Ihre App gestartet wird, werden Ihre Benachrichtigungen nicht automatisch gelöscht.
Windows entfernt automatisch eine Benachrichtigung, wenn der Benutzer explizit auf die Benachrichtigung klickt.
Hier ist ein Beispiel dafür, was eine Messaging-App tun sollte...
- Der Benutzer empfängt mehrere App-Benachrichtigungen zu neuen Nachrichten in einer Unterhaltung.
- Der Benutzer tippt auf eine dieser Benachrichtigungen, um die Unterhaltung zu öffnen.
- Die App öffnet die Unterhaltung und löscht dann alle Benachrichtigungen für diese Unterhaltung (mithilfe von RemoveGroup in der von der App bereitgestellten Gruppe für diese Unterhaltung).
- Das Info-Center des Benutzers zeigt jetzt den korrekten Benachrichtigungsstatus an, da keine veralteten Benachrichtigungen für diese Unterhaltung im Info-Center verbleiben.
Informationen zum Löschen aller Benachrichtigungen oder zum Entfernen bestimmter Benachrichtigungen finden Sie unter Schnellstart: Verwalten von Toast-Benachrichtigungen im Info-Center (XAML).
ToastNotificationManagerCompat.History.Clear();
Resources
Windows developer