Общие сведения о периодических уведомленияхPeriodic notification overview

Периодические, или опросные, уведомления обновляют плитки и индикаторы событий через фиксированные интервалы, скачивая содержимое напрямую из облачной службы.Periodic notifications, which are also called polled notifications, update tiles and badges at a fixed interval by downloading content from a cloud service. Чтобы использовать периодические уведомления, код вашего приложения должен предоставить два фрагмента информации:To use periodic notifications, your client app code needs to provide two pieces of information:

  • Универсальный код ресурса (URI) местоположения в Интернете, которое Windows будет опрашивать для обновления плиток или индикаторов событий для приложенияThe Uniform Resource Identifier (URI) of a web location for Windows to poll for tile or badge updates for your app
  • интервал опроса URI.How often that URI should be polled

Периодические уведомления позволяют приложению обновлять живые плитки с минимальным участием облачной службы и клиента.Periodic notifications enable your app to get live tile updates with minimal cloud service and client investment. Периодические уведомления удобно использовать для распространения одного и того же содержимого среди широкой аудитории.Periodic notifications are a good delivery method for distributing the same content to a wide audience.

Примечание    . Дополнительные сведения можно узнать, загрузив Пример push-уведомлений и периодического уведомления для Windows 8.1 и повторно используя его исходный код в приложении 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.

 

Принцип работыHow it works

Для периодических уведомлений требуется, чтобы ваше приложение размещало облачную службу.Periodic notifications require that your app hosts a cloud service. Эта служба будет периодически опрашиваться всеми пользователями, у которых установлено приложение.The service will be polled periodically by all users who have the app installed. При каждом интервале опроса (допустим, раз в час) Windows отправляет HTTP-запрос GET для URI, скачивает запрошенное содержимое плитки или индикатора (в формате XML), которое предоставляется в ответ на запрос, и отображает это содержимое на плитке приложения.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.

Обратите внимание, что периодические обновления нельзя использовать вместе со всплывающими уведомлениями.Note that periodic updates cannot be used with toast notifications. Последние лучше предоставлять через запланированные или push-уведомления.Toast is best delivered through scheduled or push notifications.

Местоположение URI и содержимое XMLURI location and XML content

В качестве URI для опроса можно использовать любые действующие веб-адреса HTTP или HTTPS.Any valid HTTP or HTTPS web address can be used as the URI to be polled.

Ответ облачного сервера включает в себя скачанное содержимое.The cloud server's response includes the downloaded content. Содержимое, возвращаемое URI, должно соответствовать спецификациям схемы XML Плитка или Индикатор и должно быть закодировано в UTF-8.The content returned from the URI must conform to the Tile or Badge XML schema specification, and must be UTF-8 encoded. Вы можете использовать определенные заголовки HTTP для указания срока действия или тега для уведомления.You can use defined HTTP headers to specify the expiration time or tag for the notification.

Поведение опросаPolling Behavior

Чтобы начать опрос, вызовите один из следующих методов:Call one of these methods to begin polling:

При вызове одного из этих методов указанный в вызове URI немедленно опрашивается. Полученное содержимое используется для обновления плитки либо индикатора событий.When you call one of these methods, the URI is immediately polled and the tile or badge is updated with the received contents. После первоначального опроса Windows продолжает предоставлять обновления с указанной периодичностью.After this initial poll, Windows continues to provide updates at the requested interval. Опрос продолжается до явной остановки (с помощью TileUpdater.StopPeriodicUpdate), удаления приложения или, если это вспомогательная плитка, — до удаления плитки.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. В противном случае Windows продолжит опрос для обновлений плитки или индикатора событий, даже если приложение никогда не будет запущено снова.Otherwise, Windows continues to poll for updates to your tile or badge even if your app is never launched again.

Интервал повторенияThe recurrence interval

