Guia de início rápido: interceptando notificações por push para aplicativos em execução (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Observação  Não está usando JavaScript? Veja Guia de início rápido: interceptando notificações por push para aplicativos em execução (XAML).

 

Você pode projetar seu aplicativo para interceptar uma notificação por push e responder a ela de modo não padrão. Esse procedimento pode ser usado para todos os tipos de notificação por push, mas é particularmente útil para notificações do sistema e notificações brutas.

Quando o serviço em nuvem de seu aplicativo envia uma notificação ao Windows, o aplicativo tem a oportunidade de interceptar e manipular a notificação antes que ela exiba uma notificação do sistema, atualize um bloco ou uma notificação ou envie uma notificação bruta para uma tarefa em segundo plano. Ele também pode suprimir a exibição ou atualização desses elementos. A implementação de um manipulador de eventos de entrega de notificação é opcional. Isso é mais útil em cenários nos quais o aplicativo deseja manipular e suprimir notificações do sistema recebidas, em vez de mostrá-las ao usuário.

Observação  A partir do Windows Phone 8.1, o telefone pode também impedir que uma notificação do sistema seja exibida com o uso da propriedade ToastNotification.suppressPopup ou ScheduledToastNotification.suppressPopup no conteúdo XML da notificação.

Observação  Esse procedimento se aplica somente a aplicativos em execução. As notificações que o sistema envia quando o aplicativo não está em execução e o manipulador não está implementado são entregues normalmente — os blocos são atualizados, a notificação do sistema é mostrada e as notificações brutas são enviadas para tarefas em segundo plano (se implementadas).

 

Pré-requisitos

Para compreender este tópico ou para usar o código que ele oferece, você precisará de:

Instruções

1. Opcional: declarar uma variável de namespace

Esta etapa fornece a você um nome abreviado para uso no lugar do nome completo do namespace. Isso equivale à instrução "using" em C# ou à instrução "Imports" no Visual Basic. Permite simplificar seu código.

Observação  O código a seguir presume que essa variável foi declarada.

 


var pushNotifications = Windows.Networking.PushNotifications;

2. Criar um canal de notificação por push

É necessário que haja um canal de notificação válido para receber notificações por push de um servidor em nuvem. O ouvinte do evento aguardará a chegada da notificação nesse canal. Para saber mais sobre como criar um canal, veja Como solicitar, criar e salvar um canal de notificação.

Se tiver sucesso, este exemplo criará um canal que pode ser acessado por newChannel.uri.


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

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

3. Criar uma função para manipular o evento de notificação por push

O exemplo a seguir mostra como manipular todos os tipos de notificação.

A última linha de código deste exemplo define a propriedade cancel do evento como true. Isso evita que a notificação faça alterações na interface do usuário, como atualizar um bloco/notificação ou exibir uma notificação do sistema. No caso de uma notificação bruta, ela evita que a notificação seja entregue para uma tarefa em segundo plano, caso haja alguma implementada. Desse modo, qualquer resposta à notificação fica a cargo do manipulador.


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. Adicionar um ouvinte de evento para notificações por push recebidas

Use o canal criado na etapa 1 para atribuir o manipulador de eventos criado na etapa 2 a fim de manipular o evento PushNotificationReceived.


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

Resumo

Se o cenário exigir, a interceptação e a manipulação de uma notificação por push enquanto seu aplicativo está em execução pode dar a ele mais controle sobre o efeito dessas notificações. Por exemplo, não convém exibir uma notificação do sistema por cima de um jogo em andamento. Além disso, o manipulador de eventos pode integrar o conteúdo da notificação à interface do usuário do jogo de modo menos invasivo.

Tópicos relacionados

Exemplos

Exemplo de notificações não processadas

Envio e exemplo de notificações periódicas

Informações conceituais

Visão geral dos Serviços de Notificação por Push do Windows (WNS)

Visão geral de notificações brutas

Práticas recomendadas

Diretrizes e lista de verificação de notificações por push

Diretrizes e lista de verificação para notificações brutas

Instruções

Guia de início rápido: criando e registrando uma tarefa em segundo plano de notificação bruta