SlideShare a Scribd company logo
1 of 45
Download to read offline
iOS Programming
dive deep into technologies and frameworks




         Massimo Oliviero § Stefano Zanetti
Chi siamo

• Massimo Oliviero
  Mobile Developer & Entrepreneur
  Cappery - the make app company
  www.massimooliviero.net - @maxoly


• Stefano Zanetti
  Apple iOS Developer
  Superpartes Innovation Campus & H-Farm
  @Doh__

                                           iOS Programming
Agenda


• Anatomia di un App
• I design patterns nel framework
• iOS Techologies


                                    iOS Programming
Code examples

• PMStarterKit
 Pragma Mark Starter Kit
 https://github.com/pragmamark/PMStarterKit


• PMTouch
 Pragma Mark iOS General Purpose Library
 https://github.com/pragmamark/PMTouch


                                           iOS Programming
Anatomia di un App



                     iOS Programming
File types
• .h - header file
• .m - implementation files (ObjC)
• .mm - implementation files (ObjC++, C++)
• .xib - file interfaccia (xml)
• .png (...) - immagini, audio e video
• .plist - settings (xml)
• .storyboards - view e controller storyboard
                                         iOS Programming
File types


• .app
  è un bundle che contiene l’app e le risorse
• .ipa
  è la versione compressa e sotto DRM del file .app




                                                iOS Programming
App Sandbox

• La sandbox è un contenitore virtuale dove l’app
  può leggere e scrivere file
• L’app non è autorizzata ad accedere ai file al di
  fuori della sandbox
• Esistono delle directory speciali all’interno della
  sandbox dove posizionare i file



                                                iOS Programming
Directories




              iOS Programming
App Lifecycle




                iOS Programming
App Lifecycle


• UIApplication
• App Delegate
• UIWindow
• UIViewController

                            iOS Programming
App States




             iOS Programming
Demo



       iOS Programming
Design Patterns



                  iOS Programming
Design Patterns

• Mode View Controller
• Protocol
• Delegation
• Target-Action
• Notification Center

                            iOS Programming
Model View Controller




                    iOS Programming
Model View Controller




                    iOS Programming
Protocol




           iOS Programming
Target-Action




                iOS Programming
Notification Center




                     iOS Programming
Demo



       iOS Programming
iOS Technologies



                   iOS Programming
Layers

• Cocoa Touch con le funzionalità base
  Contiene i framework

• Media i framework per grafica, audio e video.
  Contiene

• Core Services per i servizi di sistema.
  Contiene i framework

• Core OSframework di basso livello.
  Contiene i


                                                 iOS Programming
Layers




         iOS Programming
CocoaTouch

• Multitasking
• Storyboards
• Standard System View Controller
• Push Notification / Local Notification.
• iAd Framework
• Map Kit Framework
https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKit_Framework/_index.html#//apple_ref/doc/uid/TP40006955


                                                                                                                iOS Programming
Multitasking


• Finite-Length Task in the Background
• Local Notifications
• Long-Running Background Tasks


                                         iOS Programming
Long-Running Background Tasks

• Audio, per ascoltare un audio in background
• Location, per tracciare la posizione dell’utente
• Voip, per supportare chiamate voip
• Newsstand, per scaricare in background i
  contenuti
• External, per comunicare con accessori esterni

                                            iOS Programming
Storyboard

• E’ una tecnologia introdotta in iOS 5
• Permette di disegnare l’interfaccia di tutta l’app in
  un unico posto (file)
• Permette di definire le transizioni tra una view e
  l’altra
• Si bello però, sconsigliato per progetti in team e
  troppo rigido per dev pro


                                                iOS Programming
Standard System View Controllers

 • Address Book UI contatti della rubrica
   Per visualizzare e manipolare

 • Event Kit UImanipolare eventi del calendario
   Per visualizzare e

 • Message UI e messaggi sms
   Per inviare email

 • Media Player
   Per visualizzare e recuperare video ed immagini


                                                     iOS Programming
Notification

• Local notification
  Notifiche locali schedulate dall’app e gestite dal
  sistema operativo del singolo device.
• Push Notification (remote notification)
  Notifiche inviate dai server Apple (APNs Apple
  Push Notification service) su tutti i device dove
  l’app è installata.


                                              iOS Programming
Push Notification




                   iOS Programming
Push Notification




                   iOS Programming
iAd Framework

• Advertising network gestito da Apple
• Integrato in iOS 4 e successivi
• Semplice: solo due classi
• ADBannerView, classico banner (es. 320x50)
• ADInterstitialAd, full-screen banner (solo iPad)

                                              iOS Programming
iAd Framework




                iOS Programming
Map Kit Framework


