So wird’s gemacht: Anfordern, Erstellen und Speichern eines Benachrichtigungskanals (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Hinweis  Sie verwenden nicht JavaScript? Siehe So wird’s gemacht: Anfordern, Erstellen und Speichern eines Benachrichtigungskanals (XAML)

 

Sie können einen Kanal-URI (Uniform Resource Identifier) öffnen, über den die App Push-Benachrichtigungen empfangen kann. Den Kanal können Sie dann an den Server senden, der über diesen Push-Benachrichtigungen sendet, und ihn schließen, wenn Sie ihn nicht mehr benötigen. Ein Kanal ist eine eindeutige Adresse, die einen einzelnen Benutzer an 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. Weitere Informationen finden Sie unter "Anmerkungen".

Wichtig  Benachrichtigungskanäle laufen nach 30 Tagen automatisch ab.

 

Wissenswertes

Technologien

  • Windows Runtime

Voraussetzungen

  • Grundkenntnisse im Bereich XML und in Bezug auf die Begriffe und Konzepte für Kacheln und Benachrichtigungen In diesem Thema wird zudem vorausgesetzt, dass Sie mit der Erstellung einer einfachen Windows Store-App mit JavaScript und Windows Runtime-APIs vertraut sind.
  • Kenntnisse über Pushbenachrichtigungen sowie über die Konzepte, Anforderungen und die Verwendung des Windows-Pushbenachrichtigungsdiensts (Windows Push Notification Service, WNS). Diese werden unter Übersicht über den Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS) erläutert.

Anweisungen

Schritt 1: Anfordern eines Kanal-URIs

In diesem Beispiel wird ein Kanal-URI angefordert. Die Anforderung wird an die Benachrichtigungsclientplattform (Notification Client Platform) gestellt, die wiederum den Kanal-URI von WNS anfordert. Nach Abschluss der Anforderung ist der zurückgegebene Wert ein PushNotificationChannel-Objekt, das den URI enthält.


var channel;
var pushNotifications = Windows.Networking.PushNotifications;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    // Success. The channel URI is found in newChannel.uri.
    },
    function (error) {
        // Could not create a channel. Retrieve the error through error.number.
    }
);

Schritt 2: Senden des Kanal-URIs an den Server

Der Kanal-URI wird in eine HTTP-POST-Anforderung gepackt und an den Server gesendet.

Wichtig  Sie sollten diese Informationen auf sichere Weise an den Server senden. Sie sollten anfordern, dass sich die App bei der Übertragung des Kanal-URIs beim Server authentifizieren muss. Verschlüsseln Sie die Informationen, und verwenden Sie ein sicheres Protokoll wie HTTPS.

 


var serverUrl = "https://www.contoso.com";

var xhr = new WinJS.xhr({
        type: "POST", 
        url: serverUrl,
        headers: {"Content-Type": "application/x-www-form-urlencoded"},
        data: "channelUri=" + channel.uri
}).then(function (req) {
        // Channel URI successfully sent to server. Retrieve the response from req.response.
    },
    function (req) {
        // Could not send channel URI to server. Retrieve the error through req.statusText.
    }
);

Anmerkungen

Anfordern von Kanälen

