Como escrever uma tarefa em segundo plano para notificações por push não processadas (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]
Este tópico mostrará como criar uma tarefa em segundo plano para receber notificações de rede em segundo plano que usam notificações brutas por push em um aplicativo do Tempo de Execução do Windows na tela de bloqueio. Este tópico fornecerá orientações passo a passo para que você possa escrever uma tarefa em segundo plano para o recurso de notificações brutas por push no Windows 8.1 para um aplicativo do Tempo de Execução do Windows.
O que você precisa saber
Tecnologias
Windows.Networking.PushNotifications
Habilita comunicações de rede em segundo plano usando notificações por push não processadas.
Pré-requisitos
As informações a seguir se aplicam a qualquer aplicativo do Tempo de Execução do Windows conectado ou com reconhecimento de rede que depende de conexões de rede usando notificações brutas por push para se manter sempre conectado. Este tópico se aplica a aplicativos escritos em JavaScript no Windows 8.1, no Windows Phone 8.1 e no Windows Server 2012.
A conectividade de rede em segundo plano usando notificações por push não processadas tem suporte em aplicativos JavaScript e em aplicativos escritos em C++/XAML, bem como em aplicativos que usam o .NET Framework 4.5 em C#, VB.NET ou C++ gerenciada. Para saber mais sobre tarefas de rede em segundo plano que se aplicam a aplicativos em JavaScript, veja Dando suporte ao seu aplicativo com tarefas em segundo plano.
Instruções
Escrevendo sua tarefa em segundo plano
Uma importante etapa necessária para permitir que o aplicativo esteja sempre acessível é fornecer o código do aplicativo executado quando ocorre uma notificação por push não processada. Por exemplo, no caso de um aplicativo de email que usa notificações por push não processadas de entrada para assinalar que um novo email chegou no servidor, o aplicativo precisa executar o código para processar os dados na notificação por push não processada. Esses dados podem conter uma lista de novos emails recebidos para acionar uma notificação ao usuário. Um aplicativo também pode agendar uma conexão com o servidor de emails e baixar os novos emails desse servidor da próxima vez que o aplicativo não estiver mais suspenso. Esse processamento é realizado na tarefa em segundo plano.
Cada tarefa em segundo plano é implementada por uma função executada quando o aplicativo se registra para uma notificação por push não processada. Isso foi especificado no manifesto do aplicativo como o arquivo de origem JavaScript específico que contém uma única função.
A amostra a seguir mostra a função que é executada quando a tarefa em segundo plano é disparada por uma notificação por push não processada.
(function () {
// Get the background task details
var backgroundTask = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
var settings = Windows.Storage.ApplicationData.current.localSettings;
var taskName = backgroundTask.task.name;
console.log("Background task \"" + taskName + "\" starting...");
// Store the content received from the notification so it can be retrieved
// from the UI.
var notificationDetails = backgroundTask.triggerDetails;
settings.values[taskName] = notificationDetails.content;
console.log("Background \"" + taskName + "\" completed!");
// Close the instance running the task
close();
})();
Observação Você não pode referenciar elementos da interface do usuário de seu aplicativo em uma tarefa em segundo plano, pois os elementos da interface do aplicativo não estão em execução. Quando seu código está em execução na tarefa em segundo plano, você pode receber os dados da notificação por push não processada, analisar e processar esses dados e acionar uma notificação ao usuário.
A duração da tarefa em segundo plano é controlada pela função que a implementa. Quando um aplicativo sai da função, ele é suspenso.
Quando uma tarefa em segundo plano do aplicativo é disparada, o sistema operacional garante que a sincronização correta entregue ao aplicativo os dados da notificação por push não processada ou retorna um erro (por exemplo, conexão anulada). De modo semelhante, ao final da tarefa em segundo plano, um aplicativo deve garantir que qualquer notificação seja acionada antes da suspensão do aplicativo.
Embora a tarefa em segundo plano seja primariamente direcionada para um aplicativo em estado suspenso, as tarefas em tela de fundo de um aplicativo configurado com esse tipo de tarefa também serão disparadas quando o aplicativo estiver em primeiro plano.
Etapas anteriores
Para saber mais sobre como criar um aplicativo de tela de bloqueio de forma a receber notificações de rede em segundo plano que usam notificações brutas por push, veja Como criar um aplicativo de tela de bloqueio que usa notificações brutas por push em segundo plano.
Para saber mais sobre o processo de registrar um canal de notificações por push e enviá-lo ao servidor, registrar uma tarefa em segundo plano para ativar uma notificação por push não processada e enviar uma notificação por push não processada ao canal e ativar essa tarefa em segundo plano, veja Como usar o WNS para entregar notificações por push não processadas a um aplicativo de tela de bloqueio.
Para saber mais sobre as orientações e listas de verificação para o uso de notificações por push não processadas, veja
Diretrizes e lista de verificação para notificações não processadas
Tópicos relacionados
Outros recursos
Diretrizes e lista de verificação para notificações brutas
Como autenticar com o Serviço de Notificação por Push do Windows (WNS)
Visão geral da tela de bloqueio
Visão geral de notificação por push
Como criar um aplicativo de tela de bloqueio que usa notificações brutas por push em segundo plano
Dando suporte ao seu aplicativo com tarefas em segundo plano
Solucionando problemas e depurando conexões de rede
Referência
Windows.ApplicationModel.Background
Windows.Networking.BackgroundTransfer
Windows.Networking.PushNotifications
Exemplos
Exemplo de tarefa de segundo plano
Exemplo de aplicativos de tela de bloqueio