So wird’s gemacht: Verwenden von WNS zur Übermittlung unformatierter Pushbenachrichtigungen an eine Sperrbildschirm-App (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]

In diesem Thema wird gezeigt, wie Sie den Windows-Pushbenachrichtigungsdienst (WNS) und unformatierte Pushbenachrichtigungen verwenden, um in einer Windows-Runtime-App auf dem Sperrbildschirm Hintergrund-Netzwerkbenachrichtigungen zu empfangen. Es wird beschrieben, wie Sie einen Pushbenachrichtigungskanal registrieren und an den Server senden, wie Sie eine Hintergrundaufgabe registrieren, die von einer unformatierten Pushbenachrichtigung aktiviert wird, und wie Sie eine unformatierte Pushbenachrichtigung an den Kanal senden und die Hintergrundaufgabe aktivieren.

Wissenswertes

Technologien

Voraussetzungen

  • Die folgenden Informationen gelten für alle verbundenen oder netzwerkfähigen Windows-Runtime-Apps, die Netzwerkverbindungen mit unformatierten Pushbenachrichtigungen erfordern, um dauerhaft verbunden zu sein. Dieses Thema bezieht sich auf in JavaScript geschriebene Apps für Windows 8.1, Windows Phone 8.1 und Windows Server 2012 R2.

    Hintergrund-Netzwerkkonnektivität, die unformatierte Pushbenachrichtigungen verwendet, wird von JavaScript-Apps, Apps in C++/XAML und Apps in C#, VB.NET oder verwaltetem C++, die .NET Framework 4.5 nutzen, unterstützt. Weitere Informationen zu Netzwerkaufgaben im Hintergrund, die für JavaScript-Apps gelten, finden Sie unter Unterstützen der App mit Hintergrundaufgaben.

Anweisungen

Verwenden von WNS zur Übermittlung unformatierter Pushbenachrichtigungen an eine Sperrbildschirm-App

Apps, die WNS verwenden, müssen nicht ausgeführt werden, um Pushbenachrichtigungen zu empfangen. Für den Benutzer kann es so aussehen, als werde eine App ausgeführt, obwohl dies nicht der Fall ist. So kann beispielsweise eine Wetter-App in einer aktualisierten Live-Kachel immer die neuesten Wetterdaten anzeigen. WNS kann auch verwendet werden, um für die Benutzer Benachrichtigungen auf dem Bildschirm anzuzeigen, wenn wichtige Ereignisse eintreten. Wichtige Tagesnachrichten sind ein gutes Beispiel für die Verwendung von Benachrichtigungen auf dem Bildschirm. Jedes Gerät mit Windows 8.1, Windows Phone 8.1 oder Windows Server 2012 R2 und einer Internetverbindung kann WNS verwenden. Die WNS-Benachrichtigungen werden in der Regel direkt nach dem Absenden übermittelt.

WNS unterstützt die Live-Kacheln und Benachrichtigungen auf der Startseite von Windows 8.1, kann aber auch verwendet werden, um Szenarios mit Echtzeitverbindungen zu ermöglichen, zum Beispiel für Sofortnachrichten, VoIP und E-Mails. Mit einer App, die WNS verwendet und die zum Sperrbildschirm hinzugefügt wird, kann eine Hintergrundaufgabe aktiviert werden. Eine Hintergrundaufgabe ist ein Teil des App-Codes, der ausgeführt wird, wenn sich die App im Hintergrund befindet (also nicht mehr im Vordergrund).

Beispiele für Hintergrundaufgaben, die durch eine WNS-Benachrichtigung aktiviert werden können:

  • Aufruf der Benachrichtigungssignal-API zum Hochzählen eines Signalsymbols für eine E-Mail-App auf dem Sperrbildschirm, um anzugeben, dass eine neue E-Mail-Nachricht empfangen wurde.
  • Aufruf der Änderungspopup-API zum Auslösen einer Benachrichtigung für eine VoIP-App, um den Benutzer auf einen eingehenden Telefonanruf hinzuweisen.

Es gibt vier Typen von Pushbenachrichtigungen:

  • Kachelupdate
  • Signalupdate
  • Popupbenachrichtigung
  • Unformatierte Benachrichtigung

Alle Windows-Runtime-Apps können die ersten drei Pushbenachrichtigungen verwenden, wenn sie im Vordergrund ausgeführt werden. Nur Sperrbildschirm-Apps können unformatierte Pushbenachrichtigungen von WNS empfangen. Unformatiert Benachrichtigungen ermöglichen es Sperrbildschirm-Apps, Code in Form einer Hintergrundaufgabe auszuführen, wenn die von WNS übermittelte unformatierte Pushbenachrichtigung empfangen wird. Dies ist auch möglich, wenn die App nicht im Vordergrund ausgeführt wird.

