Slide 1

Slide 1 text

12.11.14 ExCeL London

Slide 2

Slide 2 text

@slodge developer cirrious

Slide 3

Slide 3 text

@slodge developer cirrious

Slide 4

Slide 4 text

@slodge developer cirrious

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

@slodge developer cirrious

Slide 8

Slide 8 text

What’s it like developing in VS using Xamarin?

Slide 9

Slide 9 text

What are Xamarin.iOS & Xamarin.Android? Microsoft .Net Win32 Mono Unix Xamarin.Android Android Xamarin.iOS iOS C++ COM C++ ObjC Java

Slide 10

Slide 10 text

What are Xamarin.Android & Xamarin.iOS? Native Android and iOS apps written in C# • A .Net runtime on Android and iOS • .Net class libraries (e.g. System.IO.File) • .Net “Bindings” for Java and ObjectiveC objects • Tools (standalone & integrated into VS)

Slide 11

Slide 11 text

Button button = new Button(this); button.setText("Brian Cox"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { label.setText(editText.getText()); } }); layout.addView(button); var button = new Button(this); button.Text = “Brian Cox"; button.Click += (sender, args) => { label.Text = editText.Text; }; layout.AddView(button); C#

Slide 12

Slide 12 text

Button button = new Button(this); button.setText("Brian Cox"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { label.setText(editText.getText()); } }); layout.addView(button); var button = new Button(this); button.Text = “Brian Cox"; button.Click += (sender, args) => { label.Text = editText.Text; }; layout.AddView(button); C# Use common C# CamelCase conventions

Slide 13

Slide 13 text

Button button = new Button(this); button.setText("Brian Cox"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { label.setText(editText.getText()); } }); layout.addView(button); var button = new Button(this); button.Text = “Brian Cox"; button.Click += (sender, args) => { label.Text = editText.Text; }; layout.AddView(button); C# Use properties, not get/set method pairs

Slide 14

Slide 14 text

Button button = new Button(this); button.setText("Brian Cox"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { label.setText(editText.getText()); } }); layout.addView(button); var button = new Button(this); button.Text = “Brian Cox"; button.Click += (sender, args) => { label.Text = editText.Text; }; layout.AddView(button); C# Use C# events instead of listener interfaces

Slide 15

Slide 15 text

