Робота з Push повідомленнями Metro

Розглянуті вище можливості реалізуються всередині програми, і механізм їх роботи також запускається з програми Такий механізм не дозволяє застосувати сповіщення у всіх сценаріях додатки Наприклад, якщо необхідна інформація для відображення на плитці знаходиться на сервері У таких випадках зручно використовувати push-повідомлення, які дозволяють додатком, розташованому на сервері, відправити на клієнт спливаюче повідомлення, плитку або оновлення емблеми Push-повідомлення працюють навіть тоді, коли додаток неактивно

Для відправки push-повідомлень сервер повинен пройти аутентифікацію в Windows Push Notification Services (WNS) з удостоверяющими його даними Ці дані надаються при реєстрації додатки на сайті WindowsLive Application Management (https://managedevlivecom/build) Для реєстрації необхідно мати обліковий запис LiveId На сторінці реєстрації необхідно вказати імя, що відображається пакета і видавця, оголошених в маніфесті нашого проекту Далі необхідно погодитися з умовами використання На наступному кроці будуть надані необхідні дані для аутентифікації сервісу:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Package  Security  Identifier  (SID) – у кожного додатка є унікальний PackageSID, який необхідно використовувати для аутентифікації сервісу і WNS, коли служба відсилає повідомлення з додатком Це значення необхідно записати в параметр clientid при запиті OAuth ключа доступу

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Secret Key – Параметр client_seсret при запиті OAuth ключа доступу

Ці дані необхідно зберігати в безпечному місці Інакше зловмисники, отримавши доступ до Package SID і Secret Key, Зможуть розсилати повідомлення користувачам програми

Після проходження аутентифікації сервер отримує маркер доступу, який дозволяє йому відправляти повідомлення додатком через WNS

Алгоритм взаємодії між додатком, службою і WNS відбувається наступним чином (Мал 68):

Рис 68

1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Додаток відправляє запит Notification Client Platform на отримання каналу push-повідомлення

2&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Notification Client Platform запрошувати канал WNS Канал повертається у вигляді URI

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Канал push-повідомлення повертається в додаток

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Додаток відправляє URI на службу Даний механізм необхідно виконувати самостійно

5&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Коли служба готова відправити оновлення, вона повідомляє WNS, використовуючи канал URI Це відбувається шляхом відправки запиту POST з необхідним контентом для повідомлення Взаємодія відбувається через https Тут сервісу необхідно проходити аутентифікацію

6&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Служба WNS отримує повідомлення і переправляє його на відповідний пристрій

Статичний методCreatePushNotificationChannelForApplicationAsync  класу WindowsNetworkingPushNotificationsPushNotificationChannelManager створює канал підключення з WNS і повертає обєкт класу PushNotificationChannel з даними для відправки повідомлень При кожному запуску програми обовязково оновлювати дані повідомлень, так як вони не є постійними

Цей обєкт надає подія OnPushNotificationReceived Підписавшись на нього, додаток може відповідним чином реагувати на різні види повідомлень

void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)

{

string typeString = StringEmpty

string notificationContent = StringEmpty switch (eNotificationType)

{

case PushNotificationTypeBadge: typeString = &quotBadge"

notificationContent = eBadgeNotification

ContentGetXml()

break

case PushNotificationTypeTile: notificationContent = eTileNotification

ContentGetXml()

typeString = &quotTile" break

case PushNotificationTypeToast: notificationContent = eToastNotification

ContentGetXml()

}

typeString = &quotToast" break

/ / Скасовує візуальне повідомлення в інтерфейсі

eCancel = true

}

Push-повідомлення не слід використовувати для відправки конфіденційних даних, так як вони не гарантують безпеки відповідного рівня І гарантованої доставки забезпечити вони не можуть У разі коли пристрій користувача з додатком працює в автономному режимі, WNS може зберігати до 5 оновлень плитки, якщо додаток використовує чергу повідомлень плитки, одне повідомлення з емблемою, але не спливаючі повідомлення

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*