Плитки, уведомления, экран блокировки и фоновые задачи
Материалы к лекциям 4-6 Вы можете скачать здесь.
Снова серьезно рискуя выдать свой возраст, я вспоминаю, как мы с другом удивлялись, когда впервые приобрели модемы, которые позволяли нам переписываться в чате. В то время модемы работали на колоссальной скорости в 300 бод (не килобайт, не мегабайт – просто бод) и мы соединялись, звоня друг другу на телефонные номера. Эффективней было бы просто поговорить по телефону, учитывая скорость передачи данных. Такими были ранние дни сетевых соединений, которыми мы наслаждаемся сегодня, когда миллионы служб готовые предоставить нам почти любую информацию, которую мы ищем, со скоростями передачи данных, которые бросают вызов пределам мечтаний.
Несмотря на это, почти с самого возникновения онлайновых сервисов необходимы были некоторые приложения, будь это клиентские приложения или веб-приложения, для просмотра этой информации и получения свежих данных. Когда компьютеры могли выполнять лишь одно приложение за раз (вроде того, которое я использовал с этим 300-бодным модемом ), это могло стать довольно громоздкой задачей, трудно, если не невозможно было взять данные из одной программы и передать их другой. С появлением многозадачных операционных систем, наподобие Windows, вы можете запускать подобные приложения бок о бок и передавать между ними данные – это модель, которой мы пользуемся уже несколько десятилетий. Даже многие веб-приложения, в основном, все еще работают подобным образом. Конечно, в этой области были инновации, такие, как гибридные приложения, которые собирают разрозненную информацию вместе, в более удобном месте, но подобный опыт взаимодействий все еще скрыт внутри приложения.
Это изменилось с приходом Windows 8. Как недавно выразился один журналист: "Использовать Windows 8 – это все равно, что жить в доме, сделанном из Интернета. Начальный экран – блестящая инновация, огромное улучшение по сравнению с рабочим столом, замусоренным папками на других ОС, который не выполняет ничего полезного, разве что показывает фоновую фотографию. Начальный экран делает возможным быть в курсе десятка событий", - если не больше, могу я добавить! - "За пять секунд – из любого приложения, просто нажав на клавишу Windows, вы можете проверить, есть ли у вас новое электронне письмо, предстоящее дело, ненастная погода или горячие новости. Нажмите на клавишу Windows еще раз – и вы вернетесь в приложение, из которого пришли" . Он продолжает предполагать, сколько времени это заняло бы, если бы вам нужно было заходить в отдельные приложения и проверять ту же информацию, даже с использованием высокоскоростного широкополосного соединения!
Что делает Начальный экран по-настоящему живым, так это то, что мы называем динамическими (живыми) плитками (live tiles), это ответ Microsoft на необходимость собирать вместе информацию из разных источников, в основной части среды взаимодействия пользователя и системы, среды, которая "постоянно изменяется и обновляется", как выразился тот же журналист: "так как каждая ее частица подключена к Интернету"
Это возможно с динамическими плитками, каждая из которых является маленьким окном, сквозь которое видны все информационные богатства, на основе которых построены приложения. Приложения обычно извлекают самые важные части этой информации, в соответствии с нуждами конкретного пользователя. И когда пользователь добавляет больше приложений в систему – это ведет к добавлению большего количества плиток на Начальный экран. Пользователь может перемещать и группировать их так, как ему нравится. В итоге мы получаем постоянно растущие информационные возможности.
Тем не менее, живые плитки на начальном экране – это лишь начало истории. Может показаться парадоксальным, что эта лекция, имеющая одно из самых длинных названий во всем курсе, которое содержит перечисление четырех технологий, которые, на первый взгляд, никак не связаны: плитки, уведомления, экран блокировки и фоновые задачи. Возможно, вы думаете, что я просто не мог решить, куда это все поместить! На самом деле, однако, все они составляют единую тему: как приложения работают с Windows 8 для создания живого, активного окружения, в то время, как эти приложения часто не выполняются, или возможности по их выполнению серьезно ограничены.
Давайте начнем, рассмотрев эти взаимосвязи и общие средства, посредством которых приложения связывают свои плитки и другие уведомления, с источниками информации.
Прежде чем продолжать. Вернитесь к разделу "Включение и выключение анимации во всей системе", в Главе 5 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript", и проверьте вашу Панель управления. Если "анимация, в которой нет необходимости" будет отключена, живые плитки не будут анимироваться и вы не сможете увидеть все их возможности.
Во-вторых, так как все темы в этой лекции связаны друг с другом, разные аспекты, о которых я буду говорить в одном разделе лекции – в контексте плиток, например, - применимы и к другим разделам – к таким, как всплывающие уведомления. По этой причине лучше всего читать эту лекцию от начала до конца.
В-третьих, многие возможности, о которых мы будем здесь говорить, недоступны в Имитаторе Windows, такие, как живые плитки, всплывающие уведомления и экран блокировки. Запуская примеры в Visual Studio, убедитесь в том, что используете возможности отладки в режиме Локальный компьютер (Local Machine) или Удаленный компьютер (Remote Machine).
И, наконец, API плиток и уведомлений можно найти в Windows.UI.Notifications, что слишком длинно, чтобы писать это каждый раз. Если не упомянуто иное, предпоагается, что API WinRT, о которых мы говорим, находятся в этом пространстве имен.
Динамичная деятельность: визуальный тур
Когда приложение только получено из Магазина Windows и установлено на устройстве, его основная плитка, как мы уже знаем, добавляется на Начальный экран. Эта плитка может быть квадратной или прямоугольной, в зависимости от того, какие графические элементы предусмотрены разработчиком. Если приложение предоставляет изображения и для квадратных, и для прямоугольных плиток, пользователь может, используя команду панели приложения, менять ее параметры (рис. 4.1).
![Типичный Начальный экран с встроенными приложения и панелью приложения. Показанная команда (третья слева) позволяет сделать прямоугольную плитку меньше, превратив ее в квадратную. Та же команда, выполненная для квадратной плитки может выглядеть как Больше (Larger) (смотрите наложенное изображение), если приложение поддерживает прямоугольные плитки](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_01.jpg)
Рис. 4.1. Типичный Начальный экран с встроенными приложения и панелью приложения. Показанная команда (третья слева) позволяет сделать прямоугольную плитку меньше, превратив ее в квадратную. Та же команда, выполненная для квадратной плитки может выглядеть как Больше (Larger) (смотрите наложенное изображение), если приложение поддерживает прямоугольные плитки
Когда вы устанавливаете Windows 8 на устройство, вы можете не заметить, что на Начальном экране есть что-то статичное, плитки для нескольких встроенных приложений (наподобие Weather (Погода), News (Новости) и Bing) обновляются, но большая их часть статична. Но как только вы запутсите некоторые из этих приложений – что займет у вас пару секунд! – начальный экран начнет отображать больше изменяющейся информации, многие плитки будут меняться каждые несколько секунд, как я попытался показать на рис. 4.2. и рис. 4.3. Это происходит потому, что приложениям нужно запуститься хотя бы раз для того, чтобы установить первоначальные связи со связанными с ними веб-сервисами и активировать свои динамические плитки .
![Начальный экран после запуска некоторых из встроенных приложений и выполнения некоторых настроек, наподобие подключения приложения People (Люди) к моей учетной записи в Facebook](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_02.jpg)
Рис. 4.2. Начальный экран после запуска некоторых из встроенных приложений и выполнения некоторых настроек, наподобие подключения приложения People (Люди) к моей учетной записи в Facebook
![Тот же самый экран через несколько секунд после того, как некоторые приложения обновили свои плитки](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_03.jpg)
Рис. 4.3. Тот же самый экран через несколько секунд после того, как некоторые приложения обновили свои плитки
Список того, что может появиться на каждой плитке, довольно обширен и разнообразен. Как вы можете видеть на предыдущих рисунках, квадратные и прямоугольные плитки могут отображать текст, изображения, название приложения или логотип (в нижнем левом углу) и другие маленькие значки (глифы), или числа, которые называются индикаторами событий (badge) в нижнем правом углу (на плитках приложения Mail (Почта) и Store (Магазин) на рис. 4.3, например).
Выделение элемента на Начальном экране активирует панель приложения, показанную на рис. 4.4, которая предлагает команды для открепления (unpin) плитки от Начального экрана, деинсталляции приложения, изменения размера плитки (как мы уже видели), и выключения обновления для конкретной динамической плитки.
![Панель приложения для Начального экрана при выделении плитки. Команда Turn live tile off (Отключить динамические плитки) отключит обновление для конкретной плитки, поэтому постарайтесь не докучать пользователям излишним "шумом"!](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_04.png)
Рис. 4.4. Панель приложения для Начального экрана при выделении плитки. Команда Turn live tile off (Отключить динамические плитки) отключит обновление для конкретной плитки, поэтому постарайтесь не докучать пользователям излишним "шумом"!
Плитки могут принимать обновления даже тогда, когда приложение не запущено (как мы увидим в следующем разделе: "Четыре источника для обновлений и оповещений". Плитки так же могут циклически отображать до пяти обновлений. Это важная возможность, которая сокращает общее число обновлений, которое необходимо получить из Интернета (а значит, экономится энергия). То есть, циклически отображая различные свежие данные, плитка продолжает выглядеть работающей даже если получает обновления с интервалом в 5 – 15 минут, вместо 5 – 15 секунд.
Совет. Хотя динамические плитки можно обновлять часто, используя push-уведомления, будьте осторожны и не злоупотребляйте этой возможностью. Рассматривайте динамические плитки как средства просмотра содержимого приложения, а не как гаджеты: избегайте попыток реализовать в живой плитке функции приложения (вроде часов), так как вы не можете положиться на высокочастотные обновления. Более того, обновление плиток состоит лишь из XML, который задает содержимое плитки – обновления не могут вызывать выполнение какого-либо кода. В конце концов, думайте о реальном опыте взаимодействия, который вы хотите предоставить посредством динамической плитки, и используйте самый длительный период обновления, который возможно, при котором эта цель достижима.
Во Введении я упоминал, что благодаря установке большего количества приложений из Магазина Windows возможности Начального экрана стремительно растут. Но новые приложения – это не единственный способ, благодаря которому на экране может появиться больше плиток. Приложения так же могут создавать вторичные плитки, поддерживающие все возможности плиток приложения. Вторичные плитки – это обычный способ создавать закладки на страницы приложения. Вторичная плитка обычно создается с помощью команды Закрепить (Pin) на панели приложения. По запросу приложения на создание плитки, Windows автоматически запрашивает согласие пользователя, как показано для приложения Weather (Погода) на рис. 4.5, таким образом, пользователь всегда контролирует Начальный экран (таким образом, приложения не могут его замусорить!). В данном случае приложение Weather (Погода) позволяет вам закреплять дополнительные плитки для каждого расположения, параметры которого вы настроили. Дополнительная плитка всегда включает в себя специфическую информация, которая передается приложению, когда оно запускается, позволяя ему отобразить нужную страницу.
![Закрепление дополнительной плитки приложения Weather (Погода) с использованием команды Закрепить на начальном экране (Pin to start), показанное здесь с автоматическим запросом на подтверждение операции](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_05.png)
Рис. 4.5. Закрепление дополнительной плитки приложения Weather (Погода) с использованием команды Закрепить на начальном экране (Pin to start), показанное здесь с автоматическим запросом на подтверждение операции
В приложении People (Люди), похожим образом, вы можете закрепить, то есть, создать дополнительную плитку, для конкретного человека. В приложении Mail (Почта) вы можете закрепить различные учетные записи и папки. В Internet Explorer можно выполнять закрепление на начальном экране любимых веб-сайтов. У вас есть идея: дополнительные плитки позволяют вам заполнять Начальный экран весьма персонализированными представлениями из разных приложений. Пользователь может так же открепить любую плитку приложения в любое время (в том числе – и основную плитку, что может произойти, когда кто-то создал несколько дополнительных плиток для получения доступа к конкретным частям программы). Приложение так же может запросить открепление плитки у Windows, в ответ система выдаст запрос на подверждения этого действия пользователем.
Совет для пользователя. Возможно, вы знаете, что вы можете перемещать плитки по Начальному экрану в различные его разделы. Но знаете ли вы, что вы так же можете создавать заголовки групп для этих разделов? Для того, чтобы это сделать, выполните операцию семантического масштабирования на Начальном экране (жест сжатия, Ctr+вращение колеса мыши, или Ctrl+клавиша со знаком "-"), выберите группу и воспользуйтесь командой Назвать группу (Name group) на панели приложения:
В некотором смысле динамическая плитка может уменьшить для пользователя необходимость в запуске приложения, которое с ней связано. Однако, это не совсем так. Так как плитка ограничена в размерах и должна соответствовать предопределенным конфигурациям (шаблонам), она одновременно и предоставляет основные сведения и служит в качестве средства привлечения пользователя к приложению. Плитки дают много полезной информации для быстрого просмотра, но не так много, чтобы полностью удовлетворить ваш интерес к подробностям. Вместо того, чтобы быть сдерживающим факторов для запуска программ, они, на самом деле, являются приглашениями к запуску: они и сообщают информацию и привлекают. По этой причине я полагаю, что динамические плитки будут считаться существенной особенностью приложения в тех случаях, когда они применимы, и приложение, которое могло бы их использовать, но не сделало этого, получит более низкие оценки в Магазине Windows.
Призываю вас быть креативными в размышлении о том, какого рода интересную информацию вы можете разместить на плитке, если даже приложение не взаимодействует с Интернетом. Игры, например, могут, в циклических обновлениях плитки, показывать процент прохождения разных уровней, набранные очки, новые игровые задания и так далее. Все это приглашает пользователя к запуску приложения. Помните, однако, что пользователь всегда может отключить обновления каждой конкретной плитки, поэтому не давайте ему причины для того чтобы он помешал вашим целям!
В качестве дополнительного материала по живым плиткам, посмотрите материал "Обновление живых иконок без разрядки аккумулятора" (http://blogs.msdn.com/b/b8_ru/archive/2011/11/09/updating-live-tiles.aspx ) в блоге разработчиков Windows 8. Это хороший материал о том, как, с точки зрения системы, эффективно управлять плитками.
Сейчас, несмотря на все восхитительные свойства живой плитки, Начальный экран – это не то место, где пользователи будут тратить все свое время – мы ожидаем, что они, конечно, будут работать с приложениями. Несмотря на это, пользователи могут захотеть получать уведомления при возникновении важных событий, таких, как поступление электронного письма, срабатывание будильника, или, возможно, изменение ситуации на дороге, которое означает, что сейчас удачное время для того, чтобы поехать домой (или изменения в погодных условиях, которые говорят о том, что можно хорошо покататься на лыжах).
>По этой причине – для отображения обычной срочной информации из приложений, которые не находятся в данный момент на переднем плане – Windows 8 предоставляет всплывающие уведомления. Эти сообщения выскакивают (как настоящие тосты, но без хлебных крошек) в верхнем правом углу экрана (в верхнем левом для языков, где пишут справа налево). Они появляются поверх приложения переднего плана, как показано на рис. 4.6, так же – на Начальном экране и на рабочем столе. В одно и то же время может появиться до трех всплывающих уведомлений, и каждое может сопровождаться предопределенным звуковым сигналом, если нужно.
Всплывающие уведомления, наподобие обновлений плиток, создают с использованием предопределенных шаблонов, они могут состоять из изображений, текста, логотипов. Они всегда использую цветовую схему связанного с ними приложения, как определено в его манифесте (установки Текст переднего плана (Foreground Text) и Цвет фона (Background Color) в разделе Интерфейс приложения (Application UI section).
Цель всплывающих уведомления, опять же, дать пользователю сигнал или другую срочную информацию, но по умолчанию они, прежде чем исчезнуть, появляются на короткое время. Длительность показа всплывающего уведомления по умолчанию – пять секунд, но его можно установить на длительность вплоть до пяти минут в разделе Параметры ПК > Специальные возможности (PC Settings > Ease of Access), как показано на рис. 4.7. Приложения могут создавать уведомления, которые показываются долго, до 25 секунд, или в соответствии с установками в разделе Специальные возможности (Ease of Access setting), в зависимости от того, что дольше. Более того, приложения могут создавать циклически отображаемые уведомления для событий наподобие телефонного звонка или другой ситуации, в которой другой человек может ждать на другом конце линии и есть смысл сохранять активность уведомления в течение некоторого времени.
![До трех всплывающих уведомления может быть отображено поверх приложения переднего плана (в том числе – на Начальном экране и рабочем столе). Каждое уведомление, так же, может воспроизводить заданные звуковые оповещения.](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_07.jpg)
Рис. 4.6. До трех всплывающих уведомления может быть отображено поверх приложения переднего плана (в том числе – на Начальном экране и рабочем столе). Каждое уведомление, так же, может воспроизводить заданные звуковые оповещения.
![Настройка длительности всплывающего уведомления (выпадающий список) в разделе Параметры ПК > Специальные возможности (PC Settings > Ease of Access)](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_08.png)
Рис. 4.7. Настройка длительности всплывающего уведомления (выпадающий список) в разделе Параметры ПК > Специальные возможности (PC Settings > Ease of Access)
Как и в случае с обновлениями плиток, у пользователя есть возможности полного управления всплывающими уведомлениями. Для системы в целом, для экрана блокировки и для конкретного приложения. Пользователи могут выполнить эти настройки в разделе Параметры ПК > Уведомления (PC Settings > Notifications), как показано на рис. 4.8. Это, в конечном счете, означает, что вам следует сделать ваши уведомления ценными для пользователя. Если вы показываете много ненужных уведомлений, есть вероятность, что пользователь отключит их для вашего приложения или для всей системы (и оставить плохой отзыв о вашем приложении в Магазине Windows).
![Пользователь может тонко настраивать уведомления в разделе Параметры ПК > Уведомления (PC Settings > Notifications)](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_09.png)
Рис. 4.8. Пользователь может тонко настраивать уведомления в разделе Параметры ПК > Уведомления (PC Settings > Notifications)
Как и в случае с дополнительными плитками, каждое всплывающее уведомление содержит специфические данные, которые будут переданы связанному с ним приложению, когда оно будет активировано. Если приложение приостановлено, конечно, Windows переключится на это приложение и вызовет его событие activated с данными из уведомления. Если приложение не исполняется, Windows запустит его. (Кстати, сочетание клавиш Win+V, циклически переводит фокус ввода между активными уведомлениями, а нажатие на Enter позволяет активировать уведомление).
Всплывающие уведомления, как и обновления плиток, могут исходить из источников, отличающихся от выполняющего приложения – что должно быть очевидным, так как приложения, не находящиеся на переднем плане, обычно приостановлены! Мы поговорим об этом в следующем разделе. В то же время, вы можете удивиться, если окажется, что здесь играют роль фоновые задачи – последняя тема лекции 6.
На самом деле, так и есть! Как мы уже видели с приложением для фонового воспроизведения музыки в Главе 4 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript", то, что приложение, находящееся в фоновом режиме, приостановлено – это не непреложное правило . Это лишь подход Windows к экономии энергии батарей, когда она не позволяет произвольным приложениям выполняться в фоновом режиме по любым причинам. Вместо этого Windows позволяет приложениям исполнять целенаправленные фоновые задачи для конкретных целей, называемых триггерами, с учетом конкретных квот на использование ресурсов процессора и сетевого ввода-вывода. Как вы можете ожидать, приложение объявляет подобные задачи в своем манифесте.
Триггеры предоставляют сведения об изменениях условий сетевого соединения, изменении часового пояса, об обновлениях приложении, об истечении времени таймера (с интервалом в 15 минут), или о прибытии push-уведомления из онлайнового источчника (таким образом, оповещение отправляется в ответ на события, которые являются внешними по отношению к устройству). Каждый триггер так же можно настроить с использованием условий, таких, как есть ли подключение к Интернету или нет. В любом случае, общая задача фоновых задач заключается не в том, чтобы запускать приложения – на самом деле, фоновые задачи не могут отображать произвольные пользовательские интерфейсы. Скорее, фоновые задачи позволяют приложениям обновлять свои внутренние состояния, и, когда нужно, вызывать обновления плиток или всплывающие уведомления, с помощью которых пользователь может решить активировать приложение для дальнейших действий.
Еще один дополнительный аспект фоновых задач заключается в том, что Windows ограничивает общее количество приложений, которые могут обрабатывать определенные виды триггеров: таймеров, получения push-уведомлений, приема данных из сети по каналу управления, как используется приложениями для общения в реальном времени. Ограничение накладывает по той причине, что подобные приложения должны быть добавлены на экран блокировки для того, чтобы их задачи могли исполняться.
Экран блокировки, как вы, конечно, знаете, и как показано на рис. 4.9, это то, что отображается тогда, когда пользователь должен войти в систему. Устройство может быть либо заблокировано пользователем, либо может сделать это самостоятельно, через некоторое время неактивности. Исключение – для тех случаев, когда приложение отключает автоматическое блокирование посредством API Windows.System.Display.DisplayRequest, как показано в Главе 4 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript".
![Типичный экран блокировки. До семи приложений могут отображать уведомления вдоль нижней части экрана. Одно приложение может отображать текст около часов](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_10.png)
Рис. 4.9. Типичный экран блокировки. До семи приложений могут отображать уведомления вдоль нижней части экрана. Одно приложение может отображать текст около часов
Тем не менее, Windows не принуждает пользователя к входу в систему лишь для того, чтобы увидеть самые важные сведения из его самых важных приложений. Посредством Параметров ПК (PC Settings), как показано на рис. 4.10., пользователь может добавить до семи приложений на экран блокировки (при условии, что эти приложения запросили доступ, что является предметом решения пользователя). Эти приложения должны зарегистрировать для работы на экране блокировки соответствующие фоновые задачи, с помощью которых они осуществляют обновление индикаторов событий на экране блокировки. Именно их вы видите вдоль нижней части экрана на рис. 13.9, где каждый глиф индикатора (число) так же соответствует монохромному изображению, которое называется Индикатор событий (Badge Logo) в манифесте приложения. Эти изображения должны иметь размеры 24x24 для 100%, 33x33 для 140%, и 43x43 длы 180%, и они должны содержать только белые или прозрачные пиксели.
В дополнение к этому, пользователь может выбрать одно приложение, которое может показывать текст (но не изображение) около часов. Обратите внимание на то, что всплывающие изображений, которые вызывает это приложение, будут отображаться на экране блокировки. При прикосновении экран блокировки сдвинется и приложение будет активировано как только пользователь войдет в систему.
![Настройка экрана блокировки и приложений экрана блокировки в разделе Параметры ПК (PC Settings)](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_11.png)
Рис. 4.10. Настройка экрана блокировки и приложений экрана блокировки в разделе Параметры ПК (PC Settings)
Этим мы завершаем рассказ о том, как Windows поддерживает динамичную деятельность приложений с помощью различных действий – на Начальном экране, на экране блокировки, и когда пользователь работает в другом приложении. В то же время, система экономит энергию батарей, интеллектуально управляя различными способами обновления данных. Посмотрим теперь, как все это реализуется, в идеале даже без необходимости запуска самих приложений.
Четыре источника для обновлений и уведомлений
Когда приложение является активным приложением переднего плана, оно может напрямую отправить любые уведомления: обновления плиток и индикаторов уведомлений, всплывающие уведомления. Все это называется локальными уведомлениями, так как они исходят от исполняющегося приложения и немедленно применяются, как показано на рис. 4.11 . Выполняющееся новостное приложение, например, может выдать до пяти обновлений на свою плитку, таким образом текущие новости будут циклически отображаться на ней, когда пользователь переключится на другое приложение. Для подобных обновлений может быть установлена дата и время истечения, в итоге, они автоматически исчезнут (возможно, реализуя поговорку "Отсутствие новостей – это уже хорошие новости"!). В случае со всплывающими уведомления, отметим, что приложению переднего плана следует использовать встроенные сообщения, всплывающие окна и диалоговые окна для ошибок, которые относятся к видимому в данный момент содержимому. Всплывающие уведомления подходят для оповещений о содержимом, которое расположено в других частях приложения.
![Локальные обновления от исполняющегося приложения (running app) вступают в силу немедленно](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_12.png)
Рис. 4.11. Локальные обновления от исполняющегося приложения (running app) вступают в силу немедленно
Второй источник обновлений – это назначенные уведомления, которые применяются для обновления плитки и вызова всплывающих уведомлений. Исполняющееся приложение передает их системе с указанием даты и времени, когда обновление или оповещение должно появиться, независимо от того, исполняется ли приложение, приостановлено ли оно или остановлено в указанное время в будущем. Это показано на рис. 4.12. Приложение для работы с календарем, например, обычно использует назначенные уведомления для напоминаний о делах.
![Назначенными уведомлениями управляет система. Они появляются в запрошенное время, независимо от состояния исходного приложения](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_13.png)
Рис. 4.12. Назначенными уведомлениями управляет система. Они появляются в запрошенное время, независимо от состояния исходного приложения
Третий способ отправки обновлений, которым может пользоваться приложение, на этот раз – только для плиток и индикаторов событий – это периодические обновления. Как показано на рис. 4.13, исполняющееся приложение, если в этом есть необходимость, может настроить системные средства обновления плиток и индикаторов уведомлений для запроса обновления с заданного URI веб-сервиса в определенные интервалы с невысокой частотой (минимум – 30 минут), начиная с заданного времени. Веб-сервис отвечает на данный HTTP-запрос в формате XML, что аналогично тому, что исполняющееся приложение предоставляет при локальном обновлении, и обновления могут быть установлены с указанием даты и времени истечения, в итоге они автоматически удаляются из цикла обновлений, когда это нужно. Среди всех этих возможностей, периодические обновления полностью подходят многим приложениям для создания очень динамичных живых плиток со сравнительно небольшими усилиями.
![Периодические обновления для плиток и индикаторов событий регистрируются в системном средстве обновления плиток, которое запрашивает обновления с веб-сервиса с постоянной периодичностью](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_14.png)
Рис. 4.13. Периодические обновления для плиток и индикаторов событий регистрируются в системном средстве обновления плиток, которое запрашивает обновления с веб-сервиса с постоянной периодичностью
Конечно, минимальный интервал в 30 минут может быть недостаточно быстрым, если приложение хочет оповестить о чем-либо пользователя так быстро, как это возможно. Поэтому у нас есть четвертое средство для обновлений – push-уведомления – и этот метод подходит как для плиток и всплывающих уведомлений, так и для уведомлений, не имеющих отношения к пользовательскому интерфейсу (необработанные уведомления, raw notifications).
Push-уведомления, это уведомления, которые отправляются напрямую на устройство, не по запросу приложения, а по запросу некоторого веб-сервиса, который обычно круглосуточно осуществляет мониторинг информации или каких-то особых условий. Как показано на рис. 4.14, этот веб-сервис задействует бесплатный Windows Push Notification Service (WNS для краткости) для отправки уведомлениям, которые создали канал для этой цели. Каждый канал предназначен для индивидуального пользователя и устройства. Как и в случае с другими обновлениями, эти требуют хотя бы одного запуска приложения, так как в течение этого запуска приложение настраивает WNS-канал для данного устройства.
Push-уведомление может содержать, в виде полезной нагрузки, XML, как в случае с другими обновлениями плиток и всплывающими уведомлениями, но их так же можно использовать для отправления необработанных оповещения, не относящихся к пользовательскому интерфейсу, которые могут содержать произвольные данные. Необработанные уведомления должно принимать исполняющееся приложение или приложение экрана блокировки с фоновой задачей, предназначенной для обработки push-уведомлений. В противном случае система попросту не будет знать, что с ним делать!
![Push-уведомления исходят из веб-сервисов, которые работают всегда и затем направляются службе WNS для доставки конкретным клиентам (конкретному приложению на конкретном пользовательском устройстве) посредством зарегистрированных приложениями WNS-каналов](/EDI/16_08_14_2/1408137470-25747/tutorial/1166/objects/4/files/02_15.png)
Рис. 4.14. Push-уведомления исходят из веб-сервисов, которые работают всегда и затем направляются службе WNS для доставки конкретным клиентам (конкретному приложению на конкретном пользовательском устройстве) посредством зарегистрированных приложениями WNS-каналов
Полезную сводку по всем этим механизмам обновления можно найти в материале "Выбор способа доставки уведомлений" (http://msdn.microsoft.com/library/windows/apps/Hh779721.aspx ). Сюда вклюыены примеры использования каждого метода. В любом случае, сейчас мы готовы к тому, чтобы узнать подробности о том, как применять каждый из этих методов для того, чтобы поддерживать систему в динамичном состоянии активного диалога с пользователем.