• Controllo nativo per integrare le mappe nell’app
• Utilizza Google Mobile Maps fino ad iOS 5.1.1
• Da iOS 6 utilizza Apple Map (sig!)
• Supporta annotazioni, overlays e reverse
  geocoding



                                            iOS Programming
Demo



       iOS Programming
Media


• Graphics Technologies
• Audio Technologies
• Video Technologies


                           iOS Programming
Graphics Technologies
• Core Graphics (Quartz) immagini
  Grafica vettoriale 2D e manipolazione

• Core Animatione (Quartz)
  Animazioni delle view di altri oggetti

• Core Image e immagini fisse
  Manipolazione video

• Core Text
  Text layout e rendering
• OpenGL ES + GLKit (2D e 3D rendering)
                                           iOS Programming
Audio Technologies

• Media Player Framework
  Per accedere alla libreria di iTunes

• AVFoundation Framework
  Audio playback and recording

• OpenAL high-quality e positional audio
  High-performance,

• Core Audio livello
  Libreria di basso


                                           iOS Programming
Video Technologies


• AVFoundation Framework
  Video playback and recording

• Core Media
  Framework di basso livello




                                 iOS Programming
Demo



       iOS Programming
Core Services

• iCloud
  Sincronizzazione documenti e dati

• In-App Purchase
  Acquisti all’interno dell’app

• Core Location Framework
  Geo-localizzazione dispositivo

• Core Data Framework
   Persistenza, object mapping e object graph


                                                iOS Programming
Demo



       iOS Programming
Core OS


• Accelerate framework
  DSP, linear algebra, and image-processing calculations

• Core Bluetooth framework
  Per interagire con il Bluetooth

• External Accessory framework
  Per comunicare con accessori esterni




                                                     iOS Programming
grazie, domande?
         facebook.com/pragmamark


         @pragmamarkorg


         http://pragmamark.org


   Massimo Oliviero § Stefano Zanetti

More Related Content

Similar to iOS Programming

Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Luca Zulian
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
Android base day1
Android base day1Android base day1
Android base day1Andrea Zaza
 
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
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architectureLeonardo Alario
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get StartedCodemotion
 
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
 
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
 
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
 
AppleTV: insight e progettazione per l'Home Entertainment
AppleTV: insight e progettazione per l'Home EntertainmentAppleTV: insight e progettazione per l'Home Entertainment
AppleTV: insight e progettazione per l'Home EntertainmentPaolo Musolino
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsGoran Djukic
 
Azure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge deviceAzure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge deviceAlessio Biasiutti
 

Similar to iOS Programming (20)

Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
iOS_Course_1
iOS_Course_1iOS_Course_1
iOS_Course_1
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
iOS_Course_2
iOS_Course_2iOS_Course_2
iOS_Course_2
 
Apple App World
Apple App WorldApple App World
Apple App World
 
Android base day1
Android base day1Android base day1
Android base day1
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
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
 
Xamarin
XamarinXamarin
Xamarin
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get Started
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
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
 
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
 
AppleTV: insight e progettazione per l'Home Entertainment
AppleTV: insight e progettazione per l'Home EntertainmentAppleTV: insight e progettazione per l'Home Entertainment
AppleTV: insight e progettazione per l'Home Entertainment
 
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, apps
 
platforms
platformsplatforms
platforms
 
Azure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge deviceAzure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge device
 

