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
– …
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
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
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