Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe für unformatierte Benachrichtigungen (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? Weitere Informationen finden Sie unter Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe für unformatierte Benachrichtigungen (XAML).

 

Sie können eine Hintergrundaufgabenfunktion für Windows Store-Apps erstellen und registrieren. Dieser Code wird dann als Reaktion auf eine empfangene unformatierte Benachrichtigung ausgeführt, sodass die Funktionen für die App zur Verfügung stehen, wenn sie nicht im Vordergrund ausgeführt wird.

In diesem Verfahren müssen Sie drei Dateien bearbeiten: den App-Code, das App-Manifest und eine neue JavaScript-Datei, die den Hintergrundaufgabencode enthält.

Voraussetzungen

Um dieses Thema zu verstehen oder den darin bereitgestellten Code verwenden zu können, benötigen Sie Folgendes:

Anweisungen

1. Erstellen der Hintergrundaufgabenklasse

Erstellen Sie eine neue JavaScript-Datei (JS) in Ihrem Projekt. In diesem Fall heißt diese Datei examplebackgroundtask.js. Der Code in dieser Datei wird bei Erhalt einer unformatierten Benachrichtigung ausgelöst und im Hintergrund ausgeführt. Fügen Sie in diese Datei die unten gezeigte JavaScript-Skelettfunktion ein.

Diese Beispielfunktion doWork (die natürlich jeden anderen beliebigen Namen tragen kann) enthält den Code, der die eigentliche Hintergrundaufgabe beschreibt. Zuerst wird der Inhalt aus der Benachrichtigung über die Windows.UI.WebUI.WebUIBackgroundTaskInstance-Klasse abgerufen. Diese Klasse wird zum Abrufen von Informationen zur aktuellen Instanz der Hintergrundaufgabe verwendet. Der Codetext, der spezifisch für den von der App definierten Inhalt der unformatierten Benachrichtigung ist, ersetzt den Kommentar "// ...".

Wichtig  Sie können sehen, dass der Aufgabencode mit einem Aufruf der in JavaScript integrierten close-Funktion endet. Diese Methode muss immer aufgerufen werden, wenn eine JavaScript-Hintergrundaufgabe abgeschlossen oder abgebrochen wurde. Wenn die Hintergrundaufgabe nicht von selbst geschlossen wird, kann der Prozess der Hintergrundaufgabe weiter laufen, wodurch Speicher- und Energieressourcen verbraucht werden, auch wenn die Hintergrundaufgabe abgeschlossen wurde.

 


(function () {
    "use strict";

    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;

    function doWork() {
        var notificationContent = backgroundTaskInstance.triggerDetails.content; 

        // ...

        close();
    }

    doWork();
})();

2. Deklarieren der Hintergrundaufgabe im App-Manifest

Hinweis  Als Voraussetzung für diesen Schritt muss die App eine Sperrbildschirmoption auswählen und ein Signallogo angeben, um Hintergrundaufgaben unterstützen zu können. Weitere Informationen finden Sie unter Schnellstart: Anzeigen von Kachel- und Signalupdates auf dem Sperrbildschirm.

 

Bevor Ihre App eine Hintergrundaufgabe registrieren kann, müssen Sie die Hintergrundaufgabe und ihren Auslöser im App-Manifest deklarieren. Dies kann direkt in der XML des Manifests oder im Manifest-Editor von Microsoft Visual Studio erfolgen.

  • Um den Manifest-Editor zu verwenden, doppelklicken Sie in Visual Studio auf die Datei Package.appxmanifest Ihres Projekts. Wählen Sie auf der Registerkarte Deklarationen in der Dropdownliste Verfügbare Deklarationen die Option Hintergrundaufgaben aus. Wählen Sie unter Eigenschaften die Option Pushbenachrichtigung als Auslöser aus. Geben Sie in das Feld Startseite den Namen der Hintergrundaufgabendatei ein, hier examplebackgroundtask.js.

    Wenn in der App mehrere Hintergrundaufgaben verwendet werden, wiederholen Sie diesen Schritt für jede Aufgabe, und verweisen Sie dabei jeweils auf eine andere Datei.

  • Um die Informationen direkt in die XML des Manifests hinzuzufügen, öffnen Sie das Manifest in einem Text-Editor. Fügen Sie im Extensions-Element ein Extension-Element für die Hintergrundaufgabenklasse hinzu. Legen Sie für das Attribut "Category" den Wert "windows.backgroundTasks" fest, und geben Sie für das Attribut "StartPage" den Namen der JS-Datei der Hintergrundaufgabe ein, hier examplebackgroundtask.js.

    Wenn in der App mehrere Hintergrundaufgaben verwendet werden, fügen Sie jeder Aufgabe ein Extension-Element hinzu, wobei jedes Element auf eine andere JS-Datei zeigt.

    Sie müssen alle Arten von Auslösern aufführen, die von einer Hintergrundaufgabe verwendet werden. Da die in diesem Beispiel erstellte Hintergrundaufgabe als Reaktion auf eine unformatierte Benachrichtigung ausgelöst werden soll, muss ein Pushbenachrichtigungsauslöser deklariert werden. Fügen Sie ein BackgroundTasks-Element zum Extension-Element hinzu, wobei der Wert für das Task-Element "pushNotification" lautet.

    Das vollständige Extension-Element ist hier dargestellt:


<Extension Category="windows.backgroundTasks" StartPage="js\examplebackgroundtask.js">
  <BackgroundTasks>
    <Task Type="pushNotification"/>
  </BackgroundTasks>
</Extension>

3. Registrieren der Hintergrundaufgabe in Ihrer App

Der Code in den folgenden Beispielen muss zur App hinzugefügt werden (z. B. in die Datei Default.js), um die Hintergrundaufgabe als Reaktion auf eine unformatierte Benachrichtigung zu registrieren.

Überprüfen Sie zunächst, ob die Hintergrundaufgabe bereits registriert ist. Dieser Schritt ist wichtig. Wenn von der App nicht überprüft wird, ob die Hintergrundaufgabe bereits registriert ist, kann es zu einer mehrfachen Registrierung derselben Aufgabe kommen. Dies kann zu Leistungsproblemen und hoher CPU-Auslastung führen, sodass die Aufgabe möglicherweise nicht abgeschlossen werden kann

Das folgende Beispiel geht die Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks-Eigenschaft durch und setzt ein Flag auf true, wenn die Aufgabe bereits registriert ist.


var taskRegistered = false;
var exampleTaskName = "Example background task class name";

var background = Windows.ApplicationModel.Background;
var iter = background.BackgroundTaskRegistration.AllTasks.first();

while (iter.hasCurrent) {
    var task = iter.current.value;
    
    if (task.name === exampleTaskName) {
        taskRegistered = true;
        break;
    }

    iter.moveNext();
}

Wenn die App feststellt, dass die Hintergrundaufgabe noch nicht registriert ist, kann zum Aufrufen der Hintergrundaufgabe die Windows.ApplicationModel.Background.BackgroundTaskBuilder.register-Methode verwendet werden. Im Aufruf dieser Methode muss der Name der JS-Datei der Hintergrundaufgabe (hier examplebackgroundtask.js) sowie ein PushNotificationTrigger-Objekt enthalten sein.


if (taskRegistered != true) {
    var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
    var trigger = new Windows.ApplicationModel.Background.PushNotificationTrigger();

    builder.name = exampleTaskName;
    builder.taskEntryPoint = "js\\ExampleBackgroundTask.js";
    builder.setTrigger(trigger);

    var task = builder.register();
}

Zusammenfassung

Sie sollten nun über die Grundlagen verfügen, die Sie zum Schreiben einer Hintergrundaufgabenklasse zur Verwendung mit unformatierten Benachrichtigungen benötigen, und wissen, wie Sie die Hintergrundaufgabe in Ihrer App registrieren. Sie sollten auch mit der Aktualisierung des App-Manifests vertraut sein, damit Windows das Registrieren der Hintergrundaufgaben durch die App zulässt.

Hinweis  Sie können das Beispiel für eine Hintergrundaufgabe herunterladen, um sich diese und weitere Codebeispiele im Kontext einer funktionierenden JavaScript-App anzusehen, die verschiedene Arten von Hintergrundaufgaben verwendet.

 

Verwandte Themen

Beispiel für unformatierte Benachrichtigungen

Übersicht über unformatierte Benachrichtigungen

Richtlinien und Prüfliste für unformatierte Benachrichtigungen

Schnellstart: Abfangen von Pushbenachrichtigungen für ausgeführte Apps

RawNotification