際際滷

際際滷Share a Scribd company logo
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 鍖le
 .m - implementation 鍖les (ObjC)
 .mm - implementation 鍖les (ObjC++, C++)
 .xib - 鍖le interfaccia (xml)
 .png (...) - immagini, audio e video
 .plist - settings (xml)
 .storyboards - view e controller storyboard
                                         iOS Programming
File types


 .app
  竪 un bundle che contiene lapp e le risorse
 .ipa
  竪 la versione compressa e sotto DRM del 鍖le .app




                                                iOS Programming
App Sandbox

 La sandbox 竪 un contenitore virtuale dove lapp
  pu嘆 leggere e scrivere 鍖le
 Lapp non 竪 autorizzata ad accedere ai 鍖le al di
  fuori della sandbox
 Esistono delle directory speciali allinterno della
  sandbox dove posizionare i 鍖le



                                                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
 Noti鍖cation Center

                            iOS Programming
Model View Controller




                    iOS Programming
Model View Controller




                    iOS Programming
Protocol




           iOS Programming
Target-Action




                iOS Programming
Noti鍖cation Center




                     iOS Programming
Demo



       iOS Programming
iOS Technologies



                   iOS Programming
Layers

 Cocoa Touch con le funzionalit base
  Contiene i framework

 Media i framework per gra鍖ca, 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 Noti鍖cation / Local Noti鍖cation.
 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 Noti鍖cations
 Long-Running Background Tasks


                                         iOS Programming
Long-Running Background Tasks

 Audio, per ascoltare un audio in background
 Location, per tracciare la posizione dellutente
 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 linterfaccia di tutta lapp in
  un unico posto (鍖le)
 Permette di de鍖nire le transizioni tra una view e
  laltra
 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
Noti鍖cation

 Local noti鍖cation
  Noti鍖che locali schedulate dallapp e gestite dal
  sistema operativo del singolo device.
 Push Noti鍖cation (remote noti鍖cation)
  Noti鍖che inviate dai server Apple (APNs Apple
  Push Noti鍖cation service) su tutti i device dove
  lapp 竪 installata.


                                              iOS Programming
Push Noti鍖cation




                   iOS Programming
Push Noti鍖cation




                   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 nellapp
 Utilizza Google Mobile Maps 鍖no 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
  Gra鍖ca vettoriale 2D e manipolazione

 Core Animatione (Quartz)
  Animazioni delle view di altri oggetti

 Core Image e immagini 鍖sse
  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 allinterno dellapp

 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 (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
Luca Zulian
iOS_Course_1
iOS_Course_1iOS_Course_1
iOS_Course_1
Dario Pizzuto
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
Dario Rusignuolo
iOS_Course_2
iOS_Course_2iOS_Course_2
iOS_Course_2
Dario Pizzuto
Android base day1
Android base day1Android base day1
Android base day1
Andrea Zaza
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
DotNetCampus
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
Fabio Cozzolino
Xamarin
XamarinXamarin
Xamarin
Fabio Cozzolino
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
Leonardo Alario
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get Started
Codemotion
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-senatore
SMAU
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
Gabriele 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 Entertainment
Paolo Musolino
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
Emanuele Di Saverio
Non solo cartoon: lanimazione nei new media, videogames, apps
Non solo cartoon: lanimazione nei new media, videogames, appsNon solo cartoon: lanimazione nei new media, videogames, apps
Non solo cartoon: lanimazione nei new media, videogames, apps
Goran 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 device
Alessio Biasiutti
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
Luca Zulian
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
Dario Rusignuolo
Android base day1
Android base day1Android base day1
Android base day1
Andrea Zaza
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
DotNetCampus
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
Fabio Cozzolino
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
Leonardo Alario
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get Started
Codemotion
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-senatore
SMAU
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
Gabriele 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 Entertainment
Paolo Musolino
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
Emanuele Di Saverio
Non solo cartoon: lanimazione nei new media, videogames, apps
Non solo cartoon: lanimazione nei new media, videogames, appsNon solo cartoon: lanimazione nei new media, videogames, apps
Non solo cartoon: lanimazione nei new media, videogames, apps
Goran 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 device
Alessio Biasiutti

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 鍖le .m - implementation 鍖les (ObjC) .mm - implementation 鍖les (ObjC++, C++) .xib - 鍖le 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 lapp e le risorse .ipa 竪 la versione compressa e sotto DRM del 鍖le .app iOS Programming
  • 8. App Sandbox La sandbox 竪 un contenitore virtuale dove lapp pu嘆 leggere e scrivere 鍖le Lapp non 竪 autorizzata ad accedere ai 鍖le al di fuori della sandbox Esistono delle directory speciali allinterno della sandbox dove posizionare i 鍖le 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 Noti鍖cation 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. Noti鍖cation 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 gra鍖ca, 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 Noti鍖cation / Local Noti鍖cation. 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 Noti鍖cations Long-Running Background Tasks iOS Programming
  • 27. Long-Running Background Tasks Audio, per ascoltare un audio in background Location, per tracciare la posizione dellutente 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 linterfaccia di tutta lapp in un unico posto (鍖le) Permette di de鍖nire le transizioni tra una view e laltra 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. Noti鍖cation Local noti鍖cation Noti鍖che locali schedulate dallapp e gestite dal sistema operativo del singolo device. Push Noti鍖cation (remote noti鍖cation) Noti鍖che inviate dai server Apple (APNs Apple Push Noti鍖cation service) su tutti i device dove lapp 竪 installata. iOS Programming
  • 31. Push Noti鍖cation iOS Programming
  • 32. Push Noti鍖cation 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 nellapp Utilizza Google Mobile Maps 鍖no 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 Gra鍖ca vettoriale 2D e manipolazione Core Animatione (Quartz) Animazioni delle view di altri oggetti Core Image e immagini 鍖sse 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 allinterno dellapp 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