Суббота, 18.05.2024
Мой сайт
Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Май » 24 » Запор 8 дней. 31 день с Windows 8| День #11: Lock Screen Apps
10:19

Запор 8 дней. 31 день с Windows 8| День #11: Lock Screen Apps





25 января 2013, 14:03

31 день с Windows 8| День #11: Lock Screen Apps

Это перевод статьи “31 Days of Windows 8| Day #11: Lock Screen Apps” автора Jeff Blankenburg серии 31 Days of Windows 8. Каждая статья данной серии будет предоставлена на HTML5/JS и XAML/C#. Все вспомогательные материалы предоставлены на сайте.

Сегодня мы закончим рассмотрение уведомлений в Windows 8, поговорим о Lock Screen. Если вы когда-нибудь работали с планшетами или телефонами, то наверняка знаете что такое блокировка экрана. В Windows 8 блокированный экран предоставляет некоторую информацию: полученные письма, часы, статус подключения к сети. Вот так он выглядит:

Я провел около 30 минут в поисках средства для создания скриншота моего экрана, но безуспешно. Конечно, я мог запустить виртуальную машину, но так не интересно. Нам, как разработчикам, интересна возможность добавить наши Badge на экран, но прежде чем это делать почитайте Microsoft guidance хорошего использования места на заблокированном экране.

Configuring our Manifest

Для начала нам нужно поработать с package.appxmanifest, а именно - включить уведомления на Lock Screen.

Когда вы это сделаете, вы увидите красные значки с крестиками. При включении Lock Screen уведомлений мы должны иметь Badge Logo. А с того момента как мы выбрали опцию включения обновления плиток (tile), мы должны поддерживать и Wide Logo. Так выглядит вкладка Application UI:

Сейчас у нас появился новый красный значок, который указывает нам на то, что если уведомления заблокированного окна включены, мы должны указать одну или несколько фоновых задач из списка: Timer, Control channel, push notification.

Это значит, что блокировка экрана приложения происходит от фонового агента. Перейдем на вкладку Declarations и добавим фоновых задач:

В моем примере приложения, я на самом деле не собираюсь создавать фоновых задач. На этом мы остановимся завтра. Сегодня мы сосредоточимся на тех этапах, которые непосредственно позволяют нам обновлять информацию на нашем Lock Screen.

Asking for Permission

Перед тем, как что-то писать на экране пользователя, необходимо спросить разрешение. Сейчас у нас нет никакого вопроса, но без разрешения пользователя путь к Lock Screen опасен и чреват последствиями. Вот что я имею ввиду:

Вы имеете право спросить разрешение у пользователя всего ОДИН раз. Если вы получили отказ, вы не можете спросить еще раз. Вот так выглядит экран с вопросом:

В коде это выглядит так:

BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();

Если вы никогда не спрашиваете пользователя, единственный способ получить разрешение - открыть свои настройки ПК и явно объявить это там. Как на рисунке:

Пользователи могут добавить на Lock Screen до семи приложений. Мы хотим убедиться, что наша программа одна из списка на Lock Screen, так как наш статус может меняться.

Making Sure You Have Permission

Это не обязательный шаг. Ваше приложение или фоновая задача может отправлять обновления даже если у вас нет разрешения. Но без разрешения пользователя они не будут ему видны.

Вот таким образом можно проверить, дал ли пользователь нам разрешение на обновление экрана:

BackgroundAccessStatus status = BackgroundExecutionManager.GetAccessStatus(); if ((status == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity) || (status == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity)) { //SEND YOUR UPDATE HERE. }

Таким образом на данный момент мы запрашиваем и проверяем разрешение на обновление информации. Следующим шагом будет отправка обновлений.

Updating the Lock Screen

Отправление обновлений будет описано очень похоже на то, что было в двух предыдущих статьях (Day #9 - Live Tiles, Day #10 - Toast Notifications). Подобно предыдущим примерам, мы граббим шаблон состоящий из XML (разумеется, очень простой):

<badge value="badge&#95;value"/>

Далее нам необходимо указать величину, которую мы хотим отобразить. Есть несколько опций для этого. Мы можем отображать не только число от 1 до 99, но и ряд символов на выбор. Приятно, что шаблон достаточно хорош, чтобы различать их. Единственное что измениться в нашем коде - актуальное значение величины. Перейдем к коду:

XmlDocument badgeData = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber); XmlNodeList badgeXML = badgeData.GetElementsByTagName("badge"); ((XmlElement)badgeXML[0]).SetAttribute("value", "31"); BadgeNotification badge = new BadgeNotification(badgeData); BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);

Вы видите, что в SetAttribute() я отправил значение 31. Результатом выполнения метода на Lock Screen будет:

Если вы хотите использовать что-нибудь из списка стандартных иконок - посмотрите информацию на странице в MSDN.

Специально для таких символов нам нужно немного изменить SetAttribute():

((XmlElement)badgeXML[0]).SetAttribute("value", "Playing");

Вот и все о блокировке экрана. Надеюсь вы узнали что-то новое для себя сегодня. Хотя, я забыл упомянуть о том, что когда мы выбрали "Badge and Tile Text" в файле appxmanifest, мы включили эти значки в создание тайла. Именно по этому загружать WideTile.png не требуется. Вот так выглядит моя Live Tile:

Summary

В этой статье мы научились обновлять информацию на заблокированном экране в любой момент времени, но это все нам может быть позволено только пользователем. Обновление информации происходит очень легко. Вы убедились в этом, прочитав статью.

Если вам нужны исходные файлы статьи, их можно скачать по ссылке ниже:

Завтра мы охватим последние 3 дня, рассматривая фоновые задачи. Будем обновлять живые плитки, тост уведомления и блокированный экран с помощью фоновых задач.

via Windows 8 Blog

Please enable JavaScript to view the comments powered by Disqus. comments powered by Disqus

Обсуждение



Источник: appclub.im
Просмотров: 341 | Добавил: giving | Рейтинг: 0.0/0
Всего комментариев: 0
Форма входа
Поиск
Календарь
«  Май 2014  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Сделать бесплатный сайт с uCoz