Your SlideShare is downloading. ×
0
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sviluppo di applicazioni mobile cross platform

935

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
935
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Sviluppo di applicazioni cross-platform Windows Phone, iOS, Android Dan ARDELEAN web: www.smartphoneday.com mail:info@smartphoneday.com
  • 2. • BLOG: http://sviluppomobile.blogspot.com/ • Twitter: @danardelean • Email: Dan.ardelean@neologis.eu
  • 3. Perché sviluppare applicazioni mobile?
  • 4. Vendite smartphone nel 2010 Nokia 100.3M 34% RIM 48.0M 16% Apple 47.5M 16% HTC 25.0M 8% Samsung 24.0M 8% Motorola 13.7M 5% Sony Ericsson 9.5M 3% LG 7.0M 2% Fujitsu 6.2M 2% Sharp 5.2M 2% Others 11.6M TOTAL 297.9M
  • 5. Nokia nel 2010 » 2010 >100 milioni di smartphone venduti » 260.000 smartphone al giorno » 190 mercati in tutto il mondo » 170 mercati che usano la carta di credito » 121 operatori mobili che usano operator billing » Più di 9 milioni di download al giorno
  • 6. Piattaforme su quali sviluppare • Windows Phone 7: Nokia, Samsung, HTC, LG, Fujitsu, Acer, Asus • Apple iOS : iPhone e iPad • Android: Motorola, Samsung, HTC, LG , ACER , … • RIM ?
  • 7. Si può sviluppare cross-platform?
  • 8. Perché sviluppare cross-platform? • Basta imparare un solo linguaggio di programmazione = C# • Possibilità di riutilizzare il codice • Possibilità di riutilizzare le librerie • Costi per lo sviluppo e la manutenzione del codice sorgenti più contenuti • Time To Market migliore
  • 9. Vi piace C#?
  • 10. OBJECTIVE-C: SOLO LA DATA + (NSDate *) stripTime:(NSDate *) date { NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components: (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; date = [gregorian dateFromComponents:components]; [gregorian release]; return date; }
  • 11. C#: ESTRARRE LA DATA public DateTime SoloLaData(DateTime date) { return date.Date; }
  • 12. DEMO MONOTOUCH
  • 13. DEMO MONODROID
  • 14. Come sviluppare cross-platform?
  • 15. 1: Linked Files • Pro  Stesso codice su tutte le piattaforme  Si possono usare le direttive preprocessore  Si può usare codice specifico per le piattaforme • Contro  Bisogna gestire più progetti
  • 16. 2: Direttive preprocessore • Pro  Si può inserire codice specifico per ogni piattaforma • Contro  Codice non molto «pulito» using System.Net; #if MONOTOUCH || MONODROID using System.Web; #endif
  • 17. 3: Portable Libraries • Pro  Un’unica libreria per tutte le piattaforme  Usa solo le classe disponibile su tutte le piattaforme • Contro  Non si possono usare le direttive preprocessore  Non si può usare codice specifico per le piattaforme  Non direttamente supportato da MonoDevelop
  • 18. 4: Linked Projects • Pro  Autolink files • Contro  Non funziona in MonoDevelop  Tutti progetti devono essere nella stessa soluzione
  • 19. 5: Interfacce e classi astratte public interface IDispatchOnUIThread { void Invoke(Action action); } // Windows Phone 7 public class DispatchAdapter : IDispatchOnUIThread { public void Invoke(Action action) { Deployment.Current.Dispatcher.BeginInvoke(action); } }
  • 20. // Mono for Android public class DispatchAdapter : IDispatchOnUIThread { private readonly Activity _owner; public DispatchAdapter(Activity owner) { _owner = owner; } public void Invoke(Action action) { _owner.RunOnUiThread(action); } }
  • 21. // Monotouch public class DispatchAdapter : IDispatchOnUIThread { private readonly NSObject _owner; public DispatchAdapter(NSObject owner) { _owner = owner; } public void Invoke (Action action) { _owner.BeginInvokeOnMainThread( new NSAction(action)); } }
  • 22. 5: Interfacce e classi astratte • Pro  Elimina la necessità di usare le direttive preprocessore  Migliora la condivisione del codice • Contro  Il codice è più «astratto»
  • 23. MonoMobile.Extensions • Accelerometer • Camera • Compass • Geolocation • Notification • Storage • Contacts • And more... • https://github.com/chrisntr/ MonoMobile.Extensions • Un unico API per le funzionalità specifiche del telefono • Inspirato da PhoneGap (same API)
  • 24. 3x MonoMobile.Extensions.dll • MonoDroid -> MonoMobile.Extensions.dll • Implemented using LocationManager • MonoTouch -> MonoMobile.Extensions.dll • Implemented using CLLocationManager • Windows Phone 7 -> MonoMobile.Extensions.dll • Implemented using GeoLocationWatcher
  • 25. Il Codice nel code-behind è difficile da testare Data Model VIEW XAML Code-Behind Event Handlers
  • 26. 6: Usare il pattern MVVM Data Model VIEW XAML Code-Behind VIEW MODEL State + Operations Change notification Data-binding and commands
  • 27. 6: MVVM • Pro  Logica separata da interfaccia utente  Migliora la condivisione del codice • Contro  Il codice più difficile da capire all’inizio
  • 28. private void TrovaLaMiaPosizione() { var coordinate= new MonoMobile.Extensions.Geolocation(); coordinate.GetCurrentPosition(PositionAvailable); } private void PositionAvailable(Position position) { Console.WriteLine("{0} {1}", position.Coords.Latitude, position.Coords.Longitude); }
  • 29. 7: MonoGame 2.0 • https://github.com/mono/ MonoGame • https://github.com/CartBlanch e/MonoGame-Samples • OpenSource XNA Api • Si può riutilizzare il codice XNA scritto per XBOX 360 o Windows Phone 7 • Windows e Windows Phone, Mac, Linux, Android, iOS (iPhone, iPad)
  • 30. DEMO MONOGAME
  • 31. Iniziare da • http://create.msdn.com/ • http://www.xamarin.com/ • http://developer.android.com/ • http://developer.apple.com/ 33 Training Windows Phone e Mono • http://learnmobilenow.com/ • http://www.appdev.com/mobile.asp • http://www.pluralsight-training.com
  • 32. If (Developers.Happy()) Return OnInvestment;

×