SlideShare una empresa de Scribd logo
1 de 32
Mobile Development Day 2014
Introduction to iOS Development
with Xamarin
Raffaele Fanizzi
Microsoft MCTS & MCPD
Mobile Development Day 2014
Chi sono
• Raffaele Fanizzi
• Membro di DotNetSide – www.dotnetside.org
• Microsoft Certified Professional Developer – MCPD
• Microsoft Certified Technical Specialist – MCTS
• Email – vifani@gmail.com
• Blog – www.vifani.com
• LinkedIn – www.linkedin.com/in/raffaelefanizzi
• Twitter - @raffaelefanizzi
Mobile Development Day 2014
Agenda
• Introduzione a Xamarin
• Xamarin.iOS
• Code Session
– Nuovo progetto
– UIView e Xcode Interface Builder
– Accesso a foto e fotocamera
– Navigazione
– UITableView
– Core Animation
– Core Image
– Social Framework
• Limitazioni e costi
• Domande e (spero) risposte
Mobile Development Day 2014
Introduzione a Xamarin
• Mono è un’implementazione opensource del .NET Framework
• E’ composto essenzialmente da un Common Language Runtime e
dalle Base Class Library
• E’ legale e supportato
– Sfrutta gli standard ECMA pubblicati da Microsoft sul .NET Framework
– Sfrutta il codice rilasciato con license opensource sempre da Microsoft
• Disponibile per sistemi operativi Windows, Mac OS
X, Linux, Solaris, ecc…
Mobile Development Day 2014
Introduzione a Xamarin
• Inizialmente sviluppato da Miguel de
Icaza (GNOME, Novell, Ximian)
• Oggi è il core business di Xamarin
• Mono 1.0 – 2004
– C# 1.0, .NET 1.1
• Mono 2.0 – 2008
– C# 2.0, 3.0 e 4.0
– .NET 2.0, 3.0, 3.5 e 4.0
– ASP.NET, MVC
• Mono 3.0 – 2012 e 2013
– C# 5.0, Async
Mobile Development Day 2014
Introduzione a Xamarin
• Mono supporta tutto il .NET Framework
tranne
– Windows Presentation Foundation
– Windows Workflow Foundation
– WCF è supportato solo per il sottoinsieme di
Silverlight (BasicBinding)
Mobile Development Day 2014
Introduzione a Xamarin
• Xamarin propone un
ecosistema per lo
sviluppo multipiattaforma
alla cui base c’è Mono
• Xamarin Studio è l’IDE di
Xamarin per sviluppare
con Mono sotto
Windows, Mac OS X e
Linux
Mobile Development Day 2014
Xamarin.IOS
• Xamarin.iOS è la soluzione di Xamarin per lo sviluppo
di applicazioni native per iOS utilizzando C# e Mono
• iOS non consente il funzionamento di compilatori Just
In Time
• Xamarin.iOS si basa su un compilatore ahead-of-time
(AOT) che compila le applicazioni in linguaggio
assembly per processori ARM v6, v7 e v7s
• Xamarin.iOS espone la totalità dell’SDK CocoaTouch di
Apple come classi .NET
Mobile Development Day 2014
Xamarin.IOS
• Supporta i seguenti assembly del .NET Framework:
– System.dll
– System.Core.dll
– System.Data.dll (ADO.NET)
– System.Data.Service.Client.dll (OData support)
– System.Json.dll
– System.Runtime.Serialization.dll
– System.ServiceModel.dll (WCF stack di Silverlight, senza parte server)
– System.ServiceModel.Web.dll
– System.Transactions.dll
– System.Web.Services
– System.Xml.dll
– System.Xml.Linq.dll
Mobile Development Day 2014
Xamarin.IOS
• Oltre ai propri assembly:
– monotouch.dll (CocoaTouch API)
– Mono.Data.Sqlite.dll (SQL Lite ADO.NET provider)
– Mono.Data.Tds.dll (supporto a SQL Server)
– Mono.Security.dll (API di crittografia)
– OpenTK.dll (OpenGL e OpenAL)
Mobile Development Day 2014
Xamarin.IOS
• Supporta le Portable Class Library compatibili con
il suo profilo
– Microsoft Compression
– Microsoft HTTP Client
– Microsoft Immutable Collections
– Odata
– JSON.NET
– …
Mobile Development Day 2014
Xamarin.IOS
• Perché usare Xamarin.iOS?
– Per utilizzare C#
Mobile Development Day 2014
Xamarin.IOS
Mobile Development Day 2014
Xamarin.IOS
Mobile Development Day 2014
Xamarin.IOS
• Perché usare Xamarin.iOS?
– Per sfruttare le proprie conoscenze in ambito
.NET: ADO.NET, WCF, Task Parallel Library, ecc…
– Perché le app risultanti sono native né più né
meno di quelle sviluppate con XCode
Mobile Development Day 2014
Xamarin.IOS
• Perché usare Xamarin.iOS?
– E’ sviluppato attivamente: ad ogni nuova versione
dell’SDK Apple corrisponde entro 24/48 ore una
nuova versione
– E’ ampiamente supportato:
Infragistics, Telerik, Shinobi, SAP, ecc…
– E’ utilizzato da grandi nomi: Microsoft, National
Instrument
Mobile Development Day 2014
Xamarin.IOS
Ma quale è il vero
motivo per sviluppare
app?
Mobile Development Day 2014
Xamarin.IOS
• Di cosa abbiamo bisogno?
– Di un Mac con Mac OS Lion (10.7) o superiore
– Xcode (SDK e IDE di sviluppo Apple)
– Xamarin Studio (IDE di sviluppo Mono)
• E’ possibile usare Visual Studio sotto Windows per
scrivere il codice, ma è comunque obbligatoria la
presenza di un Mac per l’editing dell’interfaccia
grafica, per compilare le app e per rispettare le licenze
Apple
Mobile Development Day 2014
DEMO: ICARTOLINA
Mobile Development Day 2014
CODE SESSION: NUOVO PROGETTO
Mobile Development Day 2014
CODE SESSION: UIVIEW E INTERFACE BUILDER
Mobile Development Day 2014
CODE SESSION: FOTO E FOTOCAMERA
Mobile Development Day 2014
CODE SESSION: NAVIGAZIONE
Mobile Development Day 2014
CODE SESSION: UITABLEVIEW
Mobile Development Day 2014
CODE SESSION: CORE ANIMATION
Mobile Development Day 2014
CODE SESSION: SOCIAL FRAMEWORK
Mobile Development Day 2014
CODE SESSION: CORE IMAGE
Mobile Development Day 2014
Limitazioni e costi
• Si possono usare
– Assembly forniti in dotazione
– Assembly compilati espressamente come
Xamarin.iOS
– Portable Class Library
• Non si possono usare librerie di terze parti
Objective-C
Mobile Development Day 2014
Limitazioni e costi
• Supporto limitato ai generics
– Niente metodi virtuali generici
– Niente classi generiche con P/Invoke
• Nessun supporto alla generazione dinamica di codice
– Niente System.Reflection.Emit
• Niente Dynamic Language Runtime (o quasi…)
• Per il momento nessun supporto a iOS 64 bit
• Nessun supporto a COM
Mobile Development Day 2014
Limitazioni e costi
Mobile Development Day 2014
Domande e (spero) risposte
Mobile Development Day 2014
GRAZIE PER L’ATTENZIONE 

