340 likes | 552 Views
Кросс-платформенные Push - уведомления и Geofencing ? Нет ничего проще с сервисами Microsoft Azure. Денис Кретов {НОТИССИМУС | Технический директор}. Десятки тысяч Push- уведомлений ежедневно. 40+ клиентов Интернет-магазинов. 500К+ установок. Часть 1. Push - уведомления.
E N D
Кросс-платформенныеPush - уведомления и Geofencing? Нет ничего проще с сервисами Microsoft Azure. Денис Кретов {НОТИССИМУС | Технический директор}
Десятки тысяч Push-уведомлений ежедневно 40+ клиентов Интернет-магазинов 500К+ установок
Часть 1. Push - уведомления Все, что вы хотели знать о Push – уведомлениях, но боялись спросить
Принцип работы Push - уведомлений • Регистрируем устройство пользователя в службе уведомлений (Notification Service) и получаем уникальных адрес устройства (devicetoken, Uniform Resource Identifier и т.п.) • Регистрируем уникальных адрес на сервере приложений (Mobile Backend) • Отправляем уведомление из Mobile Backend в Notification Service • Notification Service отправляет уведомление на устройство • Notification Service передает в Mobile Backend информацию о некорректном адресе устройства Клиентское устройство Служба уведомлений (Notification Service) Сервер Приложений (Mobile Backend)
Azure – координационный центр для отправки Push – уведомлений Windows 8 GoogleAndroid iOS Windows Phone Azure Notification Hub Сервер приложений WNS MPNS GSM APNs
Почему Azure Доставка десятков тысяч уведомлений в день iOS Android Win8 WinPhone Готовые библиотеки, Native SDK, Xamarin 693 руб. / 500 000 уведомлений в месяц Масштаби рование Кроссплатофор менность Простота использования Стоимость для клиентов
Этапы разработки для рассылки Push-уведомлений с помощью Azure Разработка сервиса по управлению рассылкой Конфигуриро ваниеNotification Hub-а Разработка клиентской части Сбор и анализ статистики Отладка средствами Visual Studio и Azure Шаг #1 Шаг #2 Шаг #3 Шаг #4 Шаг #5
Конфигурирование Notification Hub-а Подключение сервиса windows notification settings windows phone notification settings (mpns) apple notification settings google cloud messaging settings Azure
Клиентская часть. Xamarin.iOS. //регистрация в Apple Notification Service. UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes); … //Если регистрация в Apple NotificationService прошла успешно public override void RegisteredForRemoteNotifications(UIApplication application, NSDatadeviceToken) { … //регистрация в Azure Hub Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => { … }); }
Клиентская часть. WinPhone8.1 //регистрация в Mobile Phone Notification Service. varchannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); //Подключение к Azure MobileServiceClientmsdevconfClient = new MobileServiceClient( "https://*.azure-mobile.net/", “SecurityKey"); //регистрация channel.Uriв Azure await App.msdevconfClient.GetPush().RegisterNativeAsync(channel.Uri);
Отладка. Рассылка тестовых сообщений.
DEMO Отправка Push – уведомлений на WinPhone 8.1 Денис Кретов
Разработка инструмента по управлению рассылкой. Azure SDK DB База данных для хранения рассылок и статистики Интерфейс по управлению рассылкой, отчеты Сервис отправки уведомлений по расписанию
Интерфейс для управления рассылкой. Ограничения iOS – 256 bytes; Android – 1024 bytes; Windows Phone – 3Kb;
Сервис отправки сообщений. iOS varhub = NotificationHubClient.CreateClientFromConnectionString( [ConnectionString], [NotificationHub]); varalert = string.Format("{{\"aps\":{{\"alert\":\"{0}\"}}}}", text); await hub.SendAppleNativeNotificationAsync(alert);
Сервис отправки сообщений. WinPhone varhub = NotificationHubClient.CreateClientFromConnectionString( [ConnectionString], [NotificationHub]); varalert = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notificationxmlns:wp=\"WPNotification\"><wp:Toast><wp:Text1>Уведомление</wp:Text1><wp:Text2>{0}</wp:Text2><wp:Toast></wp:Notification>", text); await hub.SendMpnsNativeNotificationAsync(alert);
Сбор и анализ статистики. Регистрация устройств.
Сбор и анализ статистики. Количество отправленных сообщений.
Сбор и анализ статистики. Сводный отчет.Проблемы и пути решения. Статистика запусков приложений в разрезе каждой платформы. Фиксируем факт запуска приложения. Windows Azure База данных для хранения статистики Сводный отчет Программный доступ к метрикам через Rest интерфейс. Сводный отчет Notification Hub. Статистика отправленных уведомлений в разрезе каждой платформы.
Сбор и анализ статистики. Сводный отчет. База данных для хранения статистики Сводный отчет
Немного статистики наших клиентов. Самый популярный день недели для рассылки уведомлений Средний процент запусков по отношению к количеству отправленных уведомлений Количество зарегистрированных в Azure устройств Средний рост посещаемости в день рассылки 50K + Пятница 20% на 100%
Персонализированная рассылка Push – уведомлений. При регистрации приложение передает уникальный ID в виде Tag (Tag:”UniqueGuid”) В момент отправки уведомления мы указываем Tag для которого идет рассылка await hub.SendMpnsNativeNotificationAsync(alert, new List()<string>{“UniqueGuid”});
Часть 2. Geofencing Отправка локальных уведомлений в зависимости от местонахождения пользователя.
Рассмотрим два сценария определения местонахождения пользователя GPS Bluetooth LE (iBeacon)
GPS Geofencing Azure Mobile Services Уведомление Мобильное устройство Запрос на уведомление с заданными координатами Background GPS Location Service Широта Долгота Сканирование координат на предмет пересечения областис заданным радиусом Радиус R
GPS Geofencing. Xamarin.iOS protected CLLocationManager _locMgr; publicGeofencingLocationManager(CLCircularRegionclRegion) { _locMgr = new CLLocationManager(); //Определяем область geofencing _locMgr.StartMonitoring(clRegion); //Указываем события в момент входа в область geofencing _locMgr.RegionEntered += HandleRegionEntered; //Указываем события в момент выхода из области geofencing _locMgr.RegionLeft += HandleRegionLeft; }
iBeaconGeofencing Azure Mobile Services Уведомление в соответствии с ID Мобильное устройство Запрос на уведомление, cодержащийID Beacon Bluetooth LE Enabled Сканирование Bluetooth LE устройств на предмет вхождения в область сигнала ID Beacon Сигнал до ~30 м
iBeaconGeofencing. Xamarin.iOS protected CLLocationManager _locMgr; publicGeofencingLocationManager(CLBeaconRegionbeaconRegion) { _locMgr = new CLLocationManager(); // Указываем beacon _locMgr.StartMonitoring(beaconRegion); //Указываем события в момент входа в область beacon _locMgr.RegionEntered += HandleRegionEntered; //Указываем события в момент выхода из области beacon _locMgr.RegionLeft += HandleRegionLeft; } DEMO
iBeaconGeofencing. WinPhone8.1. Скоро. Package.appxmanifest <Capabilities> <m2:DeviceCapability Name="bluetooth.genericAttributeProfile"> <m2:Device Id="any"> <m2:Function Type="serviceId:ID beacon"/></m2:Device> </m2:DeviceCapability></Capabilities> Page.xaml.cs protected override async void OnNavigatedTo(NavigationEventArgs e) { foreach (DeviceInformation di in await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector())){ BluetoothLEDevicebluetoothLEDevice = await BluetoothLEDevice.FromIdAsync(di.Id); } }
Какие задачи в данных сценариях решаетAzure? Azure Mobile Services. База данных проекта Единый API для связи между базой данных и мобильными приложениями Отправка Push-уведомлений
DEMO • Bluetooth LE в связке с iPhone, Xamarinи Visual Studio Денис Кретов
Спасибо за внимание! Денис Кретов {НОТИССИМУС, Технический директор} kretov.d@notissimus.com;http://notissimus.com;http://tapki.com