Lecture (November 18th): Basics of iOS Development

106
iPHONE + iPAD: SUDDENLY SOMETHING ELSE · NOVEMBER 18th 2010 · HCI · POLIMI venerdì 19 novembre 2010

description

These are the slides for the lecture I gave on November 18th for the Polytechnic of Milan's Human-Computer Interaction course. It gives pointers to people that want to begin developing for iOS.

Transcript of Lecture (November 18th): Basics of iOS Development

Page 1: Lecture (November 18th): Basics of iOS Development

iPHONE + iPAD:SUDDENLYSOMETHING ELSE∞ · NOVEMBER 18th 2010 · HCI · POLIMI

venerdì 19 novembre 2010

Page 2: Lecture (November 18th): Basics of iOS Development

THE FUTUREOH MY GOD THE FUTURE

venerdì 19 novembre 2010

Page 3: Lecture (November 18th): Basics of iOS Development

PROGETTO

DATA STATO1987-2001 SCIENCE FICTION

TRICORDER + D-PADSTAR TREK TNG · DS9 · VOYAGER

venerdì 19 novembre 2010

Page 4: Lecture (November 18th): Basics of iOS Development

FUTUREOH MY GOD THE FUTURE AND IT IS HERE

PRESENT

venerdì 19 novembre 2010

Page 5: Lecture (November 18th): Basics of iOS Development

1. It’s full of stars(THE FUTURE IS HERE THE FUTURE IS HERE)

venerdì 19 novembre 2010

Page 6: Lecture (November 18th): Basics of iOS Development

2. It’s where users are!

“THE IPHONE HAS BEEN ABLE TO MAINTAIN OVER 100% Y/Y GROWTH ON AVERAGE.”WWW.ASYMCO.COM

venerdì 19 novembre 2010

Page 7: Lecture (November 18th): Basics of iOS Development

… (maybe because it’s the most usable?)

venerdì 19 novembre 2010

Page 8: Lecture (November 18th): Basics of iOS Development

3. €€€€€€€€€€€€€€€€€€€(case study: me.)

venerdì 19 novembre 2010

Page 9: Lecture (November 18th): Basics of iOS Development

APPLE IPHONE 3G AD: “SHARE”.HTTP://WWW.YOUTUBE.COM/WATCH?V=0CIPNTUVX0C

venerdì 19 novembre 2010

Page 10: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 11: Lecture (November 18th): Basics of iOS Development

> 2,2 million free d/l> 95,000 paid downloads

venerdì 19 novembre 2010

Page 12: Lecture (November 18th): Basics of iOS Development

È STATO UN POMERIGGIO DI FINE ESTATESTAVO CAMMINANDO PER LE VIE DEL CENTRO MILANESE (IN CUI PIACE MOLTO PERDERMI) ED ERO IN ZONA BRERA QUANDO SENTO SQUILLARE IL MIO CELLULARESECCATO LO TIRO FUORI, MA UNO SGUARDO ALLO SCHERMO ACCENDE LA MIA CURIOSITÀ. “+44” DICE LO SCHERMO (NON RICORDAVO AL MOMENTO MA QUELLO ERA IL PREFISSO INTERNAZIONALE DEL REGNO UNITO).ALL’ALTRO CAPO UNA VOCE ITALIANA MI FA “CIAO, SONO NONPOSSODIRLO DI APPLE, CHIAMO DA LONDRA.VORRESTI METTERE LA TUA APP NEL NOSTRO SPOT?”

venerdì 19 novembre 2010

Page 13: Lecture (November 18th): Basics of iOS Development

YOU, MAKING APPS.(Let’s talk about it.)

venerdì 19 novembre 2010

Page 14: Lecture (November 18th): Basics of iOS Development

Design.

venerdì 19 novembre 2010

Page 15: Lecture (November 18th): Basics of iOS Development

The iPhoneIS A BUNCH OF SENSORS IN YOUR POCKET WITH A SCREEN.

venerdì 19 novembre 2010

Page 16: Lecture (November 18th): Basics of iOS Development

PLAYING MAKE-BELIEVEEXCEPT IT WORKS FOR REAL

