Доставка необработанных push-уведомлений на экран блокировки приложения с помощью WNS (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этом разделе: как использовать службы Notification Services Windows (WNS) и необработанные push-уведомления для получения сетевых уведомлений в фоновом режиме в приложении среды выполнения Windows на экране блокировки. Здесь описана регистрация канала push-уведомлений и отправки их на ваш сервер, регистрация фоновой задачи для активации из необработанного push-уведомления, а также отправка push-уведомления в канал и активация фоновой задачи.
Что необходимо знать
Технологии
Windows.Networking.PushNotifications
Включает фоновую сетевую связь с помощью необработанных push-уведомлений.
Необходимые условия
Следующая информация относится к приложениям среды выполнения Windows, подключенным к сети или поддерживающим работу в сети и зависящим от сетевых подключений, которые используют необработанные push-уведомления для постоянного поддержания таких подключений. Этот раздел применим к приложениям, написанным на JavaScript для Windows 8.1, Windows Phone 8.1 и Windows Server 2012 R2.
Фоновое сетевое подключение с использованием необработанных push-уведомлений поддерживается приложениями на JavaScript и C++/XAML, а также приложениями, использующими платформу .NET Framework 4.5 и написанными на C#, VB.NET или управляемом C++. Подробнее о фоновых сетевых задачах, относящихся к приложениям на JavaScript, см. в разделе Поддержка приложения с помощью фоновых задач.
Инструкции
Доставка необработанных push-уведомлений в приложение на экране блокировки с помощью WNS
Приложения, использующие WNS, не обязательно должны выполняться в момент получения push-уведомлений, но можно создать у пользователя ощущение, что они выполняются. Например, приложение прогноза погоды может всегда показывать последние данные о погоде в обновляемой живой плитке. С помощью WNS можно выводить на экран уведомления о важных событиях. Хорошим примером уведомления на экране является сообщение о важных новостях. На любом устройстве с Windows 8.1, Windows Phone 8.1 или Windows Server 2012 R2 и подключением к Интернету можно использовать WNS. Уведомления WNS обычно доставляются сразу после отправки.
WNS обеспечивает работу живой плитки и уведомлений на начальном экране Windows 8,1, а также может использоваться в сценариях с подключением в реальном времени (мгновенные сообщения, VoIP и электронная почта). Если приложение, использующее WNS, добавляется на экран блокировки, то его можно использовать для активации фоновой задачи. Фоновая задача — это часть кода приложения, которая выполняется при переходе приложения в фоновый режим (когда оно больше не находится на переднем плане).
Вот несколько примеров фоновых задач, которые могут активироваться уведомлением WNS:
- Вызов API индикаторов событий, чтобы увеличить значение индикатора для почтового приложения на экране блокировки, когда приходит новое сообщение.
- Вызов API всплывающих уведомлений для приложения VoIP, чтобы сообщить пользователю о входящем телефонном звонке.
Push-уведомления бывают четырех типов:
- обновление плитки;
- обновление индикатора событий;
- обновление всплывающего уведомления;
- необработанное уведомление.
Первые три типа push-уведомлений можно использовать в любых приложениях среды выполнения Windows, выполняемых на переднем плане. Необработанные push-уведомления от WNS могут получать только приложения на экране блокировки. Когда приходит необработанное push-уведомление от WNS, необработанные уведомления позволяют приложениям на экране блокировки выполнить код в виде фоновой задачи, даже если приложение не находится на переднем плане.
Большинству приложений не нужен экран блокировки, и они могут просто использовать WNS. Любые приложения могут с помощью WNS обновлять плитку и индикаторы событий, а также показывать всплывающие уведомления при работе на переднем плане. Использование WNS в приложении на экране блокировки — это более сложный вариант использования WNS для подсветки живой плитки и отображения всплывающих уведомлений. Перед использованием WNS на экране блокировки разработчикам следует ознакомиться с документацией по WNS, доступной в библиотеке MSDN. Подробнее об этом см. в разделе Обзор push-уведомлений.
Для отправки push-уведомлений в WNS вам понадобится секретный ключ, который предоставляется Магазином Windows. Подробнее о проверке подлинности в WNS и настройке приложения см. в разделе Проверка подлинности с помощью службы push-уведомлений Windows (WNS).
Далее показано, как отправить необработанное push-уведомление в приложение на экране блокировки.
- Зарегистрируйте канал push-уведомлений WNS и направьте его на свой сервер.
- Отправьте по каналу уведомлений необработанное push-уведомление правильного формата в WNS.
- Напишите код фоновой задачи, которая активируется необработанным push-уведомлением.
Необработанные push-уведомления доставляются в клиентское приложение через сервер приложений разработчика. Для этого полезные XML-данные правильного формата направляются командой HTTP PUSH в канал уведомлений. Канал уведомлений создается клиентским приложением, направляется на сервер приложений и используется для отправки push-уведомления. Для каждого экземпляра приложения в учетной записи пользователя в Windows 8.1 используется уникальный канал уведомлений.
Регистрация канала push-уведомлений и направление его на сервер
Зарегистрируйте канал, вызвав один из методов CreatePushNotificationChannelForApplicationAsync класса PushNotificationChannelManager в пространстве имен Windows.Networking.PushNotifications.
Для приложения будет создан канал push-уведомлений, который будет работать следующим образом.
https://db3.notify.windows.com/?token=AQQAAADX3Wr8MA%2fCoZk4n1CmR5ZU7tdic6ksvG4TQq1tiyZtpetjfzuPHSjvliEeqaqJcPuo1jrVnbyCZvnbuU%2byLvZNDONTgUNu6lavpl5EGtWx7iQgpGkyHLbZeosxioQ42Cg%3d
Отправьте канал на сервер. Срок действия каналов составляет 30 дней, поэтому следуйте следующим рекомендациям.
- Регистрируйте новый канал push-уведомлений при каждом запуске приложения и отправляйте его на сервер, заменяя канал, который ранее был связан с пользователем.
- Для локального компьютера, который всегда подключен к сети питания, регулярно выполняйте фоновую задачу для обновления канала до истечения срока действия. Такая задача называется таймером обслуживания.
Регистрация фоновой задачи, которая активируется необработанным push-уведомлением
Чтобы создать фоновую задачу, которая выполняется после получения необработанного push-уведомления, необходимо указать исходный файл JavaScript, содержащий код, который будет активироваться фоновой задачей. Для этого необходимо задать в манифесте приложения исходный файл для фоновой задачи. Манифест приложения должен содержать имя исходного файла JavaScript для фоновой задачи.
В следующем образце в манифест приложения под элементом <Application> добавляются расширения для фоновой задачи PushNotifyTask.
<Extensions> <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js"> <BackgroundTasks> <Task Type="pushNotification" /> </BackgroundTasks> </Extension> </Extensions>
Приложению нужно открыть канал для необработанных push-уведомлений.
В следующем примере показано, как это сделать.
// Open the channel. See the "Push and Polling Notifications" sample for more detail function openNotificationsChannel() { var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync(); WinJS.log && WinJS.log("Opening a channel...", "sample", "status"); return channelOperation.then(function (newChannel) { WinJS.log && WinJS.log("Channel request succeeded!", "sample", "status"); document.getElementById("scenario1ChannelOutput").value = newChannel.uri; SdkSample.channel = newChannel; }, function (error) { WinJS.log && WinJS.log("Could not create a channel (error number: " + error.number + ")", "sample", "error"); } ); }
Приложение также должно зарегистрировать фоновую задачу, которая будет активироваться при получении необработанного push-уведомления.
В следующем примере показано, как зарегистрировать фоновую задачу для необработанного push-уведомления.
// Register the background task for raw notifications // function registerBackgroundTask() { var taskBuilder = new background.BackgroundTaskBuilder(); var trigger = new background.PushNotificationTrigger(); taskBuilder.setTrigger(trigger); taskBuilder.taskEntryPoint = sampleTaskEntryPoint; taskBuilder.name = sampleTaskName; try { var task = taskBuilder.register(); task.addEventListener("completed", backgroundTaskComplete); WinJS.log && WinJS.log("Background task registered", "sample", "status"); } catch (e) { WinJS.log && WinJS.log("Registration error: " + e.message, "sample", "error"); unregisterBackgroundTask(); } } function unregisterBackgroundTask() { var iter = background.BackgroundTaskRegistration.allTasks.first(); while (iter.hasCurrent) { var task = iter.current.value; if (task.name === sampleTaskName) { task.unregister(true); return true; } iter.moveNext(); } return false; }
Нужно также ввести код для функции, которая выполняется при запуске фоновой задачи.
Подробнее о написании кода фоновой задачи для получения фоновых сетевых уведомлений, использующих необработанные push-уведомления, см. в разделе Написание кода фоновой задачи для необработанных push-уведомлений.
Примечание
В фоновой задаче нельзя ссылаться на элементы пользовательского интерфейса приложения, поскольку они не работают. Это означает, что никакие обратные вызовы для сетевого транспорта не должны быть связаны с контейнером с одним потоком пользовательского интерфейса. Фоновые задачи не должны получать доступ к какому-либо объекту, связанному с контейнером с одним потоком пользовательского интерфейса (который также называют контейнером с одним потоком приложения).
Когда код выполняется в фоновой задаче, можно настроить активацию приложения, синхронизацию состояния между клиентом и сервером и отображение уведомления для пользователя.
Необработанные push-уведомления работают аналогично уведомлениям на плитках и индикаторам событий. Главное отличие — отсутствие в полезных данных необработанных push-уведомлений атрибутов, которые обновляют компоненты пользовательского интерфейса Windows 8.1. Все полезные данные необработанного push-уведомления состоят из контекста, который, когда активируется фоновая задача, передается непосредственно в приложение. Приложение должно распознавать формат контекстных данных, отправленных сервером.
Перед отправкой необработанного push-уведомления с сервера необходимо:
Отправка необработанного push-уведомления в канал и активация фоновой задачи
убедиться, что приложение зарегистрировано в Магазине Windows и имеет закрытый ключ и ИД безопасности пакета;
Написать на сервере приложений код для проверки подлинности в WNS с использованием закрытого ключа и ИД безопасности пакета перед отправкой push-уведомления с сервера;
Правильно создать необработанное push-уведомление WNS и выполнить HTTP-команду POST в канале уведомлений, который получен ранее от приложения среды выполнения Windows. HTTP-команда POST должна включать ряд дополнительных HTTP-заголовков:
- X-WNS-Type=wns/raw
- Content-Type=application/octet-stream
- Authorization=<строка "Bearer", пробел и маркер, полученный на этапе проверки подлинности>
Тело команды HTTP POST должно включать любой контекст, который вы хотите предоставить клиентскому приложению, когда оно запускает фоновую задачу, инициированную получением необработанного push-уведомления. Максимальный объем полезных данных необработанного уведомления составляет 5 КБ.
Когда клиент получает уведомление, активируется фоновая задача, а полезные данные передаются в код фоновой задачи и становятся доступны в нем.
Предыдущие шаги
Подробнее о том, как создать приложение на экране блокировки для получения фоновых сетевых уведомлений, использующих необработанные push-уведомления: Краткое руководство. Создание приложения на экране блокировки, использующего фоновые необработанные push-уведомления.
Последующие шаги
Подробнее о написании кода фоновой задачи для получения фоновых сетевых уведомлений, использующих необработанные push-уведомления, см. в разделе Написание кода фоновой задачи для необработанных push-уведомлений.
Подробнее о руководстве и контрольных списках для использования необработанных push-уведомлений:
Руководство и контрольный список для необработанных уведомлений.
Связанные разделы
Другие ресурсы
Руководство и контрольный список для необработанных уведомлений
Проверка подлинности с помощью службы push-уведомлений Windows (WNS)
Доставка необработанных push-уведомлений в приложение на экране блокировки с помощью WNS
Написание фоновой задачи для необработанных push-уведомлений
Поддержка приложения с помощью фоновых задач
Диагностика и отладка сетевых подключений
Ссылки
Windows.ApplicationModel.Background
Windows.Networking.BackgroundTransfer
Windows.Networking.PushNotifications
Примеры
Примеры приложений на экране блокировки