34
msdevcon.ru #msdevcon

Денис Кретов {НОТИССИМУС | Технический директор}

Embed Size (px)

DESCRIPTION

Кросс-платформенные Push - уведомления и Geofencing ? Нет ничего проще с сервисами Microsoft Azure. Денис Кретов {НОТИССИМУС | Технический директор}. Десятки тысяч Push- уведомлений ежедневно. 40+ клиентов Интернет-магазинов. 500К+ установок. Часть 1. Push - уведомления. - PowerPoint PPT Presentation

Citation preview

Page 1: Денис Кретов  {НОТИССИМУС | Технический директор}

msdevcon.ru #msdevcon

Page 2: Денис Кретов  {НОТИССИМУС | Технический директор}

%@@ 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.

Денис Кретов {НОТИССИМУС | Технический директор}

Page 3: Денис Кретов  {НОТИССИМУС | Технический директор}

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-уведомлени

йежедневно

Page 4: Денис Кретов  {НОТИССИМУС | Технический директор}

Часть 1. Push - уведомления

Все, что вы хотели знать о Push – уведомлениях, но боялись спросить

Page 5: Денис Кретов  {НОТИССИМУС | Технический директор}

Принцип работы Push - уведомлений

Служба уведомлени

й(Notification

Service)

Сервер Приложени

й(Mobile

Backend)

Клиентское устройство

Регистрируем устройство пользователя в службе уведомлений (Notification Service) и получаем уникальных адрес устройства (devicetoken, Uniform Resource Identifier и т.п.)Регистрируем уникальных адрес на сервере приложений (Mobile Backend)Отправляем уведомление из Mobile Backend в Notification ServiceNotification Service отправляет уведомление на устройствоNotification Service передает в Mobile Backend информацию о некорректном адресе устройства

Page 6: Денис Кретов  {НОТИССИМУС | Технический директор}

Azure – координационный центр для отправки Push – уведомлений

APNs

Azure Notification Hub

Сервер приложени

й

iOS Windows 8

WNS MPNS GSM

Windows PhoneGoogleAndroid

Page 7: Денис Кретов  {НОТИССИМУС | Технический директор}

Почему Azure

Масштабирование

Доставкадесятков

тысячуведомлений

в день

Кроссплатоформенность

iOSAndroid

Win8WinPhone

Простота использования

Готовыебиблиотеки,Native SDK,

Xamarin

Стоимость для клиентов

693 руб. /500 000

уведомленийв месяц

Page 8: Денис Кретов  {НОТИССИМУС | Технический директор}

Этапы разработки для рассылки Push-уведомлений с помощью Azure

Шаг #1

Конфигурирование Notification

Hub-а

Шаг #2

Разработка клиентской

части

Шаг #3

Отладка средствами Visual Studio

и Azure

Шаг #4

Разработка сервиса

по управлению рассылкой

Шаг #5

Сбор и анализ

статистики

Page 9: Денис Кретов  {НОТИССИМУС | Технический директор}

Конфигурирование Notification Hub-а

Подключение сервиса

windows notification settings

windows phone notification settings (mpns)

apple notification settings

google cloud messaging settingsAzure

Page 10: Денис Кретов  {НОТИССИМУС | Технический директор}

Клиентская часть. 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) => { …

});}

Page 11: Денис Кретов  {НОТИССИМУС | Технический директор}

Клиентская часть. 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);

Page 12: Денис Кретов  {НОТИССИМУС | Технический директор}

Отладка. Рассылка тестовых сообщений.

Page 13: Денис Кретов  {НОТИССИМУС | Технический директор}

Отправка Push – уведомлений на WinPhone 8.1

DEMO

Денис Кретов

Page 14: Денис Кретов  {НОТИССИМУС | Технический директор}

Разработка инструмента по управлению рассылкой.

Сервис отправки уведомлений по

расписанию

База данных для хранения рассылок и статистики

Интерфейспо управлению

рассылкой, отчеты

DB

Azure SDK

Page 15: Денис Кретов  {НОТИССИМУС | Технический директор}

Интерфейс для управления рассылкой.

Ограничения

iOS – 256 bytes;

Android – 1024

bytes;

Windows Phone –

3Kb;

Page 16: Денис Кретов  {НОТИССИМУС | Технический директор}