Sie sollten immer dann, wenn Ihre App aufgerufen wird, einen neuen Kanal anfordern, indem Sie die folgende Logik verwenden:

  1. Fordern Sie einen Kanal an.
  2. Vergleichen Sie den neuen Kanal mit Ihrem vorherigen Kanal. Wenn die Kanäle identisch sind, müssen Sie nichts weiter tun. Beachten Sie, dass Ihre App den Kanal jedes Mal, wenn sie ihn erfolgreich an Ihren Dienst sendet, lokal speichern muss, damit der Kanal später zum Vergleich zur Verfügung steht.
  3. Senden Sie den neuen Kanal an Ihren Webdienst, wenn er sich geändert hat. Fügen Sie Fehlerbehandlungslogik hinzu, die in den folgenden Fällen jedes Mal einen neuen Kanal sendet:
    • Ihre App hat zuvor noch nie einen Kanal an den Webdienst gesendet.
    • Der letzte Versuch der 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 Ressourcen bezüglich Aufwand und Internetdatenverkehr sparen, indem derselbe Kanal nicht erneut an den Dienst gesendet wird. Für eine App können mehrere gültige Kanal-URIs gleichzeitig vorhanden sein. Da jeder eindeutige Kanal bis zu seinem Ablauf gültig bleibt, schadet es nicht, einen neuen Kanal anzufordern, weil sich dies nicht auf die Ablaufzeit vorheriger Kanäle auswirkt.

Indem Sie bei jedem Aufruf der App einen neuen Kanal anfordern, maximieren Sie die Chancen, stets auf einen gültigen Kanal zugreifen zu können. Dies ist insbesondere dann wichtig, wenn es für das Kachel- oder Popupszenario unerlässlich ist, dass Inhalte stets aktuell sind. Wenn Sie nicht sicher sind, ob Benutzer Ihre App öfter als einmal alle 30 Tage ausführen, können Sie eine Hintergrundaufgabe implementieren, damit der Kanalanforderungscode regelmäßig ausgeführt wird.

Behandeln von Fehlern in Kanalanforderungen

Der Aufruf der createPushNotificationChannelForApplicationAsync-Methode kann fehlschlagen, wenn das Internet nicht verfügbar ist. Um dies zu behandeln, können Sie dem in Schritt 2 gezeigten Code eine Wiederholungslogik hinzufügen. Es werden drei Versuche mit jeweils zehn Sekunden Verzögerung zwischen jedem fehlerhaften Versuch empfohlen. Wenn all drei Versuche einen Fehler erzeugen, sollte Ihre App warten, bis sie der Benutzer das nächste Mal startet, um den Vorgang zu wiederholen.

Schließen von Kanälen

Ihre App kann die Zustellung von Benachrichtigungen sofort für alle Kanäle beenden, indem sie die close-Methode aufruft. Während dies für Ihre App keine alltägliche Aktivität darstellt, kann es in manchen Szenarien wünschenswert sein, die Zustellung von Benachrichtigungen an Ihre App umgehend zu unterbinden. Wenn Ihre App zum Beispiel das Konzept von Benutzerkonten beherrscht und sich ein Benutzer von der App abmeldet, ist es plausibel, davon auszugehen, dass die Kachel die persönlichen Informationen des Benutzers nicht mehr anzeigt. Gehen Sie wie folgt vor, um Inhalte von der Kachel zu entfernen und die Zustellung von Benachrichtigungen zu unterbinden:

  1. Stoppen Sie sämtliche Kachelaktualisierungen, indem Sie die PushNotificationChannel.close-Methode für Ihre Benachrichtigungskanäle, die Kachel-, Popup-, Signal- oder unformatierte Benachrichtigungen an einen Benutzer zustellen, aufrufen. Indem die close-Methode aufgerufen wird, kann sichergestellt werden, das keine weiteren Benachrichtigungen für diesen Benutzer an den Client gesendet werden.
  2. Löschen Sie die Inhalte der Kachel, indem Sie die TileUpdater.clear-Methode zum Entfernen der Daten des vorherigen Benutzers von der Kachel aufrufen.

Verwandte Themen

Beispiel für Pushbenachrichtigungen und periodische Benachrichtigungen

Übersicht über den Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS)

Schnellstart: Senden einer Pushbenachrichtigung

So wird's gemacht: Authentifizieren mit dem Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS)

So wird's gemacht: Verwalten von Kanalablauf und -erneuerung

Richtlinien und Prüfliste für Pushbenachrichtigungen

Anforderungs- und Antwortheader des Pushbenachrichtigungsdiensts