iOS Programming

  • 1. iOS Programming dive deep into technologies and frameworks Massimo Oliviero § Stefano Zanetti
  • 2. Chi siamo • Massimo Oliviero Mobile Developer & Entrepreneur Cappery - the make app company www.massimooliviero.net - @maxoly • Stefano Zanetti Apple iOS Developer Superpartes Innovation Campus & H-Farm @Doh__ iOS Programming
  • 3. Agenda • Anatomia di un App • I design patterns nel framework • iOS Techologies iOS Programming
  • 4. Code examples • PMStarterKit Pragma Mark Starter Kit https://github.com/pragmamark/PMStarterKit • PMTouch Pragma Mark iOS General Purpose Library https://github.com/pragmamark/PMTouch iOS Programming
  • 5. Anatomia di un App iOS Programming
  • 6. File types • .h - header file • .m - implementation files (ObjC) • .mm - implementation files (ObjC++, C++) • .xib - file interfaccia (xml) • .png (...) - immagini, audio e video • .plist - settings (xml) • .storyboards - view e controller storyboard iOS Programming
  • 7. File types • .app è un bundle che contiene l’app e le risorse • .ipa è la versione compressa e sotto DRM del file .app iOS Programming
  • 8. App Sandbox • La sandbox è un contenitore virtuale dove l’app può leggere e scrivere file • L’app non è autorizzata ad accedere ai file al di fuori della sandbox • Esistono delle directory speciali all’interno della sandbox dove posizionare i file iOS Programming
  • 9. Directories iOS Programming
  • 10. App Lifecycle iOS Programming
  • 11. App Lifecycle • UIApplication • App Delegate • UIWindow • UIViewController iOS Programming
  • 12. App States iOS Programming
  • 13. Demo iOS Programming
  • 14. Design Patterns iOS Programming
  • 15. Design Patterns • Mode View Controller • Protocol • Delegation • Target-Action • Notification Center iOS Programming
  • 16. Model View Controller iOS Programming
  • 17. Model View Controller iOS Programming
  • 18. Protocol iOS Programming
  • 19. Target-Action iOS Programming
  • 20. Notification Center iOS Programming
  • 21. Demo iOS Programming
  • 22. iOS Technologies iOS Programming
  • 23. Layers • Cocoa Touch con le funzionalità base Contiene i framework • Media i framework per grafica, audio e video. Contiene • Core Services per i servizi di sistema. Contiene i framework • Core OSframework di basso livello. Contiene i iOS Programming
  • 24. Layers iOS Programming
  • 25. CocoaTouch • Multitasking • Storyboards • Standard System View Controller • Push Notification / Local Notification. • iAd Framework • Map Kit Framework https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKit_Framework/_index.html#//apple_ref/doc/uid/TP40006955 iOS Programming
  • 26. Multitasking • Finite-Length Task in the Background • Local Notifications • Long-Running Background Tasks iOS Programming
  • 27. Long-Running Background Tasks • Audio, per ascoltare un audio in background • Location, per tracciare la posizione dell’utente • Voip, per supportare chiamate voip • Newsstand, per scaricare in background i contenuti • External, per comunicare con accessori esterni iOS Programming
  • 28. Storyboard • E’ una tecnologia introdotta in iOS 5 • Permette di disegnare l’interfaccia di tutta l’app in un unico posto (file) • Permette di definire le transizioni tra una view e l’altra • Si bello però, sconsigliato per progetti in team e troppo rigido per dev pro iOS Programming
  • 29. Standard System View Controllers • Address Book UI contatti della rubrica Per visualizzare e manipolare • Event Kit UImanipolare eventi del calendario Per visualizzare e • Message UI e messaggi sms Per inviare email • Media Player Per visualizzare e recuperare video ed immagini iOS Programming
  • 30. Notification • Local notification Notifiche locali schedulate dall’app e gestite dal sistema operativo del singolo device. • Push Notification (remote notification) Notifiche inviate dai server Apple (APNs Apple Push Notification service) su tutti i device dove l’app è installata. iOS Programming
  • 31. Push Notification iOS Programming
  • 32. Push Notification iOS Programming
  • 33. iAd Framework • Advertising network gestito da Apple • Integrato in iOS 4 e successivi • Semplice: solo due classi • ADBannerView, classico banner (es. 320x50) • ADInterstitialAd, full-screen banner (solo iPad) iOS Programming
  • 34. iAd Framework iOS Programming
  • 35. Map Kit Framework • Controllo nativo per integrare le mappe nell’app • Utilizza Google Mobile Maps fino ad iOS 5.1.1 • Da iOS 6 utilizza Apple Map (sig!) • Supporta annotazioni, overlays e reverse geocoding iOS Programming
  • 36. Demo iOS Programming
  • 37. Media • Graphics Technologies • Audio Technologies • Video Technologies iOS Programming
  • 38. Graphics Technologies • Core Graphics (Quartz) immagini Grafica vettoriale 2D e manipolazione • Core Animatione (Quartz) Animazioni delle view di altri oggetti • Core Image e immagini fisse Manipolazione video • Core Text Text layout e rendering • OpenGL ES + GLKit (2D e 3D rendering) iOS Programming
  • 39. Audio Technologies • Media Player Framework Per accedere alla libreria di iTunes • AVFoundation Framework Audio playback and recording • OpenAL high-quality e positional audio High-performance, • Core Audio livello Libreria di basso iOS Programming
  • 40. Video Technologies • AVFoundation Framework Video playback and recording • Core Media Framework di basso livello iOS Programming
  • 41. Demo iOS Programming
  • 42. Core Services • iCloud Sincronizzazione documenti e dati • In-App Purchase Acquisti all’interno dell’app • Core Location Framework Geo-localizzazione dispositivo • Core Data Framework Persistenza, object mapping e object graph iOS Programming
  • 43. Demo iOS Programming
  • 44. Core OS • Accelerate framework DSP, linear algebra, and image-processing calculations • Core Bluetooth framework Per interagire con il Bluetooth • External Accessory framework Per comunicare con accessori esterni iOS Programming
  • 45. grazie, domande? facebook.com/pragmamark @pragmamarkorg http://pragmamark.org Massimo Oliviero § Stefano Zanetti