Inicio rápido: interceptar notificaciones de inserción para aplicaciones en ejecución (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: interceptar notificaciones de inserción para aplicaciones en ejecución (XAML).

 

Puedes diseñar tu aplicación de modo que intercepte una notificación de inserción y responda a ella de manera diferente a la predeterminada. Puedes usar este procedimiento para todos los tipos de notificaciones de inserción, pero es sobre todo útil para las notificaciones del sistema y sin procesar.

Cuando el servicio de nube de tu aplicación envía una notificación a Windows, tu aplicación tiene la oportunidad de interceptar y controlar esa notificación antes de que muestre una notificación del sistema, actualice un icono o un distintivo, o entregue una notificación sin procesar a una tarea en segundo plano. También puede suprimir la visualización o actualización de esos elementos. La implementación de un controlador de eventos de entrega de notificaciones es opcional. Resulta muy útil en aquellos escenarios en que la aplicación desea controlar y suprimir las notificaciones del sistema entrantes en lugar de mostrarlas al usuario.

Nota  A partir de Windows Phone 8.1, el teléfono también puede impedir que se muestre una notificación del sistema mediante la propiedad ToastNotification.suppressPopup o ScheduledToastNotification.suppressPopup en el contenido XML de la notificación.

Nota  Este procedimiento se aplica solo a aplicaciones en ejecución. Las notificaciones que envía el sistema cuando la aplicación no se está ejecutando y el controlador no está implementado se entregan de la forma normal: se actualizan los iconos, se muestran las notificaciones del sistema y se entregan las notificaciones sin procesar a las tareas en segundo plano (si están implementadas).

 

Requisitos previos

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

Instrucciones

1. Opcional: declarar una variable de espacio de nombres

Este paso te proporciona un nombre corto para que lo uses en lugar del nombre completo del espacio de nombres. Es el equivalente de una instrucción "using" en C# o de la instrucción "Imports" en Visual Basic. Esto permite simplificar el código.

Nota  El código siguiente asume que esta variable ha sido declarada.

 


var pushNotifications = Windows.Networking.PushNotifications;

2. Crear un canal de notificaciones de inserción

Se necesita un canal de notificación válido para recibir notificaciones insertadas desde un servidor de nube. La escucha de eventos observa este canal en espera de la llegada de la notificación. Para más información sobre cómo crear un canal, consulta el tema acerca de cómo solicitar, crear y guardar un canal de notificación.

Si se realiza correctamente, este ejemplo crea un canal al que se puede acceder a través de newChannel.uri.


var channel;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    },
    function (error) {
        // ...
    }
);

3. Crear una función para controlar el evento de notificación de inserción

El siguiente ejemplo muestra cómo controlar todos los tipos de notificación.

La última línea del código de este ejemplo establece la propiedad cancel del evento en true. Esto impide que la notificación realice cambios en la interfaz de usuario, como actualizar un icono o un distintivo, o mostrar una notificación del sistema. En el caso de una notificación sin procesar, impide que esta se entregue a una tarea en segundo plano, si hay una implementada. De esta forma, cualquier respuesta a la notificación depende del controlador.


var content;
function onPushNotification(e) {
    var notificationPayload; 

    switch (e.notificationType) { 
        case pushNotifications.PushNotificationType.toast: 
            notificationPayload = e.toastNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.tile: 
            notificationPayload = e.tileNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.badge: 
            notificationPayload = e.badgeNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.raw: 
            notificationPayload = e.rawNotification.content; 
            break; 
    } 

    e.cancel = true;
}

4. Agregar una escucha de eventos para las notificaciones de inserción recibidas

Usa el canal creado en el paso 1 para asignar el controlador de eventos creado en el paso 2 a controlar el evento PushNotificationReceived.


channel.addEventListener("pushnotificationreceived", onPushNotification, false);

Resumen

Si el escenario lo requiere, interceptar y controlar una notificación de inserción mientras se ejecuta la aplicación puede proporcionar a tu aplicación más control sobre el efecto de esas notificaciones. Por ejemplo, es posible que no quieras que se muestre una notificación del sistema encima de un juego en curso; el controlador de eventos podría integrar el contenido de esa notificación en la interfaz de usuario del juego de forma menos intrusiva.

Temas relacionados

Muestras

Ejemplo de notificaciones sin procesar

Ejemplo de notificaciones de inserción y periódicas

Información conceptual

Introducción a los Servicios de notificaciones de inserción de Windows (WNS)

Introducción a las notificaciones sin procesar

Procedimientos recomendados

Instrucciones y lista de comprobación de notificaciones de inserción

Directrices y lista de comprobación de notificaciones sin procesar

Procedimientos

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