Share via


Inicio rápido: crear y registrar una tarea en segundo plano de notificación sin procesar (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Nota  ¿No usas JavaScript? Consulta Inicio rápido: crear y registrar una tarea en segundo plano de notificación sin procesar (XAML).

 

Puedes crear y registrar una función de tarea en segundo plano para tu aplicación de la Tienda Windows. Este código se ejecutará en respuesta a la recepción de una notificación sin procesar, lo que proporciona funcionalidad a tu aplicación cuando no está en primer plano.

Para completar este procedimiento, debes editar tres archivos diferentes: el código de la aplicación, el manifiesto de la aplicación y un nuevo archivo JavaScript que contiene el código de la tarea en segundo plano.

Requisitos previos

Para comprender este tema o para usar el código que contiene, necesitarás:

Instrucciones

1. Crear la clase de tareas en segundo plano

Crea un nuevo archivo JavaScript (.js) en tu proyecto. En este caso, llamaremos al archivo examplebackgroundtask.js. El código de este archivo se desencadenará para ejecutarse en segundo plano cuando se reciba una notificación sin procesar. Agrega el esqueleto de la función JavaScript debajo de ese archivo.

La función doWork de este ejemplo (por supuesto, puedes llamarla como quieras) contiene el código que compone la tarea en segundo plano en sí. Primero, recupera el contenido de la notificación a través de la clase Windows.UI.WebUI.WebUIBackgroundTaskInstance, que se usa para obtener información sobre la instancia actual de la tarea en segundo plano. El cuerpo del código, específico del contenido de la notificación sin procesar definida para tu aplicación, reemplazará el comentario "// ...".

Importante  Ten en cuenta que al final del código de la tarea se llama a la función close integrada de JavaScript. Se debe llamar a este método siempre que una tarea en segundo plano de JavaScript complete su trabajo o se cancele. Si la tarea en segundo plano no se cierra a sí misma, su proceso puede seguir existiendo, consumiendo memoria y duración de batería, incluso después de que la tarea en segundo plano se complete.

 


(function () {
    "use strict";

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

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

        // ...

        close();
    }

    doWork();
})();

2. Declarar la tarea en segundo plano en el manifiesto de la aplicación

Nota  Como requisito previo de este paso, tu aplicación debe elegir una opción de pantalla de bloqueo y proporcionar un logotipo de notificación para que se admitan las tareas en segundo plano. Para obtener más información, consulta Inicio rápido: mostrar actualizaciones de icono y distintivo en la pantalla de bloqueo.

 

Antes de que tu aplicación pueda registrar una tarea en segundo plano, debes declarar esta última, junto con su desencadenador, en el manifiesto de la aplicación. Lo puedes hacer directamente como XML o a través del Editor de manifiestos de Microsoft Visual Studio.

  • Para usar el Editor de manifiestos, haz doble clic en el archivo Package.appxmanifest del proyecto en Visual Studio. En la pestaña Declaraciones, elige Tareas en segundo plano en la lista desplegable Declaraciones disponibles. Como desencadenador, elige Notificación de inserción en Propiedades. En el cuadro Página de inicio, escribe el nombre del archivo .js de la tarea en segundo plano, en nuestro caso examplebackgroundtask.js.

    Si la aplicación usa más de una tarea en segundo plano, repite este paso para cada una de ellas, apuntando a un archivo diferente cada vez.

  • Para agregar la información directamente al XML del manifiesto, abre el manifiesto en un editor de texto. En el elemento Extensions, agrega un elemento Extension para la clase de tareas en segundo plano. El atributo Categoría se debería establecer en "windows.backgroundTasks" y el atributo StartPage debería dar nombre al archivo .js de la tarea en segundo plano, en nuestro caso examplebackgroundtask.js.

    Si la aplicación usa más de una tarea en segundo plano, agrega un elemento Extension distinto para cada una de ellas, cada uno con un archivo .js diferente.

    Debes indicar todos los tipos de desencadenador que use una tarea en segundo plano. Como estamos creando una tarea en segundo plano que se desencadena en respuesta a una notificación sin procesar, declararemos un desencadenador de notificación de inserción. Agrega un elemento BackgroundTasks al elemento Extension, con su elemento Task definido como "pushNotification".

    Aquí se muestra el elemento Extension completo.


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

3. Registrar la tarea en segundo plano en tu aplicación

Los siguientes ejemplos proporcionan código que agregarás a tu aplicación (por ejemplo, en su archivo Default.js) para registrar la tarea en segundo plano como respuesta a una notificación sin procesar.

Primero, determina si la tarea en segundo plano ya está registrada. Este paso es importante. Si la aplicación no comprueba la existencia de un registro de tarea en segundo plano, podría registrar la misma tarea más de una vez. Esto puede causar problemas de rendimiento y uso de CPU que podrían impedir la finalización de la tarea.

Este ejemplo itera en la propiedad Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks y establece una marca en true si la tarea ya está registrada.


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 la aplicación encuentra que la tarea en segundo plano no está registrada, puede registrarla llamando al método Windows.ApplicationModel.Background.BackgroundTaskBuilder.register. En la llamada a este método, incluye el nombre del archivo .js de la tarea en segundo plano, en nuestro caso examplebackgroundtask.js, y un objeto 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();
}

Resumen

Ahora, deberías comprender los conceptos básicos para escribir una clase de tarea en segundo plano para usarla con notificaciones sin procesar, lo que incluye cómo registrar la tarea en segundo plano desde la aplicación. También deberías comprender cómo actualizar el manifiesto de la aplicación para que Windows permita que tu aplicación registre tareas en segundo plano.

Nota  Puedes descargar la muestra de tarea en segundo plano para ver estos ejemplos de código, y otros, en el contexto de una aplicación JavaScript completa y sólida que utiliza diferentes tipos de tareas en segundo plano.

 

Temas relacionados

Ejemplo de notificaciones sin procesar

Introducción a las notificaciones sin procesar

Directrices y lista de comprobación de notificaciones sin procesar

Inicio rápido: interceptar notificaciones de inserción para aplicaciones en ejecución

RawNotification