Статьи

Интеграция с Windows Phone 8 Блокировка экрана

Приятной новой функцией в Windows Phone 8 является интеграция с экраном блокировки. Как разработчик, теперь вы можете отображать значки уведомлений так же, как приложение Outlook отображает уведомления о новой почте. Вы также можете изменить фоновое изображение экрана блокировки из своего приложения. Информация, используемая для отображения уведомлений, — это та же информация, которую приложение использует для отображения уведомлений на основной плитке приложения, независимо от того, закреплено ли приложение на начальном экране или нет. 

Значок уведомления
Чтобы отобразить значок на экране блокировки, вы должны следовать небольшой набор строгих правил о том, каким должен быть ваш файл изображения. Изображение должно быть размером  38 x 38 PNG, которое содержит только белые пиксели и некоторые уровни прозрачности, Да, я знаю, что это немного строго, но это имеет смысл, так как уведомления о значках разработаны очень осторожно. 
Манифест приложения
Вам нужно определить несколько расширений, чтобы операционная система позволяла вашему приложению интегрироваться с экраном блокировки. Итак, вот что нам нужно сделать, открыть файл WMAppManifest.xml с помощью редактора XML, чтобы сделать это, щелкнуть правой кнопкой мыши файл WMAppManifest.xml, выбрать «  Открыть с помощью» и использовать  редактор XML (текст) . Сначала нам нужно определить  элемент <DeviceLockImageURI> в первичном токене. DeviceLockImageURI описывает, какой файл изображения отображать на экране блокировки в виде значка. Чтобы определить DeviceLockImageURI, вставьте следующий элемент в <PrimaryToken>

<DeviceLockImageURIIsRelative="true"
  IsResource="false">Assets\YourLockImage.png</DeviceLockImageURI>

Затем вставьте следующие строки после того , как между 
<Лексемы>  и 
<ScreenResolutions>  определения

<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" />
  <Extension ExtensionName="LockScreen_Background"
             ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}"
             TaskID="_default" />
</Extensions>

Настройки экрана блокировки

Прежде чем наше приложение сможет отображать уведомления, нам необходимо настроить параметры блокировки экрана, чтобы разрешить отображаемый нами тип уведомления. В настоящее время приложение может отображать 3 типа уведомлений: фоновое изображение; подробный статус; и быстрый статус. Подробный статус аналогичен текстовым уведомлениям календаря, которые отображаются с помощью приложения Календарь Outlook. Быстрый статус аналогичен тому, как приложение Outlook Mail отображает уведомления, значок и индикатор количества.

Чтобы настроить устройство для отображения уведомлений из вашего приложения, перейдите в приложение настроек и выберите Экран блокировки.  В настройках экрана блокировки выберите тип уведомления, который будет отображать уведомления из нашего приложения. В этом примере мы покажем быстрое уведомление о состоянии.

настройки

образ

быстрый статус на

Код

Чтобы обновить фоновое изображение экрана блокировки мы обязательно использовать  LockScreen  класс  UserProfile  API. Сначала мы проверяем, настроил ли пользователь приложение для установки фона экрана блокировки, мы можем сделать это с помощью  класса LockScreenManager . Если приложению не разрешено изменять фон экрана блокировки, тогда мы можем открыть страницу настроек экрана блокировки.

Lock screen background (C#)

if (await LockScreenManager.RequestAccessAsync() == LockScreenRequestResult.Granted)
{
    var uri = new Uri("ms-appx:///Assets/LockScreenImage.png", UriKind.Absolute);
    LockScreen.SetImageUri(uri);
}
else
{
    // Open the Settings -> Lock Screen settings
    await Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
}

Чтобы отобразить значок уведомления, просто обновите основную плитку приложения с уведомлением. Мы можем сделать это с помощью  ShellTile  API

Display notification (C#)

var tile = ShellTile.ActiveTiles.First();
var data = new FlipTileData
                {
                    Count = 1,
                    Title = "Lock Screen Demo"
                };
tile.Update(data);

Чтобы удалить уведомление, просто обновите основную плитку приложения до ее исходного состояния. 

Clear notification (C#)

var tile = ShellTile.ActiveTiles.First();
var data = new FlipTileData
                {
                    Count = 0,
                    Title = "Lock Screen Demo"
                };
tile.Update(data);

Довольно просто, не правда ли?

Тестирование на эмуляторе 

Для тестирования на эмуляторе Windows Phone вы можете использовать  панель моделирования,  которая интегрируется непосредственно в Visual Studio. Чтобы запустить это, перейдите в Инструменты -> Панель моделирования. Вы можете использовать этот инструмент для блокировки и разблокировки эмулятора, чтобы проверить интеграцию экрана блокировки ваших приложений. Надеюсь, вы нашли это интересным. Вы можете получить исходный код здесь

образ