Mobile Development Day 2014
Introduction to iOS Development with XamarinRaffaele FanizziMicrosoft 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 – [email protected]• 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