Общие сведения о концентраторах уведомлений

Концентраторы уведомлений Azure предоставляют простую в использовании архитектуру, которая позволяет отправлять мобильные push-уведомления с любого сервера (облачного или локального) на любую мобильную платформу.

С помощью концентраторов уведомлений можно легко отправлять кроссплатформенные, персонализированные push-уведомления, не учитывая деталей разных систем уведомлений платформы (PNS). С помощью одного вызова API вы можете выбирать отдельных пользователей или целые группы, содержащие миллионы пользователей, на любом устройстве.

Центры уведомлений можно использовать как для сценариев обслуживания отдельных потребителей, так и целых предприятий. Вот несколько примеров.

  • Отправка уведомлений об экстренных новостях миллионам пользователей с низкой задержкой (центры уведомлений используют приложения Bing, предустановленные на всех устройствах с ОС Windows и Windows Phone).

  • Отправка купонов в соответствии с местоположением сегментам пользователей.

  • Отправка уведомлений о событиях пользователям или группам пользователей для спортивных, финансовых или игровых приложений.

  • Уведомление пользователей о корпоративных событиях, например новые сообщения и сообщения электронной почты, а также информация о потенциальных покупателях.

  • Отправка одноразовых паролей, необходимых для многофакторной проверки подлинности.

Что такое push-уведомления

На смартфонах и планшетных ПК возможно «уведомление» пользователей при возникновении события. В приложениях Windows Store и Windows Phone появляются всплывающие уведомления (в верхней части экрана) или обновления плитки в меню «Пуск». Аналогичным образом, на устройствах Android и Apple iOS уведомления появляются в верхней части экрана, сгруппированные на панели уведомлений и легко доступные.

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

Push-уведомления доставляются с помощью инфраструктур, специфичных для платформы, называемых системы уведомления платформы (PNS). PNS обеспечивает базовые функции (т.е. без поддержки рассылки или персонализации), а PNS, специфичные для платформы, не имеют общего интерфейса. Например, для отправки уведомления в приложение Windows Store разработчик должен обратиться в службу WNS (Windows Notification Service). Для отправки уведомления на устройство iOS тот же разработчик обращается в службу APNS (Apple Push Notification Service) и отправляет сообщение второй раз. Процесс аналогичен для приложений Windows Phone 8 и Android.

На высоком уровне системы уведомлений на всех платформах следуют следующей схеме:

  1. Клиентское приложение обращается в PNS для получения дескриптора. Тип дескриптора зависит от системы. Для WNS это универсальный код ресурса (URI) или "канал уведомлений". Для APNS это токен.

  2. Клиентское приложение сохраняет этот дескриптор на сервере приложения для дальнейшего использования. Для службы WNS сервером обычно является облачная служба. Для Apple система называется поставщик.

  3. Для отправки push-уведомлений сервер приложения связывается со службой PNS с помощью дескриптора, чтобы передать уведомления в адрес экземпляра определенного клиентского приложения.

  4. PNS перенаправляет уведомление на устройство, указанное дескриптором.

Notification Hubs

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

  • Зависимость от платформы. Для отправки уведомлений в адрес устройств с разными платформами на сервере необходимо закодировать несколько интерфейсов. Различаются не только сведения низкого уровня, но также представление уведомления (плитка, всплывающее уведомление или эмблема) зависит от платформы. Эти отличия приводят к сложному и трудно поддерживаемому серверному коду.

  • Масштабирование. Масштабирование этой инфраструктуры имеет два аспекта:

    • По инструкции PNS маркеры устройства необходимо обновлять каждый раз, когда запускается приложение. Эти приводит к потреблению большого количества трафика (и следовательно доступа к базе данных) только для поддержания обновления токенов устройства. Когда количество устройств возрастает (возможно до миллиона), стоимость создания и поддержания этой инфраструктуры становится нетривиальной.

    • Большинство служб PNS не поддерживают передачу данных устройствам. Как таковая, передача данных в адрес миллионов устройств приводит к миллиону вызовов в адрес служб PNS. Возможность масштабирования таких запросов является нетривиальной, т.к. разработчики приложений обычно хотят поддерживать общую задержку на низком уровне (например, последнее получающее устройство не должно получить уведомление позднее 30 минут с момента отправки уведомлений, т.к. во многих случаях смысл отправки push-уведомлений теряется).

  • Маршрутизация. Системы PNS предоставляют способ отправки сообщения на устройство. Однако, для большинства приложений уведомления нацелены на пользователей и/или группы интересов (например, все работники, назначенные определенной учетной записи клиента). Как таковой, сервер приложения поддерживает реестр, который связывает группы интересов с токенами устройств с целью маршрутизации уведомлений в адрес правильных устройств. Эти затраты добавляются к общему времени расходов на маркетинг и техобслуживание приложения.

  • Мониторинг и телеметрия. Отслеживание и статистическая обработка результатов миллионов уведомлений не является тривиальными, и обычно это становится важным компонентом любого решения, которое использует push-уведомления.

