• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dev Days 2009 - iPhone Development Overview
 

Dev Days 2009 - iPhone Development Overview

on

  • 886 views

Introduction to iPhone Development presented by Dan Pilone at the DevDays 2009 conference.

Introduction to iPhone Development presented by Dan Pilone at the DevDays 2009 conference.

Statistics

Views

Total Views
886
Views on SlideShare
886
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dev Days 2009 - iPhone Development Overview Dev Days 2009 - iPhone Development Overview Presentation Transcript

    • Develop for iPhone and Get Rich (development experiences...) DevDays October 2009 - Dan PiloneCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • The Plan • Why do you want to develop for iPhone? • The iPhone Ecosystem • Tools and Technologies • Approval and SalesCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Results not typical. Your actual income may vary. High returns represent a relatively small percentage of applications in the iTunes App Store. The App Store is designed for maximum turnover of applications. Placement in top 100 lists dramatically influence sales. Placement above 50 typically double sales. Placement in top 10 increase sales by order of magnitude.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store StatisticsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012 • > 2 Billion downloadsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012 • > 2 Billion downloads • > 100,000 appsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012 • > 2 Billion downloads • > 100,000 apps • > 75% are paid appsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012 • > 2 Billion downloads • > 100,000 apps • > 75% are paid apps • Of the 20 categories in App Store, Games & Entertainment represent 35%Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • App Store Statistics • > $1 Billion industry => $4B in 2012 • > 2 Billion downloads • > 100,000 apps • > 75% are paid apps • Of the 20 categories in App Store, Games & Entertainment represent 35% • Social networking, Photography, Finance, Medical and Weather combined are 6.2%Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why are people developing for iPhone?Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful?Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful? • Development experience (Frameworks, UI, tools etc.)Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful? • Development experience (Frameworks, UI, tools etc.) • Approval ProcessCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful? • Development experience (Frameworks, UI, tools etc.) • Approval Process • Makes Money for developersCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful? • Development experience (Frameworks, UI, tools etc.) • Approval Process • Makes Money for developers • Fantastic distribution mechanismCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Why is iPhone successful? • Development experience (Frameworks, UI, tools etc.) • Approval Process • Makes Money for developers • Fantastic distribution mechanism • User ExperienceCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • UI MattersCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • UI MattersCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Classics Downloads to date: 450,000 Price: $2.99 Approx Income: $940,000Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • I Am T-Pain Downloads to date: 300,000 Price: $2.99 Approx Income: $627,900Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Flight Control Downloads to date: 700,000 Price: $0.99 Approx Income: $485,000Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • There is money to be EARNED.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App BasicsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • You Need an Intel-based MacCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • And the Apple SDKCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Devices are optionalCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App RulesCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App Rules • No 3rd party background appsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App Rules • No 3rd party background apps • Limited resourcesCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App Rules • No 3rd party background apps • Limited resources • Live in a sand boxCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone App Rules • No 3rd party background apps • Limited resources • Live in a sand box • Must use published APICopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Designing a Traditional AppCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • is NOT the same asCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone Apps Are View BasedCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone Apps Are View BasedCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone Apps Are View BasedCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Frameworks and ToolsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Framework Patterns View View ControllerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Framework Patterns View View ControllerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Behind the Scenes #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { } @end Objective-C classes and Nibs built with UIKit Interface BuilderCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • XcodeCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Full Featured IDECopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Graphical debuggerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Built in App TemplatesCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Data modelerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Static Code AnalyzerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Objective-CCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • C-based Language ! BOOL wasItZero; ! ! if (x == 0) { ! ! NSLog(@"Wow, x was 0."); ! ! wasItZero = YES; ! } else if (x == 1) { ! ! NSLog(@"Youd never guess. it was 1."); ! ! wasItZero = NO; ! } ! ! return wasItZero;Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • And then it goes off the rails... - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { // Custom initialization } return self; }Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Objective-C means message passing [window addSubview:viewController.view]; receiver message argumentCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Objective-C means message passing [window addSubview:viewController.view]; receiver message argumentCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Messages are turned into method calls @interface UIView : UIResponder<NSCoding> { ... } - (void)addSubview:(UIView *)view; @endCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Properties and Fields @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; HelloWorldViewController *viewController; } @property (nonatomic, retain) UIWindow *window; @property (nonatomic, retain) HelloWorldViewController *viewController; @endCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Properties and Fields @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; HelloWorldViewController *viewController; } @property (nonatomic, retain) UIWindow *window; @property (nonatomic, retain) HelloWorldViewController *viewController; @end @synthesize window; @synthesize viewController;Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Memory management??Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Objective-C uses reference countingCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Memory management is critical - (void)dealloc { [viewController release]; [window release]; [super dealloc]; }Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • The SDK includes InstrumentsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Behind the Scenes View View ControllerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Behind the Scenes #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { } @end Objective-C classes and UIKit Views and NibsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Behind the Scenes #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { } @end Objective-C classes and UIKit Views and NibsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Interface BuilderCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { } @end UIView UIView ControllerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { } - (IBAction) tapMeButtonPressed: (id) sender; @end - (IBAction) tapMeButtonPressed: (id) sender { ! UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Tapped!" message:@"Fingers of steel!" delegate:nil cancelButtonTitle:@"Bo-ya" otherButtonTitles:nil]; ! [alertView show]; ! [alertView release]; }Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But what about interacting with the UI?Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController { ! UILabel *helloLabel; } @property (nonatomic, retain) IBOutlet UILabel *helloLabel; - (IBAction) tapMeButtonPressed: (id) sender; @end - (IBAction) tapMeButtonPressed: (id) sender { ! self.helloLabel.text = @"Fingers of steel!"; }Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • BreatheCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Testing your codeCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • iPhone SimulatorCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Simulator Issues • No camera • Single GPS (Core Location) point • Limited gesture and accelerometer support • Infinite memory and performance • Lax enforcement of permissionsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator...Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G No GPSCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G iPhone 3G No GPS No Compass No VideoCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G iPhone 3G iPhone 3GS No GPS No Compass New OpenGL No Video Better Camera QuickerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G iPhone 3G iPhone 3GS iPod Touch 1G No GPS No Compass New OpenGL No Cellular No Video Better Camera No Ext. Quicker SpeakerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G iPhone 3G iPhone 3GS iPod Touch 1G iPod Touch 2G No GPS No Compass New OpenGL No Cellular No Camera No Video Better Camera No Ext. Quicker SpeakerCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • But it’s worse than just the simulator... iPhone 2G iPhone 3G iPhone 3GS iPod Touch 1G iPod Touch 2G No GPS No Compass New OpenGL No Cellular No Camera No Video Better Camera No Ext. Quicker Speaker yet...Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • You need to test on real devices.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • You are here • You’ve written an app • You’ve debugged it in the simulator • You’ve installed it on a real device* *...and it worksCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • The App Approval ProcessCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • It’s not as bad as you’ve heard.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • It will take two weeks to be rejected* *...or accepted.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • They do test your app.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • They will eventually catch HIG or License Violations.Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Real World ExampleCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Real World ExampleCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Selling your app and post approvalCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • AnalyticsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Really hard to make money with Ad based appsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • LocalizationCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Two sales modelsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Chart Likage 100 75 50 25 0 People who like chartsCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Distimo Sept 09Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Distimo Sept 09Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Omnifocus Downloads to date: >50,000 Price: $19.99 Approx Income: $700,000Copyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Wrap up • Why do you want to develop for iPhone? • The iPhone Ecosystem • Tools and Technologies • Approval and SalesCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • More Information Dan Pilone Twitter: @danpilone dan@pilone.org iPhone Dev Site: http://developer.apple.com/iphoneCopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009
    • Q&ACopyright 2009 Dan Pilone / dan@pilone.org / DevDaysWednesday, December 23, 2009