In den meisten Fällen müssen Apps keine Sperrbildschirm-Apps sein. Sie können WNS verwenden, ohne sich auf dem Sperrbildschirm zu befinden. Alle Apps, die im Vordergrund ausgeführt werden, können WNS verwenden, um Kacheln und Signale zu aktualisieren und um Popupbenachrichtigungen auszulösen. Die Verwendung von WNS mit einer Sperrbildschirm-App ist eine etwas anspruchsvollere Möglichkeit, Live-Kacheln zu verbessern und Benachrichtigungen für die Benutzer anzuzeigen. Entwickler sollten sich mit der WNS-Dokumentation auf MSDN vertraut machen, bevor sie WNS mit einem Sperrbildschirm verwenden. Weitere Informationen finden Sie unter Übersicht über Pushbenachrichtigungen.

Zum Senden von Pushbenachrichtigungen an WNS benötigen Sie einen geheimen Schlüssel, der über den Windows Store verfügbar gemacht wird. Weitere Informationen zur Authentifizierung gegenüber WNS und zur Konfiguration einer App finden Sie in Authentifizieren mit den Windows-Pushbenachrichtigungsdiensten (WNS).

Führen Sie die folgenden Schritte aus, um eine unformatierte Pushbenachrichtigung an eine Sperrbildschirm-App zu senden.

  • Registrieren Sie sich für einen WNS-Pushbenachrichtigungskanal, und senden Sie ihn an Ihren Server.
  • Senden Sie über den Benachrichtigungskanal eine unformatierte Pushbenachrichtigung im korrekten Format an WNS.
  • Schreiben Sie eine Hintergrundaufgabe, die über eine unformatierte Pushbenachrichtigung aktiviert wird.

Unformatierte Pushbenachrichtigungen werden über den App-Server eines Entwicklers an eine Client-App übermittelt, indem eine HTTP-Pushanforderung einer wohlgeformten XML-Nutzlast für einen Benachrichtigungskanal ausgeführt wird. Ein Benachrichtigungskanal wird von der Client-App generiert, an den App-Server gesendet und dann verwendet, um die Pushbenachrichtigung zu senden. Der Benachrichtigungskanal ist für die App-Instanz des jeweiligen Benutzerkontos unter Windows 8.1 eindeutig.

JJ679947.wedge(de-de,WIN.10).gifRegistrieren Sie sich für einen Pushbenachrichtigungskanal, und senden Sie ihn an Ihren Server.

  1. Registrieren Sie sich für einen Kanal, indem Sie eine der CreatePushNotificationChannelForApplicationAsync-Methoden für die PushNotificationChannelManager-Klasse im Windows.Networking.PushNotifications-Namespace aufrufen.

    Hierdurch wird ein Pushbenachrichtigungskanal für Ihre App generiert, der in etwa wie folgt aussieht:

    https://db3.notify.windows.com/?token=AQQAAADX3Wr8MA%2fCoZk4n1CmR5ZU7tdic6ksvG4TQq1tiyZtpetjfzuPHSjvliEeqaqJcPuo1jrVnbyCZvnbuU%2byLvZNDONTgUNu6lavpl5EGtWx7iQgpGkyHLbZeosxioQ42Cg%3d
    
  2. Senden Sie den Kanal an Ihren Server. Kanäle laufen nach 30 Tagen ab. Aus diesem Grund gibt es einige bewährte Methoden:

    • Registrieren Sie sich bei jedem Start der App, um einen neuen Pushbenachrichtigungskanal zu erhalten. Senden Sie diesen an den Server, um den Kanal zu ersetzen, der dem Benutzer bisher zugeordnet war.
    • Führen Sie für einen lokalen Computer, der ständig eingeschaltet ist, eine Hintergrundaufgabe aus, um den Kanal zu aktualisieren, bevor er abläuft. Dies wird als Wartungszeitgeber bezeichnet.

