Visão geral de notificações periódicasPeriodic notification overview

Notificações periódicas, que são chamadas também de notificações de sondagem, atualizam blocos e selos em um intervalo fixo, baixando o conteúdo da nuvem.Periodic notifications, which are also called polled notifications, update tiles and badges at a fixed interval by downloading content from a cloud service. Para usar notificações periódicas, seu código de aplicativo cliente precisa fornecer duas partes de informações:To use periodic notifications, your client app code needs to provide two pieces of information:

  • O URI (Uniform Resource Identifier) de um local na Web para o Windows sondar por atualizações de bloco ou notificação para o seu aplicativoThe Uniform Resource Identifier (URI) of a web location for Windows to poll for tile or badge updates for your app
  • A frequência com que o URI deve ser sondadoHow often that URI should be polled

As notificações periódicas permitem que seu aplicativo obtenha atualizações de bloco em tempo real com serviço de nuvem mínimo e pouco investimento do cliente.Periodic notifications enable your app to get live tile updates with minimal cloud service and client investment. As notificações periódicas são um método de entrega excelente para distribuir o mesmo conteúdo a uma ampla audiência.Periodic notifications are a good delivery method for distributing the same content to a wide audience.

Observação    Você pode aprender mais baixando o exemplo de notificações por push e periódicas para Windows 8.1 e reutilizar seu código-fonte em seu aplicativo do Windows 10.Note   You can learn more by downloading the Push and periodic notifications sample for Windows 8.1 and re-using its source code in your Windows 10 app.

 

Como ele funcionaHow it works

As notificações periódicas requerem que seu aplicativo hospede um serviço de nuvem.Periodic notifications require that your app hosts a cloud service. O serviço será sondado periodicamente por todos os usuários que tiverem o aplicativo instalado.The service will be polled periodically by all users who have the app installed. A cada intervalo de sondagem, como uma vez por hora, o Windows envia uma solicitação HTTP GET para o URI, baixa o conteúdo da notificação ou do bloco solicitado (como XML), que é fornecido em resposta à solicitação, e exibe o conteúdo no bloco do aplicativo.At each polling interval, such as once an hour, Windows sends an HTTP GET request to the URI, downloads the requested tile or badge content (as XML) that is supplied in response to the request, and displays the content on the app's tile.

Observe que as atualizações periódicas não podem ser usadas com notificações do sistema.Note that periodic updates cannot be used with toast notifications. As notificações do sistema funcionam melhor por meio de notificações programadas ou por push.Toast is best delivered through scheduled or push notifications.

Local do URI e conteúdo XMLURI location and XML content

Qualquer endereço HTTP ou HTTPS válido pode ser usado como o URI a ser sondado.Any valid HTTP or HTTPS web address can be used as the URI to be polled.

A resposta do servidor de nuvem inclui o conteúdo baixado.The cloud server's response includes the downloaded content. O conteúdo retornado do URI deve estar em conformidade com a especificação de esquema XML do Bloco ou da Notificação e deve estar codificado em UTF-8.The content returned from the URI must conform to the Tile or Badge XML schema specification, and must be UTF-8 encoded. Você pode usar cabeçalhos HTTP definidos para especificar o tempo de expiração ou a marca da notificação.You can use defined HTTP headers to specify the expiration time or tag for the notification.

Comportamento de sondagemPolling Behavior

Chame um destes métodos para começar a sondagem:Call one of these methods to begin polling:

Quando você chama um destes métodos, o URI é imediatamente sondado e o bloco ou a notificação será atualizada com o conteúdo recebido.When you call one of these methods, the URI is immediately polled and the tile or badge is updated with the received contents. Após essa sondagem inicial, o Windows continua fornecendo as atualizações no intervalo solicitado.After this initial poll, Windows continues to provide updates at the requested interval. A sondagem continua até você parar explicitamente (com TileUpdater.StopPeriodicUpdate), seu aplicativo ser desinstalado ou, no caso de um bloco secundário, o bloco ser removido.Polling continues until you explicitly stop it (with TileUpdater.StopPeriodicUpdate), your app is uninstalled, or, in the case of a secondary tile, the tile is removed. Caso contrário, o Windows continua a sondar atualizações para seu bloco ou notificação mesmo que seu aplicativo não seja mais iniciado.Otherwise, Windows continues to poll for updates to your tile or badge even if your app is never launched again.

O intervalo de recorrênciaThe recurrence interval

