Partager via


Comment utiliser le déclencheur ServicingComplete (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 ]

Découvrez comment utiliser le SystemTrigger ServicingComplete pour contrôler l’inscription de la tâche en arrière-plan après les mises à jour d’applications.

Ce que vous devez savoir

Technologies

Prérequis

Instructions

Étape 1: Créer une tâche en arrière-plan ServicingComplete

Les inscriptions de tâches en arrière-plan sont conservées après les mises à jour d’applications. Si une application est mise à jour, ses inscriptions continuent d’être valides et seront déclenchées. Une application peut inscrire une tâche en arrière-plan avec le déclencheur ServicingComplete pour être avertie lorsque l’application est mise à jour, et annuler l’inscription des tâches en arrière-plan qui ne sont plus valides.

  1. Créez un fichier JavaScript pour la tâche en arrière-plan.

    L’exemple de code suivant illustre un point de départ élémentaire pour une tâche en arrière-plan :

    //
    // ServicingCompleteTask.js
    //
    (function () {
        "use strict";
    
    
        //
        // This function does the work of the ServicingComplete background task.
        //
        function doWork() {
    
    
            //
            // A JavaScript background task must call close when it is done.
            //
            close();
        }
    
    
        doWork();
    
    })();
    
  2. Recherchez l’objet d’inscription pour la tâche en arrière-plan dont l’inscription doit être annulée. Appelez Unregister pour annuler l’inscription de la tâche. Notez que vous pouvez forcer l’arrêt de l’exécution de la tâche en arrière-plan (si une instance est active) en affectant au paramètre cancelTask la valeur true.

    //
    // ServicingCompleteTask.js
    //
    (function () {
        "use strict";
    
    
        //
        // This function does the work of the ServicingComplete background task.
        //
        function doWork() {
    
            // 
            // Unregister tasks that no longer exist.
            // 
    
            var unregisterTask = "BadTaskName";
    
            var unregTask = FindTask(unregisterTask);
            if (unregTask != null) {
                unregTask.Unregister(true);
            }
    
    
            //
            // A JavaScript background task must call close when it is done.
            //
            close();
        }
    
    
        // 
        // Check for a registration of the named background task. If one exists,
        // return it.
        // 
        function FindTask(taskName) {
    
            var taskRegistered = false;
    
            var background = Windows.ApplicationModel.Background;
            var iter = background.BackgroundTaskRegistration.allTasks.first();
            var hascur = iter.hasCurrent;
    
            while (hascur) {
                var cur = iter.current.value;
    
                if (cur.name === taskName) {
                    return cur;
                }
    
                hascur = iter.moveNext();
            }
        }
    
    
        doWork();
    
    })();
    
  3. Inscrivez des tâches de remplacement selon les besoins. Utilisez une fonction d’inscription des tâches en arrière-plan, comme celle indiquée dans Comment inscrire une tâche en arrière-plan, pour simplifier le travail.

    //
    // ServicingCompleteTask.js
    //
    (function () {
        "use strict";
    
    
        //
        // This function does the work of the ServicingComplete background task.
        //
        function doWork() {
    
            // 
            // Unregister tasks that no longer exist.
            // 
    
            var unregisterTask = "BadTaskName";
    
            var unregTask = FindTask(unregisterTask);
            if (unregTask != null) {
                unregTask.Unregister(true);
            }
    
    
            // 
            // Register new/replacement tasks.
            // 
    
            var newTaskName = "New Background Task";
            var newTaskEntryPoint = "js\\NewBackgroundTask.js";
    
            var background = Windows.ApplicationModel.Background;
            var internetTrigger = new background.SystemTrigger(
                             background.SystemTriggerType.internetAvailable, false);
    
            var newTask = RegisterBackgroundTask(newTaskEntryPoint,
                                                 newTaskName, 
                                                 internetTrigger, 
                                                 null);
    
    
            //
            // A JavaScript background task must call close when it is done.
            //
            close();
        }
    
    
        // 
        // Check for a registration of the named background task. If one exists,
        // return it.
        // 
        function FindTask(taskName) {
    
            var taskRegistered = false;
    
            var background = Windows.ApplicationModel.Background;
            var iter = background.BackgroundTaskRegistration.allTasks.first();
            var hascur = iter.hasCurrent;
    
            while (hascur) {
                var cur = iter.current.value;
    
                if (cur.name === taskName) {
                    return cur;
                }
    
                hascur = iter.moveNext();
            }
        }
    
    
        doWork();
    
    })();
    

Étape 2: Inscrire la tâche en arrière-plan ServicingComplete

La tâche en arrière-plan ServicingComplete doit être inscrite avec d’autres tâches en arrière-plan afin de pouvoir être déclenchée lorsque l’application est mise à jour. Le point d’entrée de la tâche en arrière-plan ServicingComplete doit rester le même dans la mise à jour de l’application.

  1. Créez un objet SystemTrigger :

    • Le premier paramètre, triggerType, doit avoir la valeur servicingComplete.

    • Le second paramètre, OneShot, doit avoir la valeur false.

    Cet exemple de code crée un déclencheur ServicingComplete :

    
    var background = Windows.ApplicationModel.Background;
    
    var servicingCompleteTrigger = new background.SystemTrigger(
                            background.SystemTriggerType.servicingComplete, false);
    

    Remarque  L’ajout d’une condition à un déclencheur de tâche en arrière-plan ServicingComplete n’est pas conseillé.

     

  2. Appelez votre fonction d’inscription des tâches en arrière-plan pour inscrire la tâche. Pour plus d’informations sur l’inscription des tâches en arrière-plan, voir Comment inscrire une tâche en arrière-plan.

    Le code suivant inscrit la tâche ServicingComplete :

    var entryPoint = "js\\ServicingCompleteTask.js";
    var taskName = "ServicingComplete background task";
    
    var task = RegisterBackgroundTask(entryPoint,
                                      taskName, 
                                      servicingCompleteTrigger, 
                                      null);
    

    Remarque  Dans les applications du Windows Phone Store, vous devez appeler l’élément RequestAccessAsync une fois avant d’inscrire une tâche en arrière-plan.

Étape 3: Déclarer la tâche en arrière-plan dans le manifeste du package

La tâche en arrière-plan ServicingComplete doit être répertoriée dans le manifeste du package, tout comme toute autre tâche en arrière-plan. Pour plus d’informations, voir Comment déclarer des tâches en arrière-plan dans le manifeste de l’application. Par exemple :

ServicingCompleteTask déclarée dans le manifeste de l’application

Remarques

Pour obtenir des informations importantes liées au débogage des mises à jour d’application avec des tâches en arrière-plan, voir Comment déboguer une tâche en arrière-plan (applications du Windows Store).

Rubriques associées

Démarrage rapide : Créer et inscrire une tâche en arrière-plan

Comment inscrire une tâche en arrière-plan

Comment répondre aux événements système avec des tâches en arrière-plan

Comment définir des conditions pour exécuter une tâche en arrière-plan

Comment déclarer des tâches en arrière-plan dans le manifeste de l’application

Comment déboguer une tâche en arrière-plan

Recommandations et listes de contrôle concernant les tâches en arrière-plan