venerdì 19 novembre 2010

Page 17: Lecture (November 18th): Basics of iOS Development

IBOOKS BY APPLE.

venerdì 19 novembre 2010

Page 18: Lecture (November 18th): Basics of iOS Development

OCARINA BY SMULE.HTTP://WWW.YOUTUBE.COM/WATCH?V=RHCJQ7EAJJA

venerdì 19 novembre 2010

Page 19: Lecture (November 18th): Basics of iOS Development

The iPhoneIS DIFFERENT FROM A DESKTOP COMPUTER BLUH BLUH BLUH

venerdì 19 novembre 2010

Page 20: Lecture (November 18th): Basics of iOS Development

Desktop differences

Quick use. (Pick it up, use it, back in the pocket.)

Imprecise input, bad (best-of-breed) keyboard.

Made for touching: direct manipulation.

Point to pick!

venerdì 19 novembre 2010

Page 21: Lecture (November 18th): Basics of iOS Development

The iPhoneIS DIFFERENT FROM ITS COMPETITORS

venerdì 19 novembre 2010

Page 22: Lecture (November 18th): Basics of iOS Development

Differences with other phones/OSes (I)

All OS tries to rate good-if-not-best.

Most needed stuff built in.

(Many other factors, but few directly affecting us.)

venerdì 19 novembre 2010

Page 23: Lecture (November 18th): Basics of iOS Development

Differences with other phones/OSes (II)

One thing at a time: discrete apps.

Consistency broken very carefully.

RELIABLE!

venerdì 19 novembre 2010

Page 24: Lecture (November 18th): Basics of iOS Development

iOS≈ Mac OS X (but different)

venerdì 19 novembre 2010

Page 25: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 26: Lecture (November 18th): Basics of iOS Development

iOS

No filesystem

Instead, discrete tasks in apps!

Built atop responsiveness

Animation everywhere.

No virtual memory (writing)

Apps must not make the OS go out of memory!

venerdì 19 novembre 2010

Page 27: Lecture (November 18th): Basics of iOS Development

Apps

Isolated!

Can communicate (URLs, open files, pasteboard [copy/paste])

User always in control.

If user presses Home, YOU QUIT.

venerdì 19 novembre 2010

Page 28: Lecture (November 18th): Basics of iOS Development

Tools.NOT CHEAP!

venerdì 19 novembre 2010

Page 29: Lecture (November 18th): Basics of iOS Development

REQUIRED STUFF »

venerdì 19 novembre 2010

Page 30: Lecture (November 18th): Basics of iOS Development

PLATFORM

DATE STATUSNOVEMBER 15 NEW MACS EVERY 3-6 MONTHS

A MAC€999+

venerdì 19 novembre 2010

Page 31: Lecture (November 18th): Basics of iOS Development

TOOLS

DATE STATUSNOVEMBER 15 IN FLUX

XCODEXCODE TOOLS + IOS SDK 4

venerdì 19 novembre 2010

Page 32: Lecture (November 18th): Basics of iOS Development

http://developer.apple.com/iosTOOLS ARE FREE · INCLUDES SIMULATOR

venerdì 19 novembre 2010

Page 33: Lecture (November 18th): Basics of iOS Development

OPTIONAL STUFF (at least at the time you start) »

venerdì 19 novembre 2010

Page 34: Lecture (November 18th): Basics of iOS Development

TESTDEVICE

DATE STATUSNOVEMBER 15 EXPENSIVE

IPHONE€539+ (ACTUALLY OPTIONAL)

venerdì 19 novembre 2010

Page 35: Lecture (November 18th): Basics of iOS Development

TESTDEVICE

DATE STATUSNOVEMBER 15 MUCH CHEAPER!

IPOD TOUCH€239+ (ACTUALLY OPTIONAL · WI-FI ONLY)

venerdì 19 novembre 2010

Page 36: Lecture (November 18th): Basics of iOS Development

http://developer.apple.com/iosDEVICE DEBUG + DEPLOY: € 79/year

venerdì 19 novembre 2010