JJ679947.wedge(de-de,WIN.10).gifRegistrieren einer Hintergrundaufgabe, die über eine unformatierte Pushbenachrichtigung aktiviert wird

  1. Um eine Hintergrundaufgabe zu erstellen, die beim Empfang einer unformatierten Pushbenachrichtigung ausgeführt wird, müssen Sie die JavaScript-Quelldatei mit dem Code angeben, der von der Hintergrundaufgabe aktiviert werden soll. Hierfür müssen Sie sicherstellen, dass das App-Manifest auf die richtige Quelldatei für die Hintergrundaufgabe verweist. Das App-Manifest muss den Namen der JavaScript-Quelldatei für die Hintergrundaufgabe enthalten.

    Im folgenden Beispiel werden Erweiterungen für eine PushNotifyTask-Hintergrundaufgabe unter dem <Application>-Element in einem App-Manifest hinzugefügt.

      <Extensions>
        <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js">
          <BackgroundTasks>
            <Task Type="pushNotification" />
          </BackgroundTasks>
        </Extension>
      </Extensions>
    
  2. Die App muss den Kanal für unformatierte Pushbenachrichtigungen öffnen.

    Das folgende Beispiel veranschaulicht, wie ein Kanal für eine unformatierte Pushbenachrichtigung geöffnet wird.

    
        // Open the channel. See the "Push and Polling Notifications" sample for more detail
        function openNotificationsChannel() {
            var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();
            WinJS.log && WinJS.log("Opening a channel...", "sample", "status");
            return channelOperation.then(function (newChannel) {
                WinJS.log && WinJS.log("Channel request succeeded!", "sample", "status");
                document.getElementById("scenario1ChannelOutput").value = newChannel.uri;
                SdkSample.channel = newChannel;
            },
                function (error) {
                    WinJS.log && WinJS.log("Could not create a channel (error number: " + error.number + ")", "sample", "error");
                }
            );
        }
    
  3. Die App muss außerdem die Hintergrundaufgabe registrieren, die beim Empfang einer unformatierten Pushbenachrichtigung aktiviert werden soll.

    Das folgende Beispiel veranschaulicht, wie eine Hintergrundaufgabe für eine unformatierte Pushbenachrichtigung registriert wird.

        // Register the background task for raw notifications
        //
        function registerBackgroundTask() {
            var taskBuilder = new background.BackgroundTaskBuilder();
            var trigger = new background.PushNotificationTrigger();
            taskBuilder.setTrigger(trigger);
            taskBuilder.taskEntryPoint = sampleTaskEntryPoint;
            taskBuilder.name = sampleTaskName;
    
            try {
                var task = taskBuilder.register();
                task.addEventListener("completed", backgroundTaskComplete);
                WinJS.log && WinJS.log("Background task registered", "sample", "status");
            } catch (e) {
                WinJS.log && WinJS.log("Registration error: " + e.message, "sample", "error");
                unregisterBackgroundTask();
            }
        }
    
        function unregisterBackgroundTask() {
            var iter = background.BackgroundTaskRegistration.allTasks.first();
            while (iter.hasCurrent) {
                var task = iter.current.value;
                if (task.name === sampleTaskName) {
                    task.unregister(true);
                    return true;
                }
                iter.moveNext();
            }
            return false;
        }
    
  4. Darüber hinaus müssen Sie Code für die Funktion bereitstellen, die ausgeführt wird, wenn die Hintergrundaufgabe ausgelöst wird.

    Weitere Informationen zum Schreiben von Hintergrundaufgaben, um Hintergrund-Netzwerkbenachrichtigungen zu empfangen, die unformatierte Pushbenachrichtigungen verwenden, finden Sie unter So wird's gemacht: Schreiben von Hintergrundaufgaben für unformatierte Pushbenachrichtigungen.

    Hinweis  

    Es ist nicht möglich, in einer Hintergrundaufgabe auf Elemente der App-Benutzeroberfläche (UI) zu verweisen, da die UI-Elemente in der App nicht ausgeführt werden. Das bedeutet, dass für Rückrufe für den Netzwerktransport keine Affinität mit dem Singlethreadapartment (STA) der Benutzeroberfläche hergestellt werden darf. Es darf kein Zugriff auf Objekte mit Affinität zum Benutzeroberflächen-STA (auch als App-STA bezeichnet) durch Hintergrundaufgaben erfolgen.

    Wenn der Code in der Hintergrundaufgabe ausgeführt wird, können Sie die App für die Aktivierung vorbereiten, den Status zwischen Client und Server synchronisieren und eine Benachrichtigung für den Benutzer auslösen.

     

