Upload
fritz-dale
View
69
Download
1
Embed Size (px)
DESCRIPTION
Кросс-платформенные Push - уведомления и Geofencing ? Нет ничего проще с сервисами Microsoft Azure. Денис Кретов {НОТИССИМУС | Технический директор}. Десятки тысяч Push- уведомлений ежедневно. 40+ клиентов Интернет-магазинов. 500К+ установок. Часть 1. Push - уведомления. - PowerPoint PPT Presentation
Citation preview
msdevcon.ru #msdevcon
%@@ 0?< 0!$ $11 0>$ 1 1@1 <1 #0?100?1!<<%% 1%!? $?#1 !#0 0 0?0>% 00 > 1 %$ 1 %0 00@! 1 %111 !# < >1% ? 01 <0 %#10$@ 0>011 >11 @% %0 10%010@# ?#< %@< !11! !0?01 1 $>>% %## #1><%0@ 1 @#@0 ?!> 11 <%%@0!0?0 0# !1 ?!! $>< >0 1! #1<?0? <<1@ <0>0 0 0$$ > ###%0%01 !1 0 @ #10# % 1 0@#1 1@0 <1 >#1 % #1 %?%@1<0?>>1 %>1 !0 ?0?%@ #00 @01 0# > >1%! 0>01 11 1 @ 0<0 0!1%$1<$11# @ > 0 <# $> @?!1 ?$1001 >> ?00 %0 1#< 00%10#0?# %1$ #1% 1@ <$ 01 > 1!< 101 00>>>1! 0 11@@< $1@ >!< #@ 0 00 # $!$1 >@#>$00 > 0 %11 01 00# 1$ 1 <?%1#0 1 $10 0> > !$ %<1?0 11 $>$ #0%% >0$ > !1@1 110> # ?> # >>01 < <0010 !01!>>$$!< >110 1# # ! 0 1 #> $0$@ % 100 !10 !@ 00%?< ><%@!% 11 !>!@ >1 $10>0 > 0 0$ ??10 ## ?1 ?? 10$@@ 10>!#< ?00! 1><0 @> %01 ?>0 @% # 1@01<100% 11 01 < ? 0?>% $ 1 1% >0#1? ## ?!0# 10 0#$ 1><101 !?0? 0#0 @<0@ 0 1 >0 1$?1<< 1 11@1 !> %?1<># %> 011 !@!##0 #0<%@ %! $< $!? $ 1! @0#1 @#1 $@@ %?1<0@
Кросс-платформенные Push - уведомления и Geofencing? Нет ничего проще с сервисами Microsoft Azure.
Денис Кретов {НОТИССИМУС | Технический директор}
1! @0#1 @#1 %@@ 0?< 0!$ $11 0>$ 1 1@1 <1 #0?100?1!<<%% 1%!? $?#1 !#0 0 0?0>% 00 > 1 %$ 1 %0 00@! 1 %111 !# < >1% ? 01 <0 %#10$@ 0>011 >11 @% %0 10%010@# ?#< %@< !11! !0?01 1 $>>% %## #1><%0@ 1 @#@0 ?!> 11 <%%@0!0?0 0# !1 ?!! $>< >0 1! #1<?0? <<1@ <0>0 0 0$$ > ###%0%01 !1 0 @ #10# % 1 0@#1 1@0 <1 >#1 % #1 %?%@1<0?>>1 %>1 !0 ?0?%@ #00 @01 0# > >1%! 0>01 11 1 @ 0<0 0!1%$1<$11# @ > 0 <# $> @?!1 ?$1001 >> ?00 %0 1#< 00%10#0?# %1$ #1% 1@ <$ 01 > 1!< 101 00>>>1! 0 11@@< $1@ >!< #@ 0 00 # $!$1 >@#>$00 > 0 %11 01 00# 1$ 1 <?%1#0 1 $10 0> > !$ %<1?0 11 $>$ #0%% >0$ > !1@1 110> # ?> # >>01 < <0010 !01!>>$$!< >110 1# # ! 0 1 #> $0$@ % 100 !10 !@ 00%?< ><%@!% 11 !>!@ >1 $10>0 > 0 0$ ??10 ## ?1 ?? 10$@@ 10>!#< ?00! 1><0 @> %01 ?>0 @% # 1@01<100% 11 01 < ? 0?>% $ 1 1% >0#1? ## ?!0# 10 0#$ 1><101 !?0? 0#0 @<0@ 0 1 >0 1$?1<< 1 11@1 !> %?1<># %> 011 !@!##0 #0<%@ %! $< $!? $
40+ клиентовИнтернет-магазинов
500К+ установок
Десятки тысяч Push-уведомлени
йежедневно
Часть 1. Push - уведомления
Все, что вы хотели знать о Push – уведомлениях, но боялись спросить
Принцип работы Push - уведомлений
Служба уведомлени
й(Notification
Service)
Сервер Приложени
й(Mobile
Backend)
Клиентское устройство
Регистрируем устройство пользователя в службе уведомлений (Notification Service) и получаем уникальных адрес устройства (devicetoken, Uniform Resource Identifier и т.п.)Регистрируем уникальных адрес на сервере приложений (Mobile Backend)Отправляем уведомление из Mobile Backend в Notification ServiceNotification Service отправляет уведомление на устройствоNotification Service передает в Mobile Backend информацию о некорректном адресе устройства
Azure – координационный центр для отправки Push – уведомлений
APNs
Azure Notification Hub
Сервер приложени
й
iOS Windows 8
WNS MPNS GSM
Windows PhoneGoogleAndroid
Почему Azure
Масштабирование
Доставкадесятков
тысячуведомлений
в день
Кроссплатоформенность
iOSAndroid
Win8WinPhone
Простота использования
Готовыебиблиотеки,Native SDK,
Xamarin
Стоимость для клиентов
693 руб. /500 000
уведомленийв месяц
Этапы разработки для рассылки Push-уведомлений с помощью Azure
Шаг #1
Конфигурирование Notification
Hub-а
Шаг #2
Разработка клиентской
части
Шаг #3
Отладка средствами Visual Studio
и Azure
Шаг #4
Разработка сервиса
по управлению рассылкой
Шаг #5
Сбор и анализ
статистики
Конфигурирование Notification Hub-а
Подключение сервиса
windows notification settings
windows phone notification settings (mpns)
apple notification settings
google cloud messaging settingsAzure
Клиентская часть. Xamarin.iOS.//регистрация в Apple Notification Service. UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes); …//Если регистрация в Apple Notification Service прошла успешно
public override void RegisteredForRemoteNotifications(UIApplication
application, NSData deviceToken){ … //регистрация в Azure Hub Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => { …
});}
Клиентская часть. WinPhone 8.1//регистрация в Mobile Phone Notification Service. var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
//Подключение к AzureMobileServiceClient msdevconfClient = new MobileServiceClient( "https://*.azure-mobile.net/", “SecurityKey");
//регистрация channel.Uri в Azureawait App.msdevconfClient.GetPush().RegisterNativeAsync(channel.Uri);
Отладка. Рассылка тестовых сообщений.
Отправка Push – уведомлений на WinPhone 8.1
DEMO
Денис Кретов
Разработка инструмента по управлению рассылкой.
Сервис отправки уведомлений по
расписанию
База данных для хранения рассылок и статистики
Интерфейспо управлению
рассылкой, отчеты
DB
Azure SDK
Интерфейс для управления рассылкой.
Ограничения
iOS – 256 bytes;
Android – 1024
bytes;
Windows Phone –
3Kb;
Сервис отправки сообщений. iOS
var hub =
NotificationHubClient.CreateClientFromConnectionString(
[ConnectionString], [NotificationHub]);
var alert = string.Format("{{\"aps\":{{\"alert\":\"{0}\"}}}}",
text);
await hub.SendAppleNativeNotificationAsync(alert);
Сервис отправки сообщений. WinPhonevar hub = NotificationHubClient.CreateClientFromConnectionString(
[ConnectionString], [NotificationHub]);
var alert = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?
><wp:Notification
xmlns:wp=\"WPNotification\"><wp:Toast><wp:Text1>Уведомление</
wp:Text1><wp:Text2>{0}</wp:Text2><wp:Toast></wp:Notification>",
text);
await hub.SendMpnsNativeNotificationAsync(alert);
Сбор и анализ статистики. Регистрация устройств.
Сбор и анализ статистики. Количество отправленных сообщений.
Сбор и анализ статистики. Сводный отчет. Проблемы и пути решения.
Windows Azure
Notification Hub. Статистика отправленных уведомлений в разрезе каждой платформы.
Сводный отчет
Статистика запусковприложений в разрезе каждой платформы. Фиксируем факт запуска приложения.
Программный доступ к метрикам через Rest интерфейс.
База данных для хранения статистики
Сводный отчет
Сбор и анализ статистики. Сводный отчет.
Сводный отчет
База данных для хранения статистики
Немного статистики наших клиентов.
50K +
Количество зарегистриро
ванных в Azure
устройств
Пятница
Самый популярныйдень неделидля рассылкиуведомлений
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
BackgroundGPS Location
Service Широта Долгота
Радиус R
Сканированиекоординат на предмет пересеченияобласти с заданным радиусом
Запрос на уведомление с заданными координатами
Уведомление
GPS Geofencing. Xamarin.iOSprotected CLLocationManager _locMgr;public GeofencingLocationManager(CLCircularRegion clRegion){
_locMgr = new CLLocationManager();//Определяем область geofencing_locMgr.StartMonitoring(clRegion);//Указываем события в момент входа в область geofencing _locMgr.RegionEntered += HandleRegionEntered; //Указываем события в момент выхода из области geofencing_locMgr.RegionLeft += HandleRegionLeft;
}
iBeacon Geofencing
Мобильное устройство
Azure Mobile Services
Bluetooth LEEnabled ID BeaconСканирование
Bluetooth LE устройств на предмет вхожденияв область сигнала
Запрос на уведомление, cодержащий ID Beacon
Уведомлениев соответствии с ID
Сигнал до ~30 м
iBeacon Geofencing. Xamarin.iOSprotected CLLocationManager _locMgr;public GeofencingLocationManager(CLBeaconRegion beaconRegion){
_locMgr = new CLLocationManager();// Указываем beacon _locMgr.StartMonitoring(beaconRegion);//Указываем события в момент входа в область beacon _locMgr.RegionEntered += HandleRegionEntered; //Указываем события в момент выхода из области beacon_locMgr.RegionLeft += HandleRegionLeft;
} DEMO
iBeacon Geofencing. WinPhone 8.1. Скоро.
<Capabilities>
<m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
<m2:Device Id="any">
<m2:Function Type="serviceId:ID beacon"/></m2:Device>
</m2:DeviceCapability></Capabilities>
Package.appxmanifest
protected override async void OnNavigatedTo(NavigationEventArgs e) {
foreach (DeviceInformation di in await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector())){
BluetoothLEDevice bluetoothLEDevice = await BluetoothLEDevice.FromIdAsync(di.Id);
}
}
Page.xaml.cs
Какие задачи в данных сценариях решает Azure? Azure Mobile Services.
База данных проекта
Единый API для связи между базой
данных и мобильными
приложениями
Отправка Push-уведомлений
Bluetooth LE в связке с iPhone, Xamarin и Visual Studio
DEMO
Денис Кретов
Спасибо за внимание!
Денис Кретов{НОТИССИМУС, Технический директор}
[email protected]; http://notissimus.com; http://tapki.com
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.