Especifique o intervalo de recorrência como um parâmetro dos métodos listados acima.You specify the recurrence interval as a parameter of the methods listed above. Observe que embora o Windows se esforce para sondar conforme solicitado, o intervalo não é preciso.Note that while Windows makes a best effort to poll as requested, the interval is not precise. O intervalo de sondagem solicitado pode ser atrasado em até 15 minutos, a critério do Windows.The requested poll interval can be delayed by up to 15 minutes at the discretion of Windows.

O horário de inícioThe start time

Você também pode especificar um determinado horário do dia para começar uma sondagem.You optionally can specify a particular time of day to begin polling. Considere um aplicativo que altera o conteúdo do bloco uma vez ao dia.Consider an app that changes its tile content just once a day. Nesse caso, nós recomendamos que você faça sondagens perto do horário da atualização do seu serviço de nuvem.In such a case, we recommend that you poll close to the time that you update your cloud service. Por exemplo, se um site de compras diário publica as ofertas do dia às 08:00, sonde o novo conteúdo do bloco logo após às 08:00.For example, if a daily shopping site publishes the day's offers at 8 AM, poll for new tile content shortly after 8 AM.

Se você fornecer o horário de início, a primeira chamada para o método fará a sondagem do conteúdo imediatamente.If you provide a start time, the first call to the method polls for content immediately. Então, a sondagem regular será iniciada dentro de 15 minutos após o horário de início fornecido.Then, regular polling starts within 15 minutes of the provided start time.

Comportamento de repetição automáticaAutomatic retry behavior

O URI é sondado somente se o dispositivo estiver online.The URI is polled only if the device is online. Se a rede estiver disponível, mas o URI não puder ser contatado por algum motivo, essa iteração do intervalo de sondagem é ignorada e o URI será sondado novamente no próximo intervalo.If the network is available but the URI cannot be contacted for any reason, this iteration of the polling interval is skipped, and the URI will be polled again at the next interval. Se o dispositivo está em estado desligado, suspenso ou em hibernação quando um intervalo de sondagem é alcançado, o URI é sondado quando o dispositivo retorna do estado desligado ou suspenso.If the device is in an off, sleep, or hibernated state when a polling interval is reached, the URI is polled when the device returns from its off or sleep state.

Tratamento de atualizações de aplicativosHandling app updates

Se você lançar uma atualização de aplicativo que altere seu URI de sondagem, deverá adicionar uma tarefa em segundo plano de gatilho de tempo diária que chame StartPeriodicUpdate com o novo URI para garantir que os blocos usem o novo URI.If you release an app update that changes your polling URI, you should add a daily time trigger background task which calls StartPeriodicUpdate with the new URI to ensure your tiles are using the new URI. Caso contrário, se os usuários receberem a atualização do aplicativo, mas não iniciarem o aplicativo, seus blocos ainda usarão o URI antigo, que pode não ser exibido se o URI for inválido ou se o conteúdo retornado referenciar imagens locais que não existem mais.Otherwise, if users receive your app update but don't launch your app, their tiles will still be using the old URI, which may fail to display if the URI is now invalid or if the returned payload references local images that no longer exist.

Expiração de notificações de selo e blocoExpiration of tile and badge notifications

Por padrão, as notificações periódicas de bloco e de selo expiram três dias depois que são baixadas.By default, periodic tile and badge notifications expire three days from the time they are downloaded. Quando uma notificação expira, o conteúdo é removido do selo, do bloco ou da fila e não é mais mostrado para o usuário.When a notification expires, the content is removed from the badge, tile, or queue and is no longer shown to the user. É recomendável definir um horário de expiração explícito em todas as notificações de bloco e de selo periódicas usando um tempo que faça sentido para o aplicativo ou notificação, para garantir que o conteúdo do bloco não continue além do tempo relevante.It is a best practice to set an explicit expiration time on all periodic tile and badge notifications, using a time that makes sense for your app or notification, to ensure that the content does not persist longer than it is relevant. Um tempo de expiração explícito é essencial para conteúdo com tempo de vida definido.An explicit expiration time is essential for content with a defined life span. Isso também garante a remoção de conteúdo obsoleto se seu serviço de nuvem se tornar inacessível ou se o usuário se desconectar da rede por um período de tempo prolongado.It also assures the removal of stale content if your cloud service becomes unreachable, or if the user disconnects from the network for an extended period of time.

Seu serviço de nuvem configura uma data de expiração e hora para uma notificação incluindo o cabeçalho HTTP X-WNS-Expire na carga da resposta.Your cloud service sets an expiration date and time for a notification by including the X-WNS-Expires HTTP header in the response payload. O cabeçalho HTTP X-WNS-Expires está em conformidade com o formato de data HTTP.The X-WNS-Expires HTTP header conforms to the HTTP-date format. Para saber mais, veja StartPeriodicUpdate ou StartPeriodicUpdateBatch.For more information, see StartPeriodicUpdate or StartPeriodicUpdateBatch.