Page 37: Lecture (November 18th): Basics of iOS Development

And now ACTUAL DEVELOPMENT STUFF.

venerdì 19 novembre 2010

Page 38: Lecture (November 18th): Basics of iOS Development

Objective-C.C + OBJECTS.

venerdì 19 novembre 2010

Page 39: Lecture (November 18th): Basics of iOS Development

float f = 1.23;int x = fabs(f);

PURE C.

float f = 1.23;int x = fabs(f);

OBJECTIVE-C.

venerdì 19 novembre 2010

Page 40: Lecture (November 18th): Basics of iOS Development

[calculator add:1 to:2 and:3];// method == “-add:to:and:”// arguments == 1,2,3

venerdì 19 novembre 2010

Page 41: Lecture (November 18th): Basics of iOS Development

-(void) add:(int)a to:(int)b and:(int)c;

venerdì 19 novembre 2010

Page 42: Lecture (November 18th): Basics of iOS Development

NSString* x = …;NSString* y = [x substringToIndex:10];

venerdì 19 novembre 2010

Page 43: Lecture (November 18th): Basics of iOS Development

id x = …;id y = [x substringToIndex:10];

venerdì 19 novembre 2010

Page 44: Lecture (November 18th): Basics of iOS Development

NSArray* a = …;[a addObject:@“12345”];

venerdì 19 novembre 2010

Page 45: Lecture (November 18th): Basics of iOS Development

NSArray* a = …;[a performSelector:@selector

(addObject:) withObject:@“1234”];

venerdì 19 novembre 2010

Page 46: Lecture (November 18th): Basics of iOS Development

VIEW CONTROLLERS

venerdì 19 novembre 2010

Page 47: Lecture (November 18th): Basics of iOS Development

VIEWSmake up what’s onscreen

VIEW CONTROLLERSmake up the LOGICAL structure of your app.

NAVIGATION

ALL SONGS » FAVORITES »

EDIT » SONG PICKER

venerdì 19 novembre 2010

Page 48: Lecture (November 18th): Basics of iOS Development

UIAPPLICATION

the app’s DELEGATE

WINDOW

views for 1

VIEW CTL 1 VIEW CTL 2

views for 2

owns

venerdì 19 novembre 2010

Page 49: Lecture (November 18th): Basics of iOS Development

UIAPPLICATION

the app’s DELEGATE

WINDOW

views for 1

VIEW CTL 1 VIEW CTL 2

views for 2

BRING YOUR OWN

DONE!

DONE!

DONE!

BRING YOUR OWN

BRING YOUR OWN

DONE!COMBINE ‘EM

ALL!COMBINE ‘EM

ALL!

owns

venerdì 19 novembre 2010

Page 50: Lecture (November 18th): Basics of iOS Development

A SIMPLE APP · TOOLS DEMO.

venerdì 19 novembre 2010

Page 51: Lecture (November 18th): Basics of iOS Development

Memory management(IMPORTANT BUT BRIEF)

venerdì 19 novembre 2010

Page 52: Lecture (November 18th): Basics of iOS Development

Memory management