Интервал повторения передается перечисленным выше методам в виде параметра.You specify the recurrence interval as a parameter of the methods listed above. Учтите, что хотя Windows стремится выполнять запросы с указанной периодичностью, интервал не является точным.Note that while Windows makes a best effort to poll as requested, the interval is not precise. Windows может отложить опрос на время до 15 минут.The requested poll interval can be delayed by up to 15 minutes at the discretion of Windows.

Время началаThe start time

Дополнительно можно указать конкретное время дня для опроса.You optionally can specify a particular time of day to begin polling. Представим себе приложение, меняющее содержимое своей плитки один раз в день.Consider an app that changes its tile content just once a day. В этом случае мы рекомендуем выполнять опрос через небольшой промежуток времени после обновления вашей облачной службы.In such a case, we recommend that you poll close to the time that you update your cloud service. Например, если интернет-магазин публикует актуальные предложения дня в 8 часов утра, опрос на наличие нового содержимого для плиток лучше всего выполнять чуть позже 8 часов.For example, if a daily shopping site publishes the day's offers at 8 AM, poll for new tile content shortly after 8 AM.

Если вы указали время начала опроса, то первый вызов метода сразу же запрашивает содержимое.If you provide a start time, the first call to the method polls for content immediately. Затем периодический опрос будет начинаться в течение 15 минут от указанного времени начала.Then, regular polling starts within 15 minutes of the provided start time.

Поведение автоматического повтораAutomatic retry behavior

Универсальный код ресурса (URI) опрашивается, только если у устройства есть доступ к сети.The URI is polled only if the device is online. Если сеть доступна, но связь с URI по какой-либо причине невозможна, данный цикл опроса будет пропущен, и URI будет опрошен снова в течение следующего интервала.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. Если на момент запланированного опроса устройство выключено, находится в спящем режиме или в режиме гибернации, то URI будет опрошен после выхода устройства из выключенного состояния или спящего режима.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.

Обработка обновлений приложенийHandling app updates

При выпуске обновления приложения, которое изменяет URI опроса, необходимо добавить ежедневный временной триггер фоновой задачи, который вызывает метод StartPeriodicUpdate с новым 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. В противном случае если пользователи получат обновление для вашего приложения, но не запустят приложение, их плитки будут по-прежнему использовать старые URI и могут не отобразиться, если URI недействителен или если в возвращаемых полезных данных присутствует ссылка на локальное изображение, которое больше не существует.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.

Истечение сроков действий уведомлений на плитках и индикаторах событийExpiration of tile and badge notifications

По умолчанию срок действия периодических уведомлений на индикаторах событий и плитках истекает через три дня с момента скачивания уведомлений.By default, periodic tile and badge notifications expire three days from the time they are downloaded. По окончании срока действия уведомления содержимое удаляется с плитки или из очереди и более не показывается пользователю.When a notification expires, the content is removed from the badge, tile, or queue and is no longer shown to the user. Рекомендуется явным образом установить срок действия для всех периодических уведомлений на плитках и индикаторах событий. Исходя из особенностей вашего приложения или уведомления, следует выбрать время, позволяющее гарантировать, что содержание вашей плитки не будет сохраняться после того, как утратит актуальность.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. Явное указание срока действия важно для содержимого с определенной продолжительностью существования.An explicit expiration time is essential for content with a defined life span. Это также гарантирует удаление устаревшего содержимого, если облачная служба стала недоступной или если пользователь отключился от сети на продолжительное время.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.

Облачная служба устанавливает срок действия и время уведомления добавлением HTTP-заголовка X-WNS-Expires в полезные данные HTTP-отклика.Your cloud service sets an expiration date and time for a notification by including the X-WNS-Expires HTTP header in the response payload. HTTP-заголовок X-WNS-Expires соответствует формату HTTP-date.The X-WNS-Expires HTTP header conforms to the HTTP-date format. Подробнее: StartPeriodicUpdate или StartPeriodicUpdateBatch.For more information, see StartPeriodicUpdate or StartPeriodicUpdateBatch.

