DevCon 2016 - Xamarin

Preview:

Citation preview

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