No automatic garbage collection! (unlike Java, C#)

Reference counting!

If you do it wrong your app will leak or

crash or

both!!!

venerdì 19 novembre 2010

Page 53: Lecture (November 18th): Basics of iOS Development

CREATED!1

-retain;2!

-release;1!

-release;0!

DEALLOCATED!-

venerdì 19 novembre 2010

Page 54: Lecture (November 18th): Basics of iOS Development

NSArray* a = [[NSArray alloc] init]; // you own it[a retain]; // you own it x2[a release]; // you own it[a release]; // gone!

venerdì 19 novembre 2010

Page 55: Lecture (November 18th): Basics of iOS Development

NSArray* a = [NSArray array]; // what do I have to do here?!?

// the answer: NOTHING! no release, no retain,

// unless you need it PAST this function’s return.

venerdì 19 novembre 2010

Page 56: Lecture (November 18th): Basics of iOS Development

CREATED!1

-autorelease;1

AUTORELEASE POOL

LATER!(release)0!

DEALLOCATED!

venerdì 19 novembre 2010

Page 57: Lecture (November 18th): Basics of iOS Development

THE RULES (1):

every use of:•alloc/init•retain•copy…•new…

must be balanced by a call to either of:•release•autorelease

AND NOTHING ELSE.venerdì 19 novembre 2010

Page 58: Lecture (November 18th): Basics of iOS Development

THE RULES (2):

if you want to keep an object you don’t own past the end of the current function, you need to call -retain on it (and -release or -autorelease when done with it).

venerdì 19 novembre 2010

Page 59: Lecture (November 18th): Basics of iOS Development

Goodies you get on iOS + App Store.

venerdì 19 novembre 2010

Page 60: Lecture (November 18th): Basics of iOS Development

BONJOURNETWORK AUTODISCOVERY

venerdì 19 novembre 2010

Page 61: Lecture (November 18th): Basics of iOS Development

GAME CENTERBLUETOOTH + WIFI + ’NET · LEADERBOARDS · ACHIEVEMENTS · INVITES · MATCHMAKING · VOIP

venerdì 19 novembre 2010

Page 62: Lecture (November 18th): Basics of iOS Development

IADINTEGRATED ADVERTISING PLATFORM · NO EXTRA BUREAUCRACY

venerdì 19 novembre 2010

Page 63: Lecture (November 18th): Basics of iOS Development

IN-APP PURCHASEPAYMENT PROCESSING FOR IN-APP FEATURES & CONTENT · NO EXTRA BUREAUCRACY

venerdì 19 novembre 2010

Page 64: Lecture (November 18th): Basics of iOS Development

COUNTRIES SUPPORTED BY APP STOREWOW.

90!venerdì 19 novembre 2010

Page 65: Lecture (November 18th): Basics of iOS Development

LOCALIZATION + TOP-TIER UNICODE SUPPORTBUILT-IN TO THE CORE OF THE PLATFORM.

venerdì 19 novembre 2010

Page 66: Lecture (November 18th): Basics of iOS Development

GOOGLE MAPS & GEOLOCALIZATIONNO NEED TO PAY GOOGLE’S APPLICATION €€€

venerdì 19 novembre 2010

Page 67: Lecture (November 18th): Basics of iOS Development

AUDIO AND VIDEO PLAYBACK + ENCODINGON A MOBILE DEVICE! · H.264 + AAC + MP3 + UNCOMPRESSED FORMATS

venerdì 19 novembre 2010

Page 68: Lecture (November 18th): Basics of iOS Development

CORE DATAOBJECT DATABASE · TONS OF FEATURES · OPTIMIZED FOR MOBILE · > 1MLN OBJECT STORES

venerdì 19 novembre 2010

Page 69: Lecture (November 18th): Basics of iOS Development

CORE ANIMATIONUNDERLIES EVERYTHING ONSCREEN · TWEENING · 3D · HIGH-PERFORMANCE · MADE FOR UIS

venerdì 19 novembre 2010

Page 70: Lecture (November 18th): Basics of iOS Development

SECURITYONBOARD AES ACCELERATION · ENCRYPTED STORAGE · API FOR APP USE · REMOTE MANAGEMENT

venerdì 19 novembre 2010

Page 71: Lecture (November 18th): Basics of iOS Development

App Store

venerdì 19 novembre 2010

Page 72: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 73: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 74: Lecture (November 18th): Basics of iOS Development

WHAT IT IS:

• The only way you can get apps on your iPhone (except development)

• Hosting

• Payment processing

• Sales!

venerdì 19 novembre 2010

Page 75: Lecture (November 18th): Basics of iOS Development

TO PUBLISHYOU NEED:

• Mac + dev tools + test devices

• Developer program account (79€/year)

• Lots of patience

• VAT # + good accountant (Italy)

• A business plan!

venerdì 19 novembre 2010

Page 76: Lecture (November 18th): Basics of iOS Development

YOU CAN PUBLISH: • Most stuff.

venerdì 19 novembre 2010

Page 77: Lecture (November 18th): Basics of iOS Development

YOU CAN’T PUBLISH:

• Porn

• Stuff that misleads

• Stuff that uses Apple trademarks unfairly

• Stuff that breaks privacy laws

• Stuff whose behavior changes after review

• Interpreters (!) (*)

• Betas & Demos

venerdì 19 novembre 2010

Page 78: Lecture (November 18th): Basics of iOS Development

BORDERLINE:

• Satire

• Crashers

• “Lite”

• Big downloaders

• More apply depending on APIs

https://developer.apple.com/appstore/resources/approval/guidelines.html

venerdì 19 novembre 2010

Page 79: Lecture (November 18th): Basics of iOS Development

YOU SET THE PRICE:

• $0.99 to $999.99 (and international equivalents)

• Most apps in the $0.99-$4.99 range

• You get 70%

• Apple gets 30% (and VAT/taxes if applicable)

venerdì 19 novembre 2010

Page 80: Lecture (November 18th): Basics of iOS Development

IT’S A GAMBLE.

venerdì 19 novembre 2010

Page 81: Lecture (November 18th): Basics of iOS Development

iPAD!

venerdì 19 novembre 2010

Page 82: Lecture (November 18th): Basics of iOS Development

TESTDEVICE

DATE PURPOSENOVEMBER 17TH VARIES

IPADTHE NEW HOTNESS

venerdì 19 novembre 2010

Page 83: Lecture (November 18th): Basics of iOS Development

The iPad is another kind of animal altogether.

venerdì 19 novembre 2010

Page 84: Lecture (November 18th): Basics of iOS Development

iPhone

Take it out, use it, back in the pocket.

Small screen means one thing at a time

Mostly used for its connectivity

iPad

Take it out, use it for a longer period of time.

Larger screen means more stuff/more details.

Mostly used for media consumption and productivity

MORE THAN A PHONENOT ENTIRELY

UNLIKE A LAPTOP

venerdì 19 novembre 2010

Page 85: Lecture (November 18th): Basics of iOS Development

Laptop

Traditional mouse/keyboard paradigm.

Chrome around your media

Usually portable

Good text entry

iPad

Multitouch, like on iPhone (and better!)

Just the media

Highly portable

Decent text entry

OLD AND BUSTEDA DIFFERENT THING,

CLEARLY

venerdì 19 novembre 2010

Page 86: Lecture (November 18th): Basics of iOS Development

The iPad is the iPhone, all grown up to be an actual computer.

venerdì 19 novembre 2010

Page 87: Lecture (November 18th): Basics of iOS Development

There’s more space.USE IT.

venerdì 19 novembre 2010

Page 88: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 89: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 90: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 91: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 92: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 93: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 94: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 95: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 96: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 97: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 98: Lecture (November 18th): Basics of iOS Development

venerdì 19 novembre 2010

Page 99: Lecture (November 18th): Basics of iOS Development

HTTP://WWW.APPLE.COM/IPAD/GUIDED-TOURS/#IBOOKS

venerdì 19 novembre 2010

Page 100: Lecture (November 18th): Basics of iOS Development

HTTP://WWW.APPLE.COM/IPAD/GUIDED-TOURS/#PAGES

venerdì 19 novembre 2010

Page 101: Lecture (November 18th): Basics of iOS Development

HTTP://WWW.YOUTUBE.COM/WATCH?V=GEW68QJ5KXW

venerdì 19 novembre 2010

Page 102: Lecture (November 18th): Basics of iOS Development

We don’t know what the iPad is…

venerdì 19 novembre 2010

Page 103: Lecture (November 18th): Basics of iOS Development

… because it’s a new kind of computer.

venerdì 19 novembre 2010

Page 104: Lecture (November 18th): Basics of iOS Development

PLAYING MAKE-BELIEVEEXCEPT IT WORKS FOR REAL

venerdì 19 novembre 2010

Page 105: Lecture (November 18th): Basics of iOS Development

THE FUTUREOH MY GOD THE FUTURE

venerdì 19 novembre 2010

Page 106: Lecture (November 18th): Basics of iOS Development

YEAH WE’RE DONE! Questions?

venerdì 19 novembre 2010