Сервис отправки сообщений. iOS

var hub =

NotificationHubClient.CreateClientFromConnectionString(

[ConnectionString], [NotificationHub]);

var alert = string.Format("{{\"aps\":{{\"alert\":\"{0}\"}}}}",

text);

await hub.SendAppleNativeNotificationAsync(alert);

Page 17: Денис Кретов  {НОТИССИМУС | Технический директор}

Сервис отправки сообщений. 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);

Page 18: Денис Кретов  {НОТИССИМУС | Технический директор}

Сбор и анализ статистики. Регистрация устройств.

Page 19: Денис Кретов  {НОТИССИМУС | Технический директор}

Сбор и анализ статистики. Количество отправленных сообщений.

Page 20: Денис Кретов  {НОТИССИМУС | Технический директор}

Сбор и анализ статистики. Сводный отчет. Проблемы и пути решения.

Windows Azure

Notification Hub. Статистика отправленных уведомлений в разрезе каждой платформы.

Сводный отчет

Статистика запусковприложений в разрезе каждой платформы. Фиксируем факт запуска приложения.

Программный доступ к метрикам через Rest интерфейс.

База данных для хранения статистики

Сводный отчет

Page 21: Денис Кретов  {НОТИССИМУС | Технический директор}

Сбор и анализ статистики. Сводный отчет.

Сводный отчет

База данных для хранения статистики

Page 22: Денис Кретов  {НОТИССИМУС | Технический директор}

Немного статистики наших клиентов.

50K +

Количество зарегистриро

ванных в Azure

устройств

Пятница

Самый популярныйдень неделидля рассылкиуведомлений

20%

Средний процент

запусков по отношению к количеству

отправленных уведомлений

на 100%

Средний рост посещаемост

и в день рассылки

Page 23: Денис Кретов  {НОТИССИМУС | Технический директор}

Персонализированная рассылка Push – уведомлений.

При регистрации приложение передает

уникальный ID в виде Tag (Tag:”UniqueGuid”)

В момент отправки уведомления мы

указываем Tag для которого идет рассылка

await hub.SendMpnsNativeNotificationAsync(alert, new

List()<string>{“UniqueGuid”});

Page 24: Денис Кретов  {НОТИССИМУС | Технический директор}

Часть 2. Geofencing

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

Page 25: Денис Кретов  {НОТИССИМУС | Технический директор}

Рассмотрим два сценария определения местонахождения пользователя

GPS Bluetooth LE (iBeacon)

Page 26: Денис Кретов  {НОТИССИМУС | Технический директор}

GPS Geofencing

Мобильное устройство

Azure Mobile Services

BackgroundGPS Location

Service Широта Долгота

Радиус R

Сканированиекоординат на предмет пересеченияобласти с заданным радиусом

Запрос на уведомление с заданными координатами

Уведомление

Page 27: Денис Кретов  {НОТИССИМУС | Технический директор}

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;

}

Page 28: Денис Кретов  {НОТИССИМУС | Технический директор}

iBeacon Geofencing

Мобильное устройство

Azure Mobile Services

Bluetooth LEEnabled ID BeaconСканирование

Bluetooth LE устройств на предмет вхожденияв область сигнала

Запрос на уведомление, cодержащий ID Beacon

Уведомлениев соответствии с ID

Сигнал до ~30 м

Page 29: Денис Кретов  {НОТИССИМУС | Технический директор}

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

Page 30: Денис Кретов  {НОТИССИМУС | Технический директор}

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

Page 31: Денис Кретов  {НОТИССИМУС | Технический директор}

Какие задачи в данных сценариях решает Azure? Azure Mobile Services.

База данных проекта

Единый API для связи между базой

данных и мобильными

приложениями

Отправка Push-уведомлений

Page 32: Денис Кретов  {НОТИССИМУС | Технический директор}

Bluetooth LE в связке с iPhone, Xamarin и Visual Studio

DEMO

Денис Кретов

Page 33: Денис Кретов  {НОТИССИМУС | Технический директор}

Спасибо за внимание!

Денис Кретов{НОТИССИМУС, Технический директор}

[email protected]; http://notissimus.com; http://tapki.com

Page 34: Денис Кретов  {НОТИССИМУС | Технический директор}

© 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.