Démarrage rapide : création et inscription d’une tâche de notification brute en arrière-plan (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Remarque  Vous n’utilisez pas JavaScript ? Voir Démarrage rapide : création et inscription d’une tâche de notification brute en arrière-plan (XAML).

 

Vous pouvez créer et inscrire une fonction de tâche en arrière-plan pour votre application du Windows Store. Ce code s’exécute alors en réponse à la réception d’une notification brute, ce qui offre des fonctionnalités à votre application lorsqu’elle n’est pas au premier plan.

Pour mener cette procédure, vous devez modifier trois fichiers distincts : le code de l’application, le manifeste de l’application et un nouveau fichier JavaScript contenant le code de la tâche en arrière-plan.

Prérequis

Pour comprendre cette rubrique ou utiliser le code qu’elle fournit, voici ce dont vous aurez besoin :

Instructions

1. Créer la classe de tâche en arrière-plan

Créez un nouveau fichier JavaScript (.js) dans votre projet. Dans ce cas, nous allons appeler le fichier examplebackgroundtask.js. Le code de ce fichier sera déclenché et exécuté en arrière-plan dès la réception d’une notification brute. Ajoutez la fonction JavaScript squelette présentée sous ce fichier.

La fonction doWork de cet exemple (que vous êtes libre d’appeler comme bon vous semble) renferme le code qui compose la tâche en arrière-plan réelle. Pour commencer, elle extrait le contenu de la notification par le biais de la classe Windows.UI.WebUI.WebUIBackgroundTaskInstance qui est utilisée pour recueillir des informations sur l’instance actuelle de la tâche en arrière-plan. Le corps de votre code, propre à votre contenu de notification brute défini pour l’application, remplacera le commentaire « // ... ».

Important  Notez que le code de la tâche conclut par un appel de la fonction close intégrée de JavaScript. Cette méthode doit être appelée chaque fois qu’une tâche en arrière-plan JavaScript termine son travail ou est annulée. Si la tâche en arrière-plan ne se ferme pas d’elle-même, son processus peut perdurer et risque de consommer de la mémoire et de réduire l’autonomie de la batterie même si la tâche en arrière-plan est terminée.

 


(function () {
    "use strict";

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

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

        // ...

        close();
    }

    doWork();
})();

2. Déclarer la tâche en arrière-plan dans le manifeste de votre application

Remarque  Avant cette étape, vous devez impérativement choisir une option de l’écran de verrouillage et fournir un logo de badge avant que les tâches en arrière-plan ne soient prises en charge. Pour plus d’informations, voir Démarrage rapide : affichage des mises à jour des vignettes et des badges sur l’écran de verrouillage.

 

Avant que votre application ne puisse inscrire une tâche en arrière-plan, vous devez déclarer la tâche en arrière-plan et son déclencheur dans le manifeste de l’application. Vous pouvez le faire directement au format XML ou via l’outil Éditeur de manifeste de Microsoft Visual Studio.

  • Pour utiliser cet outil, double-cliquez sur le fichier Package.appxmanifest de votre projet dans Visual Studio. Sous l’onglet Déclarations, sélectionnez Tâches en arrière-plan dans la liste déroulante Déclarations disponibles. Sous Propriétés, choisissez Notification Push comme type de déclencheur. Dans la zone Page d’accueil, entrez le nom du fichier de la tâche en arrière-plan (examplebackgroundtask.js dans notre cas).

    Si votre application fait appel à plusieurs tâches en arrière-plan, répétez cette étape pour chacune d’elles, en pointant à chaque fois sur un fichier distinct.

  • Pour ajouter les informations directement aux données XML du manifeste, ouvrez ce dernier dans un éditeur de texte. Dans l’élément Extensions, ajoutez un élément Extension pour la classe de tâche en arrière-plan. L’attribut Category doit être défini sur « windows.backgroundTasks » et l’attribut StartPage doit nommer le fichier .js de la tâche en arrière-plan (examplebackgroundtask.js dans notre cas).

    Si votre application fait appel à plusieurs tâches en arrière-plan, ajoutez un élément Extension séparé pour chacune d’elles, chaque élément pointant sur un fichier .js distinct.

    Vous devez répertorier chaque type de déclencheur utilisé par une tâche en arrière-plan. La tâche en arrière-plan que nous créons étant déclenchée en réponse à une notification brute, nous déclarons un déclencheur de notification Push. Ajoutez un élément BackgroundTasks à l’élément Extension avec son élément Task défini sur « pushNotification ».

    L’élément Extension complet est indiqué ici.


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

3. Inscrire votre tâche en arrière-plan dans votre application

Les exemples qui suivent fournissent du code que vous ajouterez à votre application (par exemple, dans son fichier Default.js) afin d’inscrire votre tâche en arrière-plan en réponse à une notification brute.

Pour commencer, déterminez si la tâche en arrière-plan est déjà inscrite. Cette étape est primordiale. Si votre application ne vérifie pas si une tâche en arrière-plan existante est inscrite, elle risque d’inscrire plusieurs fois la même tâche. Cela risque d’entraîner des problèmes de performances et une utilisation du processeur susceptibles de gêner l’exécution à terme de la tâche.

L’exemple qui suit parcourt la propriété Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks et définit un indicateur sur true si la tâche est déjà inscrite.


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();
}

Si votre application détermine que la tâche en arrière-plan n’est pas inscrite, elle peut l’inscrire en appelant la méthode Windows.ApplicationModel.Background.BackgroundTaskBuilder.register. Lors de l’appel à cette méthode, vous incluez le nom du fichier .js de la tâche en arrière-plan (examplebackgroundtask.js, dans le cas présent) et un objet PushNotificationTrigger.


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();
}

Récapitulatif

Vous devez maîtriser à présent les bases de l’écriture d’une classe de tâche en arrière-plan à utiliser avec des notifications brutes, notamment comment inscrire la tâche en arrière-plan à partir de votre application. Vous devez également savoir comment mettre à jour le manifeste d’application de sorte que Windows autorise votre application à inscrire ses tâches en arrière-plan.

Remarque  Vous pouvez télécharger l’exemple de tâche en arrière-plan pour examiner ces exemples de code (et plus encore), disponibles dans le contexte d’une application JavaScript aboutie et robuste ayant recours à des tâches en arrière-plan de types différents.

 

Rubriques associées

Exemple de notifications brutes

Vue d’ensemble des notifications brutes

Recommandations et liste de vérification sur les notifications brutes

Démarrage rapide : interception de notifications Push dans des applications en cours d’exécution

RawNotification