Cómo administrar la activación desde una notificación del sistema (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 Cómo administrar la activación desde una notificación del sistema (XAML).

 

Este tema demuestra las acciones que debes realizar cuando un usuario hace clic en una notificación del sistema enviada por la aplicación. La aplicación debe responder mostrando la interfaz de usuario específica de la notificación del sistema. Por lo general, la aplicación debe iniciarse en un contexto o una vista que se relacionen con el contenido de la notificación. Para ello, debes incluir una cadena de activación en la carga de la notificación del sistema, que luego se pasará a la aplicación como un argumento en el evento de activación. Aquí se muestra el flujo de datos básico:

  1. La aplicación o el servicio web crea y envía la carga de la notificación del sistema, incluyendo la cadena de inicio
  2. La notificación del sistema se genera y/o se envía al centro de actividades
  3. El usuario selecciona la notificación del sistema (mediante un clic o un toque)
  4. El evento activado se desencadena
  5. El controlador del evento activado de la aplicación lee la cadena de inicio
  6. La aplicación se inicia utilizando los parámetros proporcionados en la cadena de inicio

Nota  Al probar la funcionalidad del código de una notificación del sistema en Microsoft Visual Studio, debes usar la configuración de depuración del equipo local o el equipo remoto en un equipo con Windows x86, x64 o Windows en tiempo de ejecución. No puedes usar la opción de función de depuración del simulador de Visual Studio porque tu código se compilará y se ejecutará en el simulador, pero la notificación del sistema no aparecerá.

 

Lo que debes saber

Tecnologías

  • Windows Runtime

Requisitos previos

Para comprender este tema, necesitarás:

Instrucciones

Paso 1: Incluir datos de activación en la carga de la notificación del sistema

Cuando la aplicación se activa mediante una notificación del sistema, necesita información relacionada con el contenido de la notificación. De este modo, puede reflejar ese contenido iniciándose en una vista asociada, en lugar de hacerlo en la vista predeterminada. Cuando tu aplicación o servicio web crea la notificación del sistema, usa el atributo launch para especificar esta información de activación. Puedes comparar la cadena con los argumentos de la línea de comandos. La cadena puede contener cualquier información que la aplicación pueda entender, siempre que esta no invalide la carga XML. Ten en cuenta que el tamaño total de la carga XML de la notificación del sistema, incluida la cadena de inicio, no puede superar los 5 KB.

Si no incluyes una cadena de atributos de inicio, la aplicación se iniciará con normalidad, como si lo hiciera desde la pantalla Inicio.

En este paso, damos por sentado que ya se ha creado un objeto XmlDocument llamado toastXml. Este ejemplo crea el atributo launch, asigna su valor de cadena y después lo agrega a la carga XML de la notificación del sistema. Para obtener instrucciones acerca de la creación de notificaciones del sistema completas, consulta el tema de inicio rápido: envío de una notificación del sistema.


var launchAttribute = toastXml.createAttribute("launch");
launchAttribute.value = "{\"myContext\":\"12345\"}";
var toastNode = toastXml.selectSingleNode("/toast");
toastNode.attributes.setNamedItem(launchAttribute);

El código anterior da como resultado el siguiente XML, en función del contenido del elemento visual definido en el tema de inicio rápido: envío de una notificación del sistema.


<toast launch="{&quot;myContext&quot;:&quot;12345&quot;}">
    <visual>
        <binding template="ToastImageAndText01">
            <image id="1" src="ms-appx:///images/redWide.png" alt="red graphic"/>
            <text id="1">Hello World!</text>
        </binding>
    </visual>
</toast>

Paso 2: Registrar la aplicación para el evento "activated"

Cuando el usuario hace clic en la notificación del sistema o la selecciona mediante entrada táctil, se desencadena el evento activated. Debes registrar tu aplicación mediante la función addEventListener para que se informe en el evento.

Nota  Si no incluyes una cadena de atributos de inicio en la notificación del sistema y la aplicación ya se está ejecutando cuando se selecciona la notificación, no se desencadenará el evento activated.

 

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

Paso 3: Implementar un controlador para el evento "activated" de la notificación del sistema

Tu controlador de eventos registrado recibe todos los eventos de activación, independientemente del tipo de activación. La propiedad kind incluida en la notificación de eventos indica el tipo de evento de activación. Cuando el usuario hace clic en una notificación del sistema que tiene un atributo launch especificado en su carga XML, se desencadena un evento de activación de tipo launch. Este es el mismo evento que se genera cuando un usuario pulsa en el icono principal o secundario de una aplicación.

La cadena de activación que proporcionaste mediante el atributo launch en el paso 1 se incluye en la propiedad arguments de la notificación de eventos.

Este ejemplo muestra el esquema del controlador del evento activated registrado en el paso 2.


function onActivatedHandler(args) {
    if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
        var launchString = args.detail.arguments;

        // Handle activation as required for your app, using the launch string.
    }
}

Temas relacionados

Muestra de notificaciones del sistema

Windows.UI.Notifications API namespace

Introducción a las notificaciones del sistema

Directrices y lista de comprobación de notificaciones del sistema

Inicio rápido: enviar una notificación del sistema

El catálogo de plantillas de notificaciones del sistema

Esquema XML de una notificación del sistema