Статьи

Новые возможности экрана блокировки Windows Phone 8: Как обновить приложение для отображения уведомлений

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

  • Блокировка экрана поставщиков фонового изображения
  • Поставщики уведомлений на экране блокировки

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

Старое приложение

В этом руководстве обновлено приложение для чтения новостей Windows Phone 7, чтобы отображать уведомления на экране блокировки. В приложении уже есть живые плитки, в которых отображается количество непрочитанных новостей и название последней статьи. Приложение обновляет живую плитку, используя следующий код:

var tile in ShellTile.ActiveTiles.First();
var tileData = new StandardTileData()
{
    Count = newNews.Count > 99 ? 99 : newNews.Count,
    BackTitle = latestNews.Publisher,
    BackContent = latestNews.Title
};
 
tile.Update(tileData);

Обновление до Windows Phone 8 (и устранение проблем, вызванных Async CTP 3)

Обновление нашего приложения до Windows Phone 8 происходит через контекстное меню проекта:

образ

Вполне вероятно, что обновление пройдет гладко, и у нас будет рабочее приложение WP8 без каких-либо изменений. Если мы не использовали Async CTP3 , в этом случае мы увидим такие ошибки:

Не удается найти все типы, требуемые модификатором ‘async’. Вы нацелены на неправильную версию фреймворка или не имеете ссылки на сборку?

Решением этих проблем является удаление ссылки на AsyncCtpLibrary_Phone из ваших проектов и добавление пакета Microsoft.Bcl.Async через NuGet (обязательно выберите «Включить предварительные версии»):

образ

Добавление в приложение возможностей уведомлений на экране блокировки

Теперь, когда мы обновили приложение до Windows Phone 8, мы готовы добавить в приложение функции уведомлений на экране блокировки. Для этого требуется всего несколько действий:

  1. WMAppManifest.xml изменен, чтобы включить возможности уведомления экрана блокировки
  2. В проект добавлена ​​новая иконка 30х30

Изменение манифеста

Первый шаг — изменить файл манифеста приложения. Это происходит путем ручного редактирования файла WMAppManifest.xml . Щелкните правой кнопкой мыши файл (находится в папке свойств проекта) и выберите « Открыть с помощью — Редактор исходного кода (текста)» :

образ

Нам нужно добавить новый элемент Extensions в файл и объявить там возможности уведомлений:

<Extensions>
  <Extension ExtensionName="LockScreen_Notification_IconCount" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
  <Extension ExtensionName="LockScreen_Notification_TextField" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
</Extensions>

Они должны быть добавлены только под Tokens-элементом:

образ

Новая иконка

Для отображения уведомлений на экране блокировки приложение должно содержать новый значок размером 30×30 пикселей. В документации говорится, что «изображение должно содержать только белые пиксели плюс некоторый уровень прозрачности». Итак, давайте добавим новый «lockscreen.png» в корень проекта и установим для его действия «Сборка» значение «Содержимое»:

образ

Мы снова должны изменить WMAppManifest.xml, чтобы включить новый значок. Когда приложение было обновлено до Windows Phone 8, процесс обновления добавил новое свойство DeviceLockImageURI внутри элемента Tokens. Значок блокировки экрана объявлен там:

<DeviceLockImageURI IsRelative="true" IsResource="false">lockscreen.png</DeviceLockImageURI>

Следующий шаг

Следующий шаг — просто сидеть сложа руки и наслаждаться. Эта функция не требует каких-либо изменений кода. Когда приложение обновляет активную плитку, экран блокировки также автоматически обновляется.

Но.

Это происходит только в том случае, если пользователь вручную добавляет приложение на экран «Настройки» — «Блокировка» — «Выбор приложений для отображения быстрого состояния»:

образ

образ

In order for the application to show text notifications on the lock screen (in our case the title of the latest news item), the app must be set to show “detailed status”:

образ

Testing

Now only thing left is to test the functionality. The app uses a scheduled agent to update the tile. But as we want to be sure that the lock screen is updated, we need to use the Visual Studio’s “Simulation Dashboard” to turn on the lock screen:

образ

From the dashboard we can change the emulator to display the lock screen with a single click:

образ

Now we can be sure that the lock screen is receiving its notifications:

образ

The text content on the lock screen is the value from the “BackContent” property of the StandardTileData. The values from Title or BackTitle are not displayed.

Directing the user to make the app a lock screen application

Adding the support for lock screen notifications is rather easy. But because the feature requires a manual interaction from the user, it can be a good idea to push the user a little further. Instead of just asking them to navigate to the settings – lock screen, the following code automatically moves the user to the correct settings page:

await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));

Secondary tiles and notifications

The lock screen notifications are updated through the main tile.

Conclusion

The new lock screen functionalities of the Windows Phone 8 are a nice addition to the OS. And it doesn’t require much from the developer to add these new capabilities: A few lines of XML and a new icon are all that is required. There’s no code involved.