2. В Докладе
Зачем push-уведомления?
Проблемы масштабной посылки push-уведомлений
Windows Azure Notification Hubs краткий обзор и
демонстрация
Bing News и другие сценарии
Notification Hubs архитектура и опыт
3. Зачем Push-уведомления?
Привлечь внимание пользователя
Добавить бэдж на иконке iOS приложения
Показать оповещение
Обновить живую плитку на Windows 8.x
Почему настолько популярны?
Функционально богаты и разнообразны
1000 раз дешевле чем SMS
Увеличивают возратимость пользователей на 50100%, 10x эффективность по сравнению с email
4. Push-уведомления 101
Получаем дескриптор устройства на старте приложения
1.
Клиент запрашывает дескриптор устройства у Platform Notification
Service (PNS)
2.
У каждой платформы (Windows 8.x, WinPhone, iOS, Android, …) свой PNS,
свой протокол
client app
Клиент передает дескриптор своему бэкенду
Посылаем уведомление
3.
Бэкенд приложения передает сообщение и дескриптор
соответствующему PNS
4.
Platform
Notification
Service
PNS посылает сообщение клиент устройству
Храним дескрипторы
5.
Удаляем негодные/просроченные дескрипторы и т.д.
App back-end
5. Сложности push-уведомлений
Различия в PNS протоколах (HTTP vs. TCP, xml vs. JSON payload)
Различия в свойствах и возможностях (плитки vs. тосты vs. бэджи)
PNS работает с дескриптерами; уведомления нужно доставить пользователям/группам
Необходимо хранить ассоциации дескриптор/пользователь/группа
Одновременная рассылка миллионам пользователей без задержек
Уведомления получаемые пользователем должны соответсвовать временному поясу,
языку, личным предпочтениям
6. Windows Azure Notification Hubs
Один раз
Клиент запрашывает дескриптор устройства у
Platform Notification Service (PNS)
Бэкенд приложения регистрирует дескриптор в
Notification Hub для пользователя/группы
Google app
iOS app
Windows 8.x
app
App back-end
Бэкенд приложения передает сообщение и
группу/пользователя для Notification Hub
Notification Hub посылает сообщение и
соответствующий дескриптор для PNS
GCM
Notification Hub
APNs
WNS
7. Windows Azure Notification Hubs
iOS / Android (GCM) / Windows 8.x/ Windows Phone 7.x & 8
Бэкенд приложения не беспокоится о различиях между протоколами PNS
Работает с любым бэкенд
.NET, Java, PHP, Ruby, Node.js, etc; в облаке или “под столом”
Хранение и организация дескрипторов устройств
Сегментация
Броадкаст
посылка уведомления тэгу реализует одновременный броадкаст миллионам устройств в один API
вызов.
Персонализация
Notification Hub ассоциирует дескрипторы с тагами, представляющими логических пользователей
или групп
позволяет регистрировать шаблоны для каждого дескриптора, трансформировать сообщения
согласно платформе, временному поясу, языку, и другим личным предпочтениям пользователя, не
утруждая бэкенд приложения
Аутентикация и доступ на основе ролей, богатая диагностика, мультитенантнасть и изоляция
8. Тэги
Тэги
каждый дескриптор устройства может быть
зарегистрирован с одним или более тэгам
Тэги простые строки, их не нужно заранее
создавать
Tag:”Football”
Пример: броадкаст группам интересов
послать уведомление всем пользователям
интересующимся футболом с помощью одного
API call
App back-end
Комбинации тэгов: футбол + москва, позволяют
более точно указать клиентов для рассылки
Пример: уведомления индивидуальным
логическим пользователям
Notification Hub
Tag:”Hockey”
Tag:”Football”
9. Шаблоны
<toast>
<visual>
<binding template="ToastText01">
<text id="1">$(message)</text>
</binding>
</visual>
</toast>
Приложение может зарегистрировать
устройство вместе с одним или более
шаблонами
Alice’s Surface регистрируется с шаблоном для
Windows Store ToastText01 формата уведомления
Hello!
Bob’s iPhone регистрируется с шаблоном для
Apple toast:
{ aps: {alert: “$(message)”}}
{ message: “Hello!” }
Бэкенд приложения посылает сообщение для
всех пользователей:
{message: “Hello!”}.
App back-end
Service Bus
Notification Hub
Hello!
{
Шаблоны могут быть использованы для
абстракции вкрсий клиента
aps: {
alert: “$(message)”
}
}
10. var hub = new NotificationHub(“<hub name>", "<connection string>");
var channel = await
PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
await hub.RegisterTemplateAsync(channel.Uri, toastText01Template,
“ToastTemplate", “FootballTag");
12. In your main activity:
Notification Hub hub = new NotificationHub("<hub name>", "<connection string>",
context);
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regid = gcm.register(SENDER_ID);
TemplateRegistration r = hub.register(regid, template, “FootballTag”);
13. var azure = require('azure');
var notificationHubService = azure.createNotificationHubService('hubname',
'connectionString');
'FootballTag',
{ message: 'It’s a goal!' }
if (!error) { // message sent successfully }
});
function (error) {
14. Bing News
Windows 8.x, Windows Phone 8
Установлен на всех устройствах
Windows 8 & 8.1 devices
Использует уведомления для
горячих новостей
Использует Notifications Hubs для
броадкаста мобильных
уведомлений миллионам
пользователей во всем мире
ежедневно
15. Bing News
~100 тэгов для каждой темы и
рынка
Каждый тэг содержит
миллионы устройств
“Горячие новости” горячи
только первые минуты
Должны быть доставлены
одновременно всем
устройствам
16. Другие популярные сценарии
“Mailbox”
Малые тэги
Много sends/tags/day, важна быстрая доставка
“Events”
Богатые тэг выражения
Много быстро меняющихся больших тэгов
Меньшее количество sends; быстрая доставка критична
Campaigns
Большие тэги
Малое количество sends
Быстрая доставка не критична
18. Проблемы сценария “Breaking News”
Registrations
Broadcast миллионам устройств
одновременно
Распаралелить группы задач
Messages
Размер тэгов неоднороден
Gateway
Нужно предугадывать размер на gateway
Распределить дескрипры устройств
оптимизировать базы для быстрого чтения
Push
Workers
Work Order
Queues
для каждого тэга дескрипторы устройств
должны быть максимально распределены
Предохранить приложения от PNSблокировки
Динамическое ограничение скорости
посылки
дескрипторы/тэги DBs
PNS feedback
processing
19. Проблемы сценария “Events & Campaigns”
Registrations
Broadcast миллионам устройств
одновременно
Распаралелить группы задач
Push
Workers
Распределить дескрипры устройств
Messages
Большой траффик регистраций
Оптимизируем для записи
Тэги неоднородны и быстро меняются
Work Order
Queues
Перемещаем данные?
Gateway
Полагаемся на частую перерегистрацию?
Разделить базы для записи и чтения
Device handles/tags DBs
PNS feedback
processing
20. “Mailbox” и другие
Registrations
Messages
Миллионы маленьких тэгов
Большой “messages” траффик
Work order queues должны быть
быстрыми, желательно в памяти
Дескрипторы устройств выходят из срока
Async обработка PNS’s feedback
Push
Workers
Gateway
Work Order
Queues
Телеметрия и аналитика
Мульти-тенант сценарии
Device handles/tags DBs
PNS feedback
processing
22. Пора узнать облако ближе
Информационный портал http://AzureHub.ru
Все о Windows Azure на русском языке
Группа Windows Azure для всех
http://facebook.com/groups/azurerus/
Горячая линяя с экспертами
azurerus@microsoft.com
Пора попробовать Windows Azure
http://windowsazure.com/ru-ru/pricing/free-trial/