Más contenido relacionado

La actualidad más candente

Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinFabio Cozzolino
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a XamarinDan Ardelean
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows UniversalAlessandro Scardova
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapDotNetMarche
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Dan Ardelean
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Gaetano Paternò
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to XamarinGuido Magrin
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overviewAlfredo Morresi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinRiccardo Cappello
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiFondazione Mondo Digitale
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Gaetano Paternò
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea Tosato
 
App mobile cross-platform con Xamarin
App mobile cross-platform con XamarinApp mobile cross-platform con Xamarin
App mobile cross-platform con XamarinMichele Aponte
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSmau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSMAU
 

La actualidad más candente (20)

Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows Universal
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
MonoTouch, un anno dopo
MonoTouch, un anno dopoMonoTouch, un anno dopo
MonoTouch, un anno dopo
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
App mobile cross-platform con Xamarin
App mobile cross-platform con XamarinApp mobile cross-platform con Xamarin
App mobile cross-platform con Xamarin
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSmau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, Microsoft
 
Reportage Delphi Day 2012
Reportage Delphi Day 2012Reportage Delphi Day 2012
Reportage Delphi Day 2012
 

Similar a Introduction to iOS development with Xamarin

C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architectureLeonardo Alario
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...Michele Aponte
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Android base day1
Android base day1Android base day1
Android base day1Andrea Zaza
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controNativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controMarco Rinaldi
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net orientedAlessandro Morvillo
 
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...Giorgio Di Nardo
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - itaneunet
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 