var button = new UIButton(new RectangleF(10, 150, 300, 40)); button.SetTitle(“Brian Cox“, UIControlState.Normal); button.TouchUpInside += (sender, args) => { // the action to take }; View.AddSubView(button); C# UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [button addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside]; [button setTitle:@“Brian Cox" forState:UIControlStateNormal]; [view addSubview:button];

Slide 16

Slide 16 text

var button = new UIButton(new RectangleF(10, 150, 300, 40)); button.SetTitle(“Brian Cox“, UIControlState.Normal); button.TouchUpInside += (sender, args) => { // the action to take }; View.AddSubView(button); C# UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [button addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside]; [button setTitle:@“Brian Cox" forState:UIControlStateNormal]; [view addSubview:button]; Use common C# CamelCase conventions Use properties, not get/set method pairs Use C# events instead of delegate protocols

Slide 17

Slide 17 text

var button = new UIButton(new RectangleF(10, 150, 300, 40)); button.SetTitle(“Brian Cox“, UIControlState.Normal); button.TouchUpInside += (sender, args) => { // the action to take }; View.AddSubView(button); C# UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [button addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside]; [button setTitle:@“Brian Cox" forState:UIControlStateNormal]; [view addSubview:button]; Use enum values for constants

Slide 18

Slide 18 text

Search for…. Enter search term Go My Booky Wook 1 My Booky Wook 2 …. A Google Books app www.googleapis.com/books/v1/volumes?q=...

Slide 19

Slide 19 text

What does Xamarin give VS?

Slide 20

Slide 20 text

What does Xamarin give VS? • A .Net RunTime on Android • Android “New Project” templates • C# bindings to Android Java Class Libraries • … with C# semantics • Linq, async, .Net, … • Tools for Compilation, Deployment, Debugging and Publishing • Nuget & components • A fast Android emulator • Excellent docs • An axml designer • Prompt platform updates (phone, tablet, tv, watch…)

Slide 21

Slide 21 text

What does Xamarin give VS? • A .Net RunTime on Android • Android “New Project” templates • C# bindings to Android Java Class Libraries • … with C# semantics • Linq, async, .Net, … • Tools for Compilation, Deployment, Debugging and Publishing • Nuget & components • A fast Android emulator • Excellent docs • An axml designer • Prompt platform updates (phone, tablet, tv, watch…) • A .Net RunTime on iOS • iPhone and iPad “New Project” templates • C# bindings to ObjectiveC Class Libraries • … with C# semantics • Linq, async, .Net, … • Tools for Compilation, Deployment, Debugging and Publishing • Nuget & components • Excellent docs • A storyboard designer • Prompt platform updates (iOS x, 64-bit, AppleWatch?)

Slide 22

Slide 22 text

What does Xamarin give VS? • A .Net RunTime on Android • Android “New Project” templates • C# bindings to Android Java Class Libraries • … with C# semantics • Linq, async, .Net, … • Tools for Compilation, Deployment, Debugging and Publishing • Nuget & components • A fast Android emulator • Excellent docs • An axml designer • Prompt platform updates (phone, tablet, tv, watch…) • A .Net RunTime on iOS • iPhone and iPad “New Project” templates • C# bindings to ObjectiveC Class Libraries • … with C# semantics • Linq, async, .Net, … • Tools for Compilation, Deployment, Debugging and Publishing • Nuget & components • Excellent docs • A storyboard designer • Prompt platform updates (iOS x, 64-bit, AppleWatch?) • PCL support • F# support – first class! • Libraries (Xamarin.Mobile, Xamarin.Social, Xamarin Forms) • Profilers • A cracking installer • Sketches • Excellent docs + Xamarin University • Xamarin Test Cloud • Xamarin Insights • A future decoded? • The aqueducts?

Slide 23

Slide 23 text

Perfection would be boring… • It’s not free • For iOS development a Mac is required • Swear box occasionally required • VS tools functionality lags behind the XS tools – also, currently (IMO) not as fast or robust • Sometimes you have to drop down to XS, to the Mac and to the Google and Apple tools • Sometimes you do need to pull in third party native libraries – this is possible, tools are available to help, but can sometimes get hairy • You will need to buy “some” phones and tablets • You do need platform knowledge… • You do need platform commitment…

Slide 24

Slide 24 text

Some UK Xamarin Customer Successes

Slide 25

Slide 25 text

Preferred text layout (no bullets) www.bbits.co.uk [email protected] +44 203 126 4885

Slide 26

Slide 26 text

Preferred text layout (no bullets) www.bbits.co.uk [email protected] +44 203 126 4885

Slide 27

Slide 27 text

Preferred text layout (no bullets) www.bbits.co.uk [email protected] +44 203 126 4885

Slide 28

Slide 28 text

Preferred text layout (no bullets) www.bbits.co.uk [email protected] +44 203 126 4885 Video is on: http://vimeo.com/64097175 Video is on: http://vimeo.com/64097175

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

For video, contact: http://microsec.co.uk

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

http://www.sequence.co.uk/case-studies/british-irish-lions

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

For Video: https://evolve.xamarin.com/awards#honeywell

Slide 38

Slide 38 text

@slodge developer cirrious

Slide 39

Slide 39 text

What’s it like developing in VS using Xamarin?

Slide 40

Slide 40 text

@slodge developer cirrious

Slide 41

Slide 41 text

Community Groups http://windowsapps.london/ Nov 26th – Preparing for Windows 10 Dec 17th – From Windows Phone to Xamarin http://www.meetup.com/London-Mobile-Dev Nov 11th – Cross Platform Development with MvvmCross http://www.meetup.com/ Glasgow-Mobile-NET-Developers/ http://www.eventbrite.co.uk/o/ waw-wag-1935092487

Slide 42

Slide 42 text

Satya Nadella CEO Microsoft Sir Bob Geldof Entrepreneur, philanthropist and political activist Sara Murray OBE Entrepreneur and businesswoman Jeremy Paxman Author, journalist and former Newsnight presenter Sir Martin Sorrell CEO of WPP Group Dame Stella Rimington Author and former Director General of MI5 12.11.14 at ExCeL London More information and ticket registration at www.futuredecoded.com