Главная » C#, Windows Runtime, XAML, Разработка для Windows 8 » Работа с Push уведомлениями Metro

0

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

Для  отправки push-уведомлений сервер должен  пройти   аутентификацию в Windows Push Notification Services (WNS) с удостоверяющими его данными. Эти данные предоставляются  при  регистрации приложения на сайте WindowsLive Application   Management  (https://manage.dev.live.com/build).  Для  регистрации необходимо иметь учетную запись LiveId. На странице регистрации необходимо указать  отображаемое  имя  пакета  и  издателя,   объявленных в    манифесте нашего проекта. Далее необходимо согласиться с условиями использования. На следующем шаге будут предоставлены необходимые данные для аутентификации сервиса:

·                   Package  Security  Identifier  (SID)  —   у   каждого   приложения   есть уникальный    PackageSID,   который    необходимо    использовать   для аутентификации  сервиса и  WNS, когда  служба отсылает уведомление приложению. Это значение необходимо записать в параметр clientid при запросе OAuth ключа доступа;

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

Эти данные необходимо хранить в  безопасном месте. Иначе злоумышленники, получив доступ к  Package SID и Secret Key,  смогут  рассылать уведомления пользователям приложения.

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

Алгоритм взаимодействия  между приложением, службой и WNS  происходит следующим образом (Рис. 6.8):

Рис. 6.8.

1.                   Приложение отправляет запрос Notification Client Platform на получение канала push-уведомления;

2.                   Notification Client Platform запрашивает канал WNS. Канал возвращается в виде  URI;

3.                   Канал push-уведомления  возвращается в приложение;

4.                   Приложение отправляет URI на службу. Данный механизм  необходимо выполнять самостоятельно;

5.                   Когда  служба  готова   отправить обновление, она  уведомляет   WNS, используя  канал  URI.  Это  происходит  путем  отправки  запроса  POST с необходимым контентом для уведомления. Взаимодействие происходит через https. Здесь сервису необходимо проходить аутентификацию;

6.                   Служба WNS получает сообщение и переправляет его на соответствующее устройство.

Статический метод  CreatePushNotificationChannelForApplicationAsync  класса Windows.Networking.PushNotifications.PushNotificationChannelManager создает    канал    подключения    с    WNS    и    возвращает     объект     класса PushNotificationChannel с данными для отправки  уведомлений.  При каждом запуске приложения обязательно обновлять данные уведомлений, так как они не являются постоянными.

Этот объект предоставляет событие OnPushNotificationReceived. Подписавшись на него, приложение может соответствующим образом реагировать на различные виды уведомлений.

void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)

{

string typeString = String.Empty;

string notificationContent = String.Empty; switch (e.NotificationType)

{

case PushNotificationType.Badge: typeString = "Badge";

notificationContent = e.BadgeNotification.

Content.GetXml();

break;

case PushNotificationType.Tile: notificationContent = e.TileNotification.

Content.GetXml();

typeString = "Tile"; break;

case PushNotificationType.Toast: notificationContent = e.ToastNotification.

Content.GetXml();

}

typeString = "Toast"; break;

// отменяет визуальное уведомление в интерфейсе

e.Cancel = true;

}

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

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

По теме:

  • Комментарии