devcon 2016 - xamarin
TRANSCRIPT
#msdevcon
Windows & More Personal Computing
Xamarin: обзор технологии и погружение в разработку решенийАнтон Шунков, Технический евангелист – MicrosoftВячеслав Черников, Руководитель отдела разработки – BinwellДенис Кретов, Технический директор – Notissimus
#msdevcon
Цели
Что такое Xamarin?
Как создать свое
приложение?
Наибольший общий
делитель?Лучшие практики от
экспертовКак использовать все
уникальные фичи каждой платформы
Обзор новой технологии в семье Microsoft
#msdevcon
Будущее приложенийАнтон ШунковTechnical Evangelist, Microsoft
И не отстает от нововведен
ий платформы
Приложение моей мечты
Которое работает на
всех платформах
Нэйтив приложени
е с идеальным рейтингом
Использует все фичи
платформы
BUILD TEST MONITOR
ACCELERATE
Все, что нужно для мобильной разработки
Xamarin 4
BUILD TEST
MONITOR
ACCELERATE
Нэйтив приложения на всех платформах
Как устроен Xamarin
Общий код на C# • 100% покрытие API • Высокая производительность
iOS C# UI
Windows C# UIAndroid C# UI
Общая логика на C#
Xamarin и Xamarin.Forms
Традиционный Xamarin Xamarin.Forms
Общая C# логика
Общий UI код
iOS C# UI Android C# UI Windows C# UI
Общая C# логика
Windows API
Microsoft.Phone Microsoft.Networking
Windows.Storage
Windows.Foundation
Microsoft.Devices
System.Data System.Windows
System.Numerics System.Core System.ServiceMod
el
System.Net System System.IO System.Linq System.Xml
iOS – 100% покрытие API
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows
System.Numerics System.Core System.ServiceMod
el
System.Net System System.IO System.Linq System.Xml
Android – 100% покрытие API
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows
System.Numerics System.Core System.ServiceMod
el
System.Net System System.IO System.Linq System.Xml
Xamarin.iOS использует полную Ahead Of Time (AOT) компиляцию для создания пакета для Apple App Store.
Xamarin.Android использует Just In Time (JIT) компиляцию на Android устройствах.
.NET
C#
Compile
and Link.APK
Bindings
IL+ JIT
Runs Native
ly
Высокая производительность
Интеграция с Visual Studio
Какой Xamarin лучше для вашего приложения?
Xamarin.Forms прекрасен для:
Xamarin.iOS / Xamarin.Android лучше для:
• Приложений не использующих особые фичи разных платформ
• Приложений, в которых желательно максимизировать общий кода
• Приложений с множеством форм
• Прототипирования
Learn more: xamarin.com/forms
Learn more: xamarin.com/platform
• Приложений использующих максимум функционала разных платформ
• Приложений с дизайном по всем гайдлайном платформы
• Приложений, в которых UX гораздо важнее доли общего кода
#msdevcon
Разработка мобильных приложений с помощью Xamarin и MvvmCross.
Денис Кретов, Руководитель отдела разработкиМаксим Евтух, Разработчик Xamarin
Исходные коды доступны по адресу https://github.com/pocheshire/MobiusDemo
#msdevcon
NOTISSIMUS
• Разрабатываем на Xamarin более 3 – х лет.• Запустили 50+ проектов• Разработали отраслевое решение для Интернет-Магазинов на базе
Xamarin• Внедряем решения на базе iBeacon и Eddystone
Наша специализация
#msdevcon
Кросс-платформенная разработка мобильных приложений.Какой технологии отдать предпочтение?
#msdevcon
Native SDK.Плюсы.
Минусы.
• Они нативные! • Интеграция с аппаратной
частью без ограничений• Высокая скорость работы • Минимальный размер
приложения
• Поддержка двух и более веток кода при разработке на разные платформы.
• Время работ(трудозатраты) увеличивается пропорционально количеству платформ
#msdevcon
Html 5.Плюсы.
Минусы.
• Лёгкое вхождение для веб-разработчиков
• Быстрая и как следствие более дешевая разработка
• Единая база кода
• Плохая производительность UI
• Чужеродность UI• Отсутствие средств
разработки и отладки “из коробки”
• Ограниченный доступ к аппаратным возможностям
#msdevcon
Xamarin.Плюсы.
Минусы.
• Нативный UI• 70-80% единой базы кода
между платформами• Единый язык
программирования (C#)• Полноценная поддержка в
VisualStudio
• Не всегда успевает за нативными SDK
• Для компиляции под iOS нужен Mac
• Размер приложения в 1,5 раза больше чем native
Xamarin + MvvmCross
Общая логика на C# 60/70 %
iOS C# UI
Android C# UI
Windows C# UI
Общая логика UI
• Кросс-платформенная инфраструктура MVVM
• С открытым исходным кодом• Dependency Injection built-in • Большое количество написанных
плагинов
#msdevcon
MvvmCross доступна для• Xamarin.iOS• Mac• Xamarin.Android• Windows Presentation Foundation• Windows Phone• Windows 8• Universal Windows Platform
Вспомним про паттерныMVC MVP MVV
MVIEW
CONTROLLER
MODEL
INPUT
1
*VIEW
PRESENTER
MODEL
INPUT
1
1VIEW
VIEWMODEL
MODEL
1
*INPUT
#msdevcon
Преимущества MVVM• Максимальное
разделение логики• Повторное
использование кода для работы с UI
• Широкие возможности по тестированию
ModelБизнес
логика и данные
View ModelЛогика
отображения данных на
UI
ViewИнтерфейс
пользователя
Данные.Запись.
Данные.Изменение.
Команды и связывание данных.
ViewModelprivate async void LoadContent(){ Loading = true; … Загрузка данных Loading = false;} public ICommand BasketCommand{ get{ return new MvxCommand(() =>
ShowViewModel<BasketViewModel>());}} private bool _loading;public bool Loading{ get { return _loading; } set { _loading = value; RaisePropertyChanged(() => Loading); }}
Купить
View iOSТолько C#
protected UIActivityIndicatorView _loading;protected UIButton _basketButton;
var set = this.CreateBindingSet<ProductViewController, ProductViewModel>(); set.Bind(loading).For("Hidden").To(vm => vm.Loading);set.Bind(_basketButton).To(vm => vm.BasketCommand);set.Apply();
View AndroidБез C#, только XML
<xmlns:local="http://schemas.android.com/apk/res-auto"<ProgressBar local:MvxBind=“Visibility Visibility(Loading)“/><Button local:MvxBind=“Click BasketCommand“/>
#msdevcon
Демонстрация
Live DemoМобильное решение с использованием iBeacon, Xamarin, MVVMCross, Azure и Яндекс.Денег
MICROSOFT CONF IDENT IAL – INTERNAL ONLY
Схема решения.
Мобильное устройство
Azure Mobile Services
Bluetooth LEEnabled BeaconСканирование
Bluetooth LE устройств на предмет вхожденияв область сигнала
Запрос на уведомление, cодержащийUUID Beacon
Уведомлениев соответствии с UUID, открываем карточку товара
Сигнал до ~30 м
MICROSOFT CONF IDENT IAL – INTERNAL ONLY
Схема решения. Часть II.
Мобильное Приложение
Карточка ТовараКупит
ь
Веб Форма Яндекс Денег
Данные кредитнойкарты
Подтвер-ждение оплаты
API.Яндекс Денег
iBeacon.• “Beacon”(англ.) – радиомаяк• Основа Bluetooth Low Energy ,
часть Bluetooth 4.0• Низкое энергопотребление • Радиус вещания – 30 метров
в хороших условиях• Передаваемая информация:
Идентификатор (UUID, Major, Minor)
• Bluetooth Low Energy
• Xamarin + MvvmCross
• Azure
• API Яндекс.Денег
Технологии.
#msdevcon
Разработка приложений для Apple Watch и Android Wear Вячеслав ЧерниковРуководитель отдела разработки, Binwell Ltd.
Смарт-часыЧто такое смарт-часы?Дополнительный экран для смартфонаДополнительный орган управления для смартфона
ЗадачиБыстрый просмотр информации Быстрое управление приложением на смартфоне
ОграниченияРазмер экрана Тачскрин и органы управленияВремя контакта с пользователем
Основные сценарииМониторинг здоровья и активностиНа основе показаний сенсоров
Управление окружениемЧерез смартфон, подключенный к сети устройств (IoT)
Бизнес-задачиПросмотр уведомлений, статусов и краткой информации
РазвлеченияИгры и мультимедиа
#msdevcon
Xamarin для Android Wear
Особенности Xamarin для Android WearПочти все возможности AndroidВсе принципы и подходы разработки Android-приложений применимы к Android Wear
Устанавливаем Android 4.4W SDKИ не забываем про симуляторы. Есть поддержка x86
Companion AppПриложение для Wear идет вместе с хост-приложением на смартфоне
#msdevcon
Демонстрация
Live DemoСоздаем приложение для Android Wear на Xamarin
#msdevcon
Xamarin для Apple Watch
Особенности Xamarin для Apple WatchwatchOS 2Нативные приложения, больше контролов и поддержка анимаций
Xamarin watchOS 2 PreviewXamarin пока поддерживает работу с watchOS 2 только на симуляторе
Watch ConnectivityДля взаимодействия с хост-приложением
#msdevcon
Демонстрация
Live DemoСоздаем приложение для Apple Watch на Xamarin
#msdevcon
Как предусмотреть всеАнтон ШунковTechnical Evangelist, Microsoft
Xamarin Family
BUILD
TEST MONITOR
ACCELERATE
Качество мобильного аппа это сложно
7 Версий OS20 Устройств20 Языков35 Локалей6 Размеров
экрана
10 Версий OS24K+ Различных устройств39 Языков57 Локалей27 Размеров экрана15 Производителей
Разнообразие Android’a
Разнообразие iOS3D TouchiPhone 6s s eries only
Apple penciliPad Pro only
Multi TaskingOnly select
iPads
iPads
iPod touch
iPhones
Form factors
iOS 9 features
Тысячи API Андроида и iOS
Публичные веб API
Интеграции с бэкендом
Сторонние библиотеки
Компоненты устройств
Сложность приложений
Tap
Scroll
Swipe
Pinch Multi Finger
Text Entry
Rotation
GPS
xamarin.com/testcloud
Xamarin Family
BUILD
TEST
MONITOR
ACCELERATE
Поддержка платформ
✓ Xamarin.iOS✓ Xamarin.Android✓ Xamarin.Mac✓ Windows Phone✓ Windows Store✓ Windows Desktop
Xamarin Insights
//Crash Report Insights.Report(exception);
//Feature Usage Insights.Track(“Splash Page”);
//Timed Events Insights.TrackTime(“TimeToSync”);
//User Sessions Insights.Identify(“Steve”, user_traits);
Xamarin Insights API
Отслеживание всех событий и их длятельности
Xamarin Insights – Отслеживание событий
Совмещение отслеживания событий с личностью пользователя для ускоренного исправления проблем
Xamarin Insights – Идентификация
Автоматическое логгирование всех не словленных исключений
Xamarin Insights - Отчеты
Интеграция с популярными инструментами разработки
Xamarin Insights - Интеграции
Xamarin Family
BUILD
TEST
MONITOR
ACCELERATE
Xamarin University
Более 60 занятий
Гостевые лекции от
признанных экспертов
Блиц лекции: максимум знаний в коротком формате
Станьте сертифицированным Xamarin
экспертом
#msdevcon
Что дальше
Вы во всеоружии
Берите от каждой
платформы все
Show must go on!
Не ограничивайте свое приложение
функционалом, присутствующим на всех
платформах
Мы переходим в зону QA.
Вы всегда можете написать нам на почту,
если у вас будут вопросы
Приходите вечером на круглые столы с
экспертами.
Вы готовы делать лучшие кросс-
платформенные приложения
#msdevcon
Q&A
Xamarin: обзор технологии и погружение в разработку решенийАнтон Шунков, Технический евангелист – MicrosoftВячеслав Черников, Руководитель отдела разработки – BinwellДенис Кретов, Технический директор – Notissimus
© 2016 Microsoft Corporation. All rights reserved.