• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Sviluppo di applicazioni mobile cross platform

  • 888 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
888
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
11
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 ARDELEANweb: 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 DATApublic 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 || MONODROIDusing 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 Androidpublic class DispatchAdapter : IDispatchOnUIThread{ private readonly Activity _owner; public DispatchAdapter(Activity owner) { _owner = owner; } public void Invoke(Action action) { _owner.RunOnUiThread(action); }}
  • 21. // Monotouchpublic 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 • https://github.com/chrisntr/• Compass MonoMobile.Extensions• Geolocation • Un unico API per le funzionalità• Notification specifiche del telefono• Storage• Contacts • Inspirato da PhoneGap (same API)• And more...
  • 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 VIEW XAML Code-Behind Data Model Event Handlers
  • 26. 6: Usare il pattern MVVM VIEW XAML Code-Behind Data-binding Change and commands notification VIEW MODEL State + Data Model Operations
  • 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/ Training Windows Phone e Mono • http://learnmobilenow.com/ • http://www.appdev.com/mobile.asp • http://www.pluralsight-training.com 33
  • 32. If (Developers.Happy()) Return OnInvestment;