Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

46
www.bestppt.com Xamarin FROM ZERO TO HERO 29 september 2016

Transcript of Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Page 1: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

Xamarin

FROM ZERO TO HERO

29 september 2016

Page 2: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

INTRODUCTIE

2

Gerald Versluis@jfversluis

blog.verslu.is

[email protected]

Page 3: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

INTRODUCTIE

3

Gerald Versluis@jfversluis

blog.verslu.is

[email protected]

Page 4: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

XAMARIN: FROM ZERO TO HERO

Alles wat je nodig hebt om te beginnen met Xamarin development

Page 5: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Op de agenda…

5

1 Wat is Xamarin? Hoe onderscheidt Xamarin zich van de rest?

Xamarin

2 Wat is Xamarin.Forms? Hoe werkt het? Wat zijn de mogelijkheden?

Xamarin.Forms

3 DependencyService, Custom RenderersDeep dive

4 Niet te missen NuGet packages voor het ontwikkelen met Xamarin

NuGet Nuggets

5 Samenvatting, lessons learned, applaus en borrelen!

It’s a wrap

Page 6: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

XAMARIN Wat is dat nou eigenlijk?

Page 7: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Xamarin is a better way to…

7

Build Test Monitor

Page 8: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Verschillende manieren van ontwikkelen

8

Bouw dezelfde app meerdere keren

• Meerdere teams• Meerdere code bases• Verschillende tools en talen

silo/vendor

Page 9: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Verschillende manieren van ontwikkelen

9

Bouw één app voor alle platformen

• Grootste gemene deler• Browser fragmentatie• Cordova, PhoneGap• Updates niet altijd via de App Store

hybride

Page 10: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Verschillende manieren van ontwikkelen

10

Bouw één app voor alle platformen

• Native User Interface• Native Performance• Gedeelde code over alle platformen• C# & .NET Framework (inclusief C# 6.0!)• Full API Coverage

Xamarin way

Page 11: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Waarom Xamarin?

11Ontwikkel alles in C#

C# draait op 2,6 miljard apparaten

Page 12: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Waarom Xamarin?

12

Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store.

Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device. “

Native performance

Page 13: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe doet Xamarin het?

13

.NET + Windows APIs

Page 14: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe doet Xamarin het?

14

.NET + iOS APIs | 100% coverage

Page 15: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe doet Xamarin het?

15

.NET + Android APIs | 100% coverage

Page 16: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe gebruik je Xamarin?

16

Xamarin StudioWindows of Mac

Visual Studio 2010+ Windows

Page 17: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe gebruik je Xamarin?

17

Visual Studio

Alles werkt zoals je gewend bent

• Alle platformen in een solution• Solution te openen in VS & XS• Alle Visual Studio plug-ins te gebruiken• iOS & Android designer

Page 18: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Hoe gebruik je Xamarin?

18

Xamarin Studio

Geoptimaliseerd voor cross-platform development

• Visual Studio kloon inclusief meeste belangrijke features• iOS & Android designer• Snelheid!

Page 19: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Xamarin apps te distribueren via App Stores

19

Page 20: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

20

Anything you can do in Objective-C, Swift, or Java can be done in C# with Xamarin (using Visual Studio)“

Page 21: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Enter Microsoft

21

GratisOpen-source

live inspector

Insights -> HockeyApp

Page 22: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

Demo

Page 23: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

XAMARIN.FORMS Nu met nog meer gedeelde code!

Page 24: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Wat is Xamarin.Forms?

24

Cross-platform UI framework te gebruiken op:

• Android 4.0+• iOS 6.1+• Windows Phone 8.x

(Silverlight)• Windows Phone 8.1 (RT)• Windows 10 (UWP)

Page 25: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Traditionele Xamarin vs. Xamarin.Forms

25

Shared UI Code

Up to 99% code sharing, always some specific (initialisation) code.60-80% code sharing

Page 26: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

What’s included?

26

• 40+ Pages, Layouts en Controls• Te gebruiken vanuit code of XAML

• Two-way Data Binding• Navigation• Animation API• Dependency Service• Messaging Center

“If you are used to MVVM development you should feel right at home

