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:
- Familiaridade com notificações por push. Para obter mais informações, veja a visão geral dos Serviços de Notificação por Push do Windows (WNS).
- Um serviço na nuvem capaz de enviar notificações por push aos Serviços de Notificação por Push do Windows (WNS). Para saber mais, veja Guia de início rápido: enviando uma notificação por push.
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