Концентраторы уведомлений

Концентраторы уведомлений устраняют одну основную сложность: не нужно управлять задачами push-уведомлений. Вместо этого можно использовать концентратор уведомлений. Центры уведомлений используют полную многоплатформенную масштабируемую инфраструктуру для отправки push-уведомлений и значительно сокращают количество необходимого для push-уведомлений кода, выполняемого в серверной части приложения. Центры уведомлений реализуют все функции инфраструктуры push-уведомлений. Устройству остается лишь зарегистрировать дескрипторы PNS, а приложению – отправить зависящие от платформы сообщения пользователям или группам пользователей, как показано на рисунке.

Notification Hubs

Концентраторы уведомлений обеспечивают push-инфраструктуру со следующими преимуществами:

  • Несколько платформ:

    • Поддержка всех основных мобильных платформ (Windows/Windows Phone, iOS, Android).

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

    • Управление маркером устройства. Центры уведомлений выполняют регистрацию маркеров и обеспечивают обратную связь с PNS.

  • Работа с любым внутренним интерфейсом. Облачный или локальный, .NET, PHP, Java, Node и т.д.

  • Масштабирование. Концентраторы уведомлений масштабируют до нескольких миллионов устройств без необходимости изменения архитектуры или сегментирования. Доступно во всех регионах.

  • Широкий набор схем доставки. Связь устройств с помощью тегов, представляя логических пользователей или группы интересов.

    • Рассылка: позволяет осуществлять почти одновременную рассылку в адрес миллионов устройств с помощью одного вызова API.

    • Одноадресность/многоадресность: извещения в адрес тегов, представляющих отдельных пользователей, включая все их устройства, или в адрес более широких групп, например, отдельных форм-факторов (планшетный компьютер или телефон).

    • Сегментация: извещения в адрес сложных сегментов, определенных выражениями тегов (например, устройства в Нью-Йорке, следящие за командой «Янки»).

  • Персонализация. Каждое устройство имеет один или несколько шаблонов для достижения локализации и персонализации «на устройство» без влияния серверный код.

  • Безопасность. Поддерживаются Shared Access Secret (SAS) и федеративная проверка подлинности.

  • Обширная телеметрия. Доступна на портале и программно.

Сводка

  • Push-уведомления стали неотъемлемой частью любого приложения, так как они увеличивают вовлечение пользователя в клиентские приложения и использование корпоративных приложений.

  • Концентраторы уведомлений предоставляют удобную, горизонтальную push-инфраструктуру для многих платформ, которая значительно снижает необходимость кодировки и поддержания серверного кода приложения.

  • Концентраторы уведомлений можно использовать с любого сервера (облачного или локального) для отправки push-уведомлений в адрес всех основных мобильных платформ (Windows/Windows Phone, iOS, Android).

Дополнительные ресурсы

Центры уведомлений

Документация центров уведомлений

Учебники по началу работы с концентраторами уведомлений:

Ссылки на соответствующий управляемый интерфейс API .NET для концентраторов уведомлений расположены ниже.

Microsoft.WindowsAzure.Messaging.NotificationHub

Microsoft.ServiceBus.Notifications