Page 27: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

What’s included?

27

Pages

Page 28: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

What’s included?

28

Layouts

Page 29: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

What’s included? (worst slide ever…)

29

Controls

ActivityIndicator BoxView Button DatePicker Editor

Entry Image Label ListView Map

OpenGLView Picker ProgressBar SearchBar Slider

Stepper TableView TimePicker WebView EntryCell

ImageCell SwitchCell TextCell ViewCell

Page 30: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Xamarin.Forms in actie

30

Use a single API to generate native, platform-specific user interfaces

At runtime, each Xamarin.Forms page and its controls are mapped to platform-specific native user interface elements

Page 31: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Xamarin.Forms in actie

31

Page 32: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

To Forms or not to Forms?

32

Xamarin.Forms best geschikt voor:

• Weinig platform specifieke functionaliteit

• Code sharing over custom UI• Ontwikkelaars met XAML kennis

Xamarin.iOS/Android best geschikt voor:

• Veel platform specifieke functionaliteit

• Custom UI over code sharing• Veel gebruik van native APIs

Page 33: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Platform specifiek

33

Platform specifieke code uitvoeren middels delegates

Kan gebruikt worden om per platform een specifieke waarde te voorzien

Device.OnPlatform

Page 34: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Platform specifiek

34

Detecteren op welk besturingssysteem de app draait of wat voor apparaat

Device

Page 35: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Ingebouwde platform specifieke features

35

Device.OpenUriOpenen van een URL

Page.DisplayAlertToont een messagebox

Device.StartTimer Acties uitvoeren op interval

Device.BeginInvoke

OnMainThread

UI thread marshalling

Xamarin.Forms.Maps

Toont kaarten en locatiediensten

Page 36: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

Demonstratie

Page 37: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

Deep dive Wat meer geavanceerde onderwerpen

Page 38: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

DependencyService

38

Service locator maakt platform specifieke code mogelijk door abstractie

Page 39: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

DependencyService

39

Implementeer de interface in het platform project

Registreer deze bij de DependencyService (boven namespace)

Roep abstractie aan vanuit gedeelde code

Page 40: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

MyFirstEntry_Android

Xamarin.Platform. Android.EntryRenderer

MyFirstEntry_iOS

Xamarin.Platform. iOS.EntryRenderer

Custom Renderers

40

Maak je eigen implementatie van hoe een control naar native wordt vertaald

Entry MyFirstEntry

Xamarin.Platform. Windows.EntryRenderer

MyFirstEntry_WinPhone

Page 41: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

NuGet Nuggets Met deze NuGet packages wordt het ontwikkelen nóg makkelijker

Page 42: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

NuGet packages die we allemaal zouden moeten gebruiken!

42

Xamarin.Plugins.Settings Simple type (user) settings

Xamarin.Plugins.Connectivity Network connectivity

ACR.UserDialogs Alerts, loading, ActionSheets

FreshMvvm Lightweight, easy to use MVVM framework

PropertyChanged.Fody INotifyPropertyChanged made easy

FFImageLoading Image caching, effects, etc.

Polly Fluent exception handling

Refit Type-safe REST library

Let op! Bij Forms vaak packages ook installerenop platform project!

Page 43: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

www.bestppt.com

It’s a wrap Nog héél even volhouden…

Page 44: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Lessons learned

44

1 Do not underestimate publishing

2 Upgrading? Backup!

3

4

Test altijd op een fysiek apparaat

Weinig grip op je app in het wild

Page 45: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

Leuk voor thuis

45

1Xamarin documentatie

2Xamarin forums

3

4

5

https://developer.xamarin.com/

https://forums.xamarin.com/

Xamarin GitHub

https://github.com/xamarin/

Planet Xamarin

http://planet.xamarin.com/

Xamarin University

https://www.xamarin.com/university

Page 46: Xamarin: From Zero to Hero: KEMBIT Meetup 29 september 2016

#schaamtelozezelfpromotie

46

Gerald Versluis@jfversluis

blog.verslu.is

[email protected]

From Legislation to Organisation Privacy by Design 101

17 November - Michel Gulpen