iOS Programming

45
Massimo Oliviero § Stefano Zanetti iOS Programming dive deep into technologies and frameworks

description

Introduzione alle tecnologie e ai framework dell'iOS SDK. Slide presentate al secondo evento pragma mark.

Transcript of iOS Programming

Page 1: iOS Programming

Massimo Oliviero § Stefano Zanetti

iOS Programmingdive deep into technologies and frameworks

Page 2: iOS Programming

iOS Programming

Chi siamo

• Massimo OlivieroMobile Developer & EntrepreneurCappery - the make app companywww.massimooliviero.net - @maxoly

• Stefano ZanettiApple iOS DeveloperSuperpartes Innovation Campus & H-Farm@Doh__

Page 3: iOS Programming

iOS Programming

Agenda

• Anatomia di un App

• I design patterns nel framework

• iOS Techologies

Page 4: iOS Programming

iOS Programming

Code examples

• PMStarterKitPragma Mark Starter Kithttps://github.com/pragmamark/PMStarterKit

• PMTouchPragma Mark iOS General Purpose Libraryhttps://github.com/pragmamark/PMTouch

Page 5: iOS Programming

iOS Programming

Anatomia di un App

Page 6: iOS Programming

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

Page 7: iOS Programming

iOS Programming

File types

• .appè un bundle che contiene l’app e le risorse

• .ipa è la versione compressa e sotto DRM del file .app

Page 8: iOS Programming

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

Page 9: iOS Programming

iOS Programming

Directories

Page 10: iOS Programming

iOS Programming

App Lifecycle

Page 11: iOS Programming

iOS Programming

App Lifecycle

• UIApplication

• App Delegate

• UIWindow

• UIViewController

Page 12: iOS Programming

iOS Programming

App States

Page 13: iOS Programming

iOS Programming

Demo

Page 14: iOS Programming

iOS Programming

Design Patterns

Page 15: iOS Programming

iOS Programming

Design Patterns

• Mode View Controller

• Protocol

• Delegation

• Target-Action

• Notification Center

Page 16: iOS Programming

iOS Programming

Model View Controller

Page 17: iOS Programming

iOS Programming

Model View Controller

Page 18: iOS Programming

iOS Programming

Protocol

Page 19: iOS Programming

iOS Programming

Target-Action

Page 20: iOS Programming

iOS Programming

Notification Center

Page 21: iOS Programming

iOS Programming

Demo

Page 22: iOS Programming

iOS Programming

iOS Technologies

Page 23: iOS Programming

iOS Programming

Layers

• Cocoa TouchContiene i framework con le funzionalità base

• MediaContiene i framework per grafica, audio e video.

• Core ServicesContiene i framework per i servizi di sistema.

• Core OSContiene i framework di basso livello.

Page 24: iOS Programming

iOS Programming

Layers

Page 25: iOS Programming

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

Page 26: iOS Programming

iOS Programming

Multitasking

• Finite-Length Task in the Background

• Local Notifications

• Long-Running Background Tasks

Page 27: iOS Programming

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

Page 28: iOS Programming

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

Page 29: iOS Programming

iOS Programming

Standard System View Controllers

• Address Book UIPer visualizzare e manipolare contatti della rubrica

• Event Kit UIPer visualizzare e manipolare eventi del calendario

• Message UIPer inviare email e messaggi sms

• Media PlayerPer visualizzare e recuperare video ed immagini

Page 30: iOS Programming

iOS Programming

Notification

• Local notificationNotifiche 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.

Page 31: iOS Programming

iOS Programming

Push Notification

Page 32: iOS Programming

iOS Programming

Push Notification

Page 33: iOS Programming

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)

Page 34: iOS Programming

iOS Programming

iAd Framework

Page 35: iOS Programming

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

Page 36: iOS Programming

iOS Programming

Demo

Page 37: iOS Programming

iOS Programming

Media

• Graphics Technologies

• Audio Technologies

• Video Technologies

Page 38: iOS Programming

iOS Programming

Graphics Technologies

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

• Core Animation (Quartz)Animazioni delle view e di altri oggetti

• Core ImageManipolazione video e immagini fisse

• Core TextText layout e rendering

• OpenGL ES + GLKit (2D e 3D rendering)

Page 39: iOS Programming

iOS Programming

Audio Technologies

• Media Player FrameworkPer accedere alla libreria di iTunes

• AVFoundation FrameworkAudio playback and recording

• OpenALHigh-performance, high-quality e positional audio

• Core AudioLibreria di basso livello

Page 40: iOS Programming

iOS Programming

Video Technologies

• AVFoundation Framework Video playback and recording

• Core MediaFramework di basso livello

Page 41: iOS Programming

iOS Programming

Demo

Page 42: iOS Programming

iOS Programming

Core Services

• iCloudSincronizzazione documenti e dati

• In-App PurchaseAcquisti all’interno dell’app

• Core Location FrameworkGeo-localizzazione dispositivo

• Core Data FrameworkPersistenza, object mapping e object graph

Page 43: iOS Programming

iOS Programming

Demo

Page 44: iOS Programming

iOS Programming

Core OS

• Accelerate frameworkDSP, linear algebra, and image-processing calculations

• Core Bluetooth frameworkPer interagire con il Bluetooth

• External Accessory frameworkPer comunicare con accessori esterni

Page 45: iOS Programming

Massimo Oliviero § Stefano Zanetti

grazie, domande?facebook.com/pragmamark

@pragmamarkorg

http://pragmamark.org