Por exemplo, durante um dia de negociação ativo do mercado de ações, você pode definir a expiração de uma atualização de preços de ações para duas vezes mais do que seu intervalo de sondagem (por exemplo, uma hora após o recebimento, se estiver sondando a cada meia hora).For example, during a stock market's active trading day, you can set the expiration for a stock price update to twice that of your polling interval (such as one hour after receipt if you are polling every half-hour). Outro exemplo é um aplicativo de notícias que pode determinar que um dia é um período de expiração adequado para a atualização de blocos de notícias diárias.As another example, a news app might determine that one day is an appropriate expiration time for a daily news tile update.

Notificações periódicas na fila de notificaçõesPeriodic notifications in the notification queue

Você pode usar atualizações de bloco periódicas com ciclos de notificações.You can use periodic tile updates with notification cycling. Por padrão, um bloco na tela inicial mostra o conteúdo de uma única notificação até que ela seja substituída por uma nova.By default, a tile on the Start screen shows the content of a single notification until it is replaced by a new notification. Ao habilitar os ciclos de notificações, até cinco notificações são mantidas na fila e os bloco alterna entre elas.When you enable cycling, up to five notifications are maintained in a queue and the tile cycles through them.

Se a fila tiver atingido a capacidade de cinco notificações, a próxima notificação nova substituirá a mais antiga na fila.If the queue has reached its capacity of five notifications, the next new notification replaces the oldest notification in the queue. Porém, definindo marcas em suas notificações, você pode influenciar a política de substituição da fila.However, by setting tags on your notifications, you can affect the queue's replacement policy. Uma marca é uma cadeia de caracteres de até 16 caracteres alfanuméricos específica do aplicativo e que não diferencia maiúsculas de minúsculas, especificada no cabeçalho HTTP X-WNS-Tag na carga da resposta.A tag is an app-specific, case-insensitive string of up to 16 alphanumeric characters, specified in the X-WNS-Tag HTTP header in the response payload. O Windows compara a marca de uma notificação de entrada com as marcas de todas as notificações que já estão na fila.Windows compares the tag of an incoming notification with the tags of all notifications already in the queue. Se for encontrada uma correspondência, a nova notificação substituirá a notificação da fila com a mesma marca.If a match is found, the new notification replaces the queued notification with the same tag. Se nenhuma correspondência for encontrada, a regra de substituição padrão será aplicada e a nova notificação substituirá a antiga na fila.If no match is found, the default replacement rule is applied and the new notification replaces the oldest notification in the queue.

Você pode usar a marcação e a fila de notificações para implementar diversos cenários avançados de notificação.You can use notification queuing and tagging to implement a variety of rich notification scenarios. Por exemplo, um aplicativo de ações pode enviar cinco notificações, cada uma sobre uma ação diferente e marcada com um nome de ação.For example, a stock app could send five notifications, each about a different stock and each tagged with a stock name. Isso evita que a fila contenha duas notificações para a mesma ação, uma delas mais antiga e desatualizada.This prevents the queue from ever containing two notifications for the same stock, the older of which is out of date.

Para saber mais, veja Usando a fila de notificações.For more information, see Using the notification queue.

Habilitando a fila de notificaçõesEnabling the notification queue

Para implementar uma fila de notificações, primeiro habilite a fila para seu bloco (consulte Como usar a fila de notificações com notificações locais).To implement a notification queue, first enable the queue for your tile (see How to use the notification queue with local notifications). A chamada para habilitar a fila precisa ser feita apenas uma vez durante a vida útil do seu aplicativo, mas não tem problema fazer isso cada vez que seu aplicativo é iniciado.The call to enable the queue needs to be done only once in your app's lifetime, but there is no harm in calling it each time your app is launched.

Sondando mais de uma notificação por vezPolling for more than one notification at a time

Você deve fornecer um URI exclusivo para cada notificação que quiser que o Windows baixe para o bloco.You must provide a unique URI for each notification that you'd like Windows to download for your tile. Ao usar o método StartPeriodicUpdateBatch, você pode fornecer até cinco URIs por vez para usar com a fila de notificações.By using the StartPeriodicUpdateBatch method, you can provide up to five URIs at once for use with the notification queue. Cada URI é sondado para uma carga de notificação única, no mesmo tempo ou perto dele.Each URI is polled for a single notification payload, at or near the same time. Cada URI sondado pode retornar o próprio valor de expiração e marca.Each polled URI can return its own expiration and tag value.