Similar a Introduction to iOS development with Xamarin (20)

XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Wise Emotions
Wise EmotionsWise Emotions
Wise Emotions
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
platforms
platformsplatforms
platforms
 
Android base day1
Android base day1Android base day1
Android base day1
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controNativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e contro
 
Beacon & Xamarin
Beacon & XamarinBeacon & Xamarin
Beacon & Xamarin
 
iOS Programming
iOS ProgrammingiOS Programming
iOS Programming
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 
Wise Emotions
Wise Emotions Wise Emotions
Wise Emotions
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - ita
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 

Más de Raffaele Fanizzi

Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Raffaele Fanizzi
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Raffaele Fanizzi
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhoneRaffaele Fanizzi
 
ADO.NET Entity Framework 4
ADO.NET Entity Framework 4ADO.NET Entity Framework 4
ADO.NET Entity Framework 4Raffaele Fanizzi
 

Más de Raffaele Fanizzi (7)

Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows Phone
 
HTML5
HTML5HTML5
HTML5
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
ADO.NET Entity Framework 4
ADO.NET Entity Framework 4ADO.NET Entity Framework 4
ADO.NET Entity Framework 4
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Introduction to iOS development with Xamarin

  • 1. Mobile Development Day 2014 Introduction to iOS Development with Xamarin Raffaele Fanizzi Microsoft MCTS & MCPD
  • 2. Mobile Development Day 2014 Chi sono • Raffaele Fanizzi • Membro di DotNetSide – www.dotnetside.org • Microsoft Certified Professional Developer – MCPD • Microsoft Certified Technical Specialist – MCTS • Email – vifani@gmail.com • Blog – www.vifani.com • LinkedIn – www.linkedin.com/in/raffaelefanizzi • Twitter - @raffaelefanizzi
  • 3. Mobile Development Day 2014 Agenda • Introduzione a Xamarin • Xamarin.iOS • Code Session – Nuovo progetto – UIView e Xcode Interface Builder – Accesso a foto e fotocamera – Navigazione – UITableView – Core Animation – Core Image – Social Framework • Limitazioni e costi • Domande e (spero) risposte
  • 4. Mobile Development Day 2014 Introduzione a Xamarin • Mono è un’implementazione opensource del .NET Framework • E’ composto essenzialmente da un Common Language Runtime e dalle Base Class Library • E’ legale e supportato – Sfrutta gli standard ECMA pubblicati da Microsoft sul .NET Framework – Sfrutta il codice rilasciato con license opensource sempre da Microsoft • Disponibile per sistemi operativi Windows, Mac OS X, Linux, Solaris, ecc…
  • 5. Mobile Development Day 2014 Introduzione a Xamarin • Inizialmente sviluppato da Miguel de Icaza (GNOME, Novell, Ximian) • Oggi è il core business di Xamarin • Mono 1.0 – 2004 – C# 1.0, .NET 1.1 • Mono 2.0 – 2008 – C# 2.0, 3.0 e 4.0 – .NET 2.0, 3.0, 3.5 e 4.0 – ASP.NET, MVC • Mono 3.0 – 2012 e 2013 – C# 5.0, Async
  • 6. Mobile Development Day 2014 Introduzione a Xamarin • Mono supporta tutto il .NET Framework tranne – Windows Presentation Foundation – Windows Workflow Foundation – WCF è supportato solo per il sottoinsieme di Silverlight (BasicBinding)
  • 7. Mobile Development Day 2014 Introduzione a Xamarin • Xamarin propone un ecosistema per lo sviluppo multipiattaforma alla cui base c’è Mono • Xamarin Studio è l’IDE di Xamarin per sviluppare con Mono sotto Windows, Mac OS X e Linux
  • 8. Mobile Development Day 2014 Xamarin.IOS • Xamarin.iOS è la soluzione di Xamarin per lo sviluppo di applicazioni native per iOS utilizzando C# e Mono • iOS non consente il funzionamento di compilatori Just In Time • Xamarin.iOS si basa su un compilatore ahead-of-time (AOT) che compila le applicazioni in linguaggio assembly per processori ARM v6, v7 e v7s • Xamarin.iOS espone la totalità dell’SDK CocoaTouch di Apple come classi .NET
  • 9. Mobile Development Day 2014 Xamarin.IOS • Supporta i seguenti assembly del .NET Framework: – System.dll – System.Core.dll – System.Data.dll (ADO.NET) – System.Data.Service.Client.dll (OData support) – System.Json.dll – System.Runtime.Serialization.dll – System.ServiceModel.dll (WCF stack di Silverlight, senza parte server) – System.ServiceModel.Web.dll – System.Transactions.dll – System.Web.Services – System.Xml.dll – System.Xml.Linq.dll
  • 10. Mobile Development Day 2014 Xamarin.IOS • Oltre ai propri assembly: – monotouch.dll (CocoaTouch API) – Mono.Data.Sqlite.dll (SQL Lite ADO.NET provider) – Mono.Data.Tds.dll (supporto a SQL Server) – Mono.Security.dll (API di crittografia) – OpenTK.dll (OpenGL e OpenAL)
  • 11. Mobile Development Day 2014 Xamarin.IOS • Supporta le Portable Class Library compatibili con il suo profilo – Microsoft Compression – Microsoft HTTP Client – Microsoft Immutable Collections – Odata – JSON.NET – …
  • 12. Mobile Development Day 2014 Xamarin.IOS • Perché usare Xamarin.iOS? – Per utilizzare C#
  • 13. Mobile Development Day 2014 Xamarin.IOS
  • 14. Mobile Development Day 2014 Xamarin.IOS
  • 15. Mobile Development Day 2014 Xamarin.IOS • Perché usare Xamarin.iOS? – Per sfruttare le proprie conoscenze in ambito .NET: ADO.NET, WCF, Task Parallel Library, ecc… – Perché le app risultanti sono native né più né meno di quelle sviluppate con XCode
  • 16. Mobile Development Day 2014 Xamarin.IOS • Perché usare Xamarin.iOS? – E’ sviluppato attivamente: ad ogni nuova versione dell’SDK Apple corrisponde entro 24/48 ore una nuova versione – E’ ampiamente supportato: Infragistics, Telerik, Shinobi, SAP, ecc… – E’ utilizzato da grandi nomi: Microsoft, National Instrument
  • 17. Mobile Development Day 2014 Xamarin.IOS Ma quale è il vero motivo per sviluppare app?
  • 18. Mobile Development Day 2014 Xamarin.IOS • Di cosa abbiamo bisogno? – Di un Mac con Mac OS Lion (10.7) o superiore – Xcode (SDK e IDE di sviluppo Apple) – Xamarin Studio (IDE di sviluppo Mono) • E’ possibile usare Visual Studio sotto Windows per scrivere il codice, ma è comunque obbligatoria la presenza di un Mac per l’editing dell’interfaccia grafica, per compilare le app e per rispettare le licenze Apple
  • 19. Mobile Development Day 2014 DEMO: ICARTOLINA
  • 20. Mobile Development Day 2014 CODE SESSION: NUOVO PROGETTO
  • 21. Mobile Development Day 2014 CODE SESSION: UIVIEW E INTERFACE BUILDER
  • 22. Mobile Development Day 2014 CODE SESSION: FOTO E FOTOCAMERA
  • 23. Mobile Development Day 2014 CODE SESSION: NAVIGAZIONE
  • 24. Mobile Development Day 2014 CODE SESSION: UITABLEVIEW
  • 25. Mobile Development Day 2014 CODE SESSION: CORE ANIMATION
  • 26. Mobile Development Day 2014 CODE SESSION: SOCIAL FRAMEWORK
  • 27. Mobile Development Day 2014 CODE SESSION: CORE IMAGE
  • 28. Mobile Development Day 2014 Limitazioni e costi • Si possono usare – Assembly forniti in dotazione – Assembly compilati espressamente come Xamarin.iOS – Portable Class Library • Non si possono usare librerie di terze parti Objective-C
  • 29. Mobile Development Day 2014 Limitazioni e costi • Supporto limitato ai generics – Niente metodi virtuali generici – Niente classi generiche con P/Invoke • Nessun supporto alla generazione dinamica di codice – Niente System.Reflection.Emit • Niente Dynamic Language Runtime (o quasi…) • Per il momento nessun supporto a iOS 64 bit • Nessun supporto a COM
  • 30. Mobile Development Day 2014 Limitazioni e costi
  • 31. Mobile Development Day 2014 Domande e (spero) risposte
  • 32. Mobile Development Day 2014 GRAZIE PER L’ATTENZIONE 