Unformatierte Pushbenachrichtigungen ähneln Signal- und Kachelbenachrichtigungen. Der Hauptunterschied besteht darin, dass die Nutzlast einer unformatierten Pushbenachrichtigung keine Attribute enthält, die Teile der Windows 8.1-Benutzeroberfläche aktualisieren. Die Nutzlast der unformatierten Pushbenachrichtigung besteht nur aus Kontextdaten, die direkt an die App übergeben werden, wenn die Hintergrundaufgabe aktiviert wird. Die App muss das Format der vom Server gesendeten Kontextdaten lesen können.

Damit der Server unformatierte Pushbenachrichtigungen senden kann, müssen Sie Folgendes tun:

JJ679947.wedge(de-de,WIN.10).gifSenden einer unformatierten Pushbenachrichtigung an den Kanal und Aktivieren der Hintergrundaufgabe

  1. Vergewissern Sie sich, dass Sie Ihre App im Windows Store registriert haben und über einen privaten Schlüssel und eine Paket-SID verfügen.

  2. Schreiben Sie Code für den App-Server zur Authentifizierung mit WNS über den privaten Schlüssel und die Paket-SID, bevor eine Pushbenachrichtigung vom Server gesendet wird.

  3. Entwerfen Sie eine geeignete unformatierte WNS-Pushbenachrichtigung, und richten Sie eine HTTP POST-Anforderung an den Benachrichtigungskanal, den Sie zuvor von der Windows-Runtime-App erhalten haben. Die HTTP POST-Anforderung muss mehrere zusätzliche HTTP-Header enthalten:

    • X-WNS-Type=wns/raw
    • Content-Type=application/octet-stream
    • Authorization=die Zeichenfolge "Bearer", ein Leerzeichen und der von dem im Authentifizierungsschritt erhaltene Authentifizierungstoken

    Der Text der HTTP-POST-Anforderung muss den gesamten Kontext enthalten, den Sie für die Client-App bereitstellen möchten, wenn diese die mit Empfang der unformatierten Pushbenachrichtigung ausgelöste Hintergrundaufgabe ausführt. Die Nutzlast einer unformatierten Benachrichtigung kann eine maximale Datenmenge von 5 KB enthalten.

    Die Hintergrundaufgabe wird aktiviert, wenn der Client die Benachrichtigung empfängt. Die angegebene Datennutzlast wird übergeben und ist über den Hintergrundaufgabencode für die App zugänglich.

Vorherige Schritte

Weitere Informationen zum Erstellen von Sperrbildschirm-Apps, um Hintergrund-Netzwerkbenachrichtigungen zu empfangen, die unformatierte Pushbenachrichtigungen verwenden, finden Sie unter Schnellstart: Erstellen von Sperrbildschirm-Apps, die unformatierte Hintergrund-Pushbenachrichtigungen verwenden.

Weitere Schritte

Weitere Informationen zum Schreiben von Hintergrundaufgaben, um Hintergrund-Netzwerkbenachrichtigungen zu empfangen, die unformatierte Pushbenachrichtigungen verwenden, finden Sie unter So wird's gemacht: Schreiben von Hintergrundaufgaben für unformatierte Pushbenachrichtigungen.

Weitere Informationen zu Richtlinien und Prüflisten für die Verwendung von unformatierten Pushbenachrichtigungen finden Sie unter

Richtlinien und Prüfliste für unformatierte Benachrichtigungen.

Verwandte Themen

Weitere Ressourcen

Hinzufügen von Unterstützung für Netzwerke

Netzwerkfunktionen im Hintergrund

Richtlinien und Prüfliste für unformatierte Benachrichtigungen

So wird's gemacht: Authentifizieren mit dem Windows-Pushbenachrichtigungsdienst (WNS)

So wird's gemacht: Verwenden von WNS zur Übermittlung unformatierter Pushbenachrichtigungen an eine Sperrbildschirm-App

So wird's gemacht: Schreiben von Hintergrundaufgaben für unformatierte Pushbenachrichtigungen

Übersicht über den Sperrbildschirm

Übersicht über Pushbenachrichtigungen

So wird's gemacht: Erstellen von Sperrbildschirm-Apps, die unformatierte Hintergrund-Pushbenachrichtigungen verwenden

Unterstützen von Apps durch Hintergrundaufgaben

Problembehandlung und Debuggen von Netzwerkverbindungen

Referenz

HttpClient

HttpClientHandler

IXMLHTTPRequest2

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

Windows.Web.Http

Beispiele

Beispiel für eine Hintergrundaufgabe

Beispiel für Sperrbildschirm-Apps

Beispiel für clientseitige Pushbenachrichtigungen und periodische Benachrichtigungen

Beispiel für unformatierte Benachrichtigungen