So wird's gemacht: Anfordern, Erstellen und Speichern eines Benachrichtigungskanals
Sie können einen Kanal URI (Uniform Resource Identifier) öffnen, über den Ihre App Pushbenachrichtigungen empfangen kann. Anschließend können Sie den Kanal an Ihren Server senden, der ihn zum Senden von Pushbenachrichtigungen verwendet, und ihn schließen, wenn Sie ihn nicht mehr benötigen. Ein Kanal ist eine eindeutige Adresse, die einen einzelnen Benutzer auf einem einzelnen Gerät für eine bestimmte App oder sekundäre Kachel darstellt.
Sie sollten bei jedem Start der App einen neuen Kanal anfordern und den Cloudserver aktualisieren, wenn sich der URI ändert. Ausführliche Informationen finden Sie unter Hinweise.
Wichtig
Benachrichtigungskanäle laufen automatisch nach 30 Tagen ab.
Wichtige Informationen
Technologien
- Windows-Runtime
Voraussetzungen
- Vertrautheit mit Den Konzepten, Anforderungen und Vorgängen für Pushbenachrichtigungsdienste (Windows Push Notification Services, WNS). Diese werden in der Übersicht über Windows-Pushbenachrichtigungsdienste (Windows Push Notification Services, WNS) erläutert.
Anweisungen
Schritt 1: Hinzufügen von Namespacedeklarationen
Windows.UI.Notifications enthält die Popup-APIs.
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
using Windows.Networking.PushNotifications;
Schritt 2: Anfordern eines Kanal-URI
In diesem Beispiel wird ein Kanal-URI angefordert. Die Anforderung wird an die Benachrichtigungsclientplattform gesendet, die wiederum den Kanal-URI von WNS anfordert. Wenn die Anforderung abgeschlossen ist, ist der zurückgegebene Wert ein PushNotificationChannel-Objekt , das den URI enthält.
PushNotificationChannel channel = null;
try
{
channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
}
catch (Exception ex)
{
// Could not create a channel.
}
Schritt 3: Senden des Kanal-URI an Ihren Server
Der Kanal-URI wird in eine HTTP POST-Anforderung verpackt und an den Server gesendet.
Wichtig
Sie sollten diese Informationen auf sichere Weise an Ihren Server senden. Sie sollten verlangen, dass sich die App beim Server authentifiziert, wenn sie den Kanal-URI überträgt. Verschlüsseln Sie die Informationen, und verwenden Sie ein sicheres Protokoll wie HTTPS.
String serverUrl = "http://www.contoso.com";
// Create the web request.
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(serverUrl);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
byte[] channelUriInBytes = System.Text.Encoding.UTF8.GetBytes("ChannelUri=" + channel.Uri);
// Write the channel URI to the request stream.
Stream requestStream = await webRequest.GetRequestStreamAsync();
requestStream.Write(channelUriInBytes, 0, channelUriInBytes.Length);
try
{
// Get the response from the server.
WebResponse response = await webRequest.GetResponseAsync();
StreamReader requestReader = new StreamReader(response.GetResponseStream());
String webResponse = requestReader.ReadToEnd();
}
catch (Exception ex)
{
// Could not send channel URI to server.
}
Hinweise
Anfordern von Kanälen
Sie sollten bei jedem Aufruf Ihrer App einen neuen Kanal anfordern, indem Sie die folgende Logik verwenden:
- Fordern Sie einen Kanal an.
- Vergleichen Sie den neuen Kanal mit Ihrem vorherigen Kanal. Wenn der Kanal identisch ist, müssen Sie keine weiteren Maßnahmen ergreifen. Beachten Sie, dass Ihre App den Kanal jedes Mal lokal speichern muss, wenn die App ihn erfolgreich an Ihren Dienst sendet, sodass Sie den Kanal haben, mit dem Sie später vergleichen können.
- Wenn sich der Kanal geändert hat, senden Sie den neuen Kanal an Ihren Webdienst. Schließen Sie eine Fehlerbehandlungslogik ein, die in den folgenden Fällen immer einen neuen Kanal sendet:
- Ihre App hat noch nie einen Kanal an den Webdienst gesendet.
- Der letzte Versuch Ihrer App, den Kanal an den Webdienst zu senden, war nicht erfolgreich.
Verschiedene Aufrufe der CreatePushNotificationChannelForApplicationAsync-Methode geben nicht immer einen anderen Kanal zurück. Wenn sich der Kanal seit dem letzten Aufruf nicht geändert hat, sollte Ihre App Aufwand und Internetdatenverkehr sparen, indem sie diesen Kanal nicht erneut an Ihren Dienst sendet. Eine App kann mehrere gültige Kanal-URIs gleichzeitig haben. Da jeder eindeutige Kanal gültig bleibt, bis er abläuft, entsteht kein Schaden beim Anfordern eines neuen Kanals, da er sich nicht auf die Ablaufzeit vorheriger Kanäle auswirkt.
Wenn Sie bei jedem Aufruf Ihrer App einen neuen Kanal anfordern, maximieren Sie Ihre Chancen, immer Zugriff auf einen gültigen Kanal zu haben. Dies ist besonders wichtig, wenn es für Ihr Kachel- oder Popupszenario wichtig ist, dass Inhalte immer live sind. Wenn Sie bedenken, dass ein Benutzer Ihre App möglicherweise nicht mehr als einmal alle 30 Tage ausführt, können Sie eine Hintergrundaufgabe implementieren, um Ihren Kanalanforderungscode regelmäßig auszuführen.
Behandeln von Fehlern in Kanalanforderungen
Der Aufruf der CreatePushNotificationChannelForApplicationAsync-Methode kann fehlschlagen, wenn das Internet nicht verfügbar ist. Um dies zu behandeln, fügen Sie dem in Schritt 2 gezeigten Code Wiederholungslogik hinzu. Wir empfehlen drei Versuche mit einer Verzögerung von 10 Sekunden zwischen jedem erfolglosen Versuch. Wenn alle drei Versuche fehlschlagen, sollte Ihre App warten, bis der Benutzer sie das nächste Mal startet, um es erneut zu versuchen.
Schließen von Kanälen
Ihre App kann die Übermittlung von Benachrichtigungen auf allen Kanälen sofort beenden, indem sie die PushNotificationChannel.Close-Methode aufruft. Es ist zwar nicht üblich, dass Ihre App dies tut, aber es kann in bestimmten Szenarien vorkommen, in denen Sie die übermittlung von Benachrichtigungen an Ihre App beenden möchten. Wenn Ihre App über das Konzept von Benutzerkonten verfügt und sich ein Benutzer bei dieser App abmeldet, ist für instance davon auszugehen, dass auf der Kachel nicht mehr die persönlichen Informationen des Benutzers angezeigt werden. Gehen Sie wie folgt vor, um die Kachel des Inhalts zu löschen und die Zustellung von Benachrichtigungen zu beenden:
- Beenden Sie alle Kachelupdates, indem Sie die PushNotificationChannel.Close-Methode für jeden Ihrer Benachrichtigungskanäle aufrufen, die Kachel-, Popup-, Signal- oder unformatierte Benachrichtigungen an einen Benutzer übermitteln. Durch Aufrufen der Close-Methode wird sichergestellt, dass keine weiteren Benachrichtigungen für diesen Benutzer an den Client übermittelt werden können.
- Löschen Sie den Inhalt der Kachel, indem Sie die TileUpdater.Clear-Methode aufrufen, um die Daten des vorherigen Benutzers aus der Kachel zu entfernen.
Windows developer
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für