Например, во время торгового дня на бирже срок действия для обновлений курсов акций можно установить равным двойному интервалу опроса (допустим, через час после получения при опросе, выполняемом каждые полчаса).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). Рассмотрим другой пример: для новостного приложения можно определить, что один день является подходящим временем для истечения срока действия обновлений плитки ежедневных новостей.As another example, a news app might determine that one day is an appropriate expiration time for a daily news tile update.

Периодические уведомления в очереди уведомленийPeriodic notifications in the notification queue

Вы можете использовать периодические обновления плиток вместе с цикличностью уведомлений.You can use periodic tile updates with notification cycling. По умолчанию плитка на начальном экране показывает содержимое одного уведомления, пока его не заменит новое уведомление.By default, a tile on the Start screen shows the content of a single notification until it is replaced by a new notification. При включении цикличности в ней сохраняется до пяти уведомлений, и плитка отображает их одно за другим.When you enable cycling, up to five notifications are maintained in a queue and the tile cycles through them.

Если в очереди уже есть пять уведомлений, следующее новое уведомление заменит самое старое уведомление в очереди.If the queue has reached its capacity of five notifications, the next new notification replaces the oldest notification in the queue. Однако задав теги уведомления, вы можете повлиять на политику замены в очереди.However, by setting tags on your notifications, you can affect the queue's replacement policy. Тег — это относящаяся к определенному приложению строка без учета регистра длиной до 16 алфавитно-цифровых символов, указанная в HTTP-заголовке X-WNS-Tag в полезных данных HTTP-отклика.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. Windows сравнивает тег входящего уведомления с тегами всех уведомлений в очереди.Windows compares the tag of an incoming notification with the tags of all notifications already in the queue. При совпадении тегов новое уведомление заменяет уведомление из очереди с тем же тегом.If a match is found, the new notification replaces the queued notification with the same tag. Если совпадение не найдено, применяется стандартное правило замены, и новое уведомление заменяет самое старое уведомление в очереди.If no match is found, the default replacement rule is applied and the new notification replaces the oldest notification in the queue.

Очереди и теги уведомлений вы можете использовать для реализации различных комплексных сценариев уведомлений.You can use notification queuing and tagging to implement a variety of rich notification scenarios. Например, биржевое приложение может отправлять пять уведомлений, каждое из которых относится к различным акциям и содержит тег с названием акции.For example, a stock app could send five notifications, each about a different stock and each tagged with a stock name. Это предотвратит появление в очереди двух уведомлений об одних и тех же акциях, более раннее из которых устарело.This prevents the queue from ever containing two notifications for the same stock, the older of which is out of date.

Дополнительные сведения см. в разделе Использование очереди уведомлений.For more information, see Using the notification queue.

Включение очереди уведомленийEnabling the notification queue

Для реализации очереди уведомлений сначала включите очередь для плитки (см. раздел Использование очереди уведомлений в случае локальных уведомлений).To implement a notification queue, first enable the queue for your tile (see How to use the notification queue with local notifications). Вызов для включения очереди достаточно выполнить однократно в течение жизненного цикла приложения, но можно также выполнять его при каждом запуске приложения.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.

Выполнение опроса для нескольких уведомлений за разPolling for more than one notification at a time

Для каждого уведомления, которое Windows должна скачивать для вашей плитки, вам нужно предоставить уникальный URI.You must provide a unique URI for each notification that you'd like Windows to download for your tile. Использование метода StartPeriodicUpdateBatch позволяет предоставить для работы с очередью уведомлений до пяти URI одновременно.By using the StartPeriodicUpdateBatch method, you can provide up to five URIs at once for use with the notification queue. Все URI опрашиваются на наличие отдельных полезных данных уведомления одновременно или почти одновременно.Each URI is polled for a single notification payload, at or near the same time. Каждый опрошенный URI может возвращать собственные срок действия и значение тега.Each polled URI can return its own expiration and tag value.