iphone app development overview
DESCRIPTION
TRANSCRIPT
iPhone App Development OverviewBrian Knittel
Brian Knittel ConsultingSoftware Engineering and Architectures
April 27, 2009
Please do not distribute without permission
Who I am
Clients: Cisco, Scientific Atlanta, MIPS, etc. Specialties
Mobile/Embedded: iPhone, Cable set-tops, etc. Video, Audio, Graphics, & Networking Cable TV Networks Architectures and Design Top to bottom, human interface to drivers
Currently working on my own iPhone Apps
Overview
Application LandscapeCrowded, varied, and wide open
Application ProductionAs easy as iTunes
iPhone TechnologiesObjective-CDynamic ConnectivityExpansive and expanding Dev Env and Toolkits
Application Landscape - Numbers
Over 25,000 Apps 30M iPhones and iPod Touches Over 1 Billion downloaded Apps
– Guess $37M from 19M Apps Top selling Crash Bandicoot game
– About $6M from 1M sold
App Categories
Books Business Education Entertainment Finance Games Healthcare & Fitness Lifestyle Medical Music
Navigation News Photography Productivity Reference Social Networking Sports Travel Utilities Weather
Top 10 All Time Apps
Paid Crash BandicootKoi PondEnigmo gameBejeweled 2 game
iBeer
Moto Chaser gamePocket GuitarFlick Fishing gameTetrisTexas Hold'em
Free FacebookGoogle EarthPandora RadioTap Tap Revenge ShazamPac Man LiteBackgroundsTouch HockeyLabyrinth LiteFlashlite
1M944K850K815K
780K
745K710K670K635K600K
Cool Apps (my opinion)
Built in Phone/Contacts Mail iPod Maps Calendar Photos Web Browser Stocks Text (messaging) Camera Clock (timer,
world, ...)
Free Wikipanion SnapTell Translator Weather Channel Urban Spoon Mint.com Kindle Facebook Pandora Radio Shazam Skype FarFinder WebMD
Application Distribution Channel
iTunes Store – as easy as selling music Apple takes 30%, sends you a check monthly
Free is free Free to develop using the Simulator - ADC $99 to develop for iPhone and ship products My application is in progress
Developed in 4 months (Inc. learning curve) Still needs refinements, SQA
New for 3.0 Release in June
Peer to Peer over Bluetooth Subscription and Pay for Features SW access to HW Plugins Push – Signal to Apps that are not running Cut, Copy, & Paste Spotlight Search of iPhone contents Voice Memos
•Rumors of two new iPhones and an iPod Touch in June
iPhone “mini”: $99-$149no wireless, 4 or 8 GB, 2 MP camera, slimmeriPhone “3G+”: $199 2x speed 3G (7.2Mbs) and wireless 802.11n3.2 MP camera, video recording, compassFaster CPU, 32 GB option, (256 MB memory?)iPod Touch “3” – Add some iPhone capabilities?Bluetooth? Camera? Microphone?
iPhone Technologies – Objective C
Objective C (similar to C#) Based on Small talk, developed in early 80's Goal: Simple Object Oriented Coding Strict superset of C, mix with C or C++ Polymorphic, Single Inheritance, no Templates Dynamic Typing, Binding, and Loading Interface (class) definition, and Implementation Loosely typed when you want it
Xcode Development Environment
Interface Builder for configuring Human I/F Full IDE for Simulator and iPhone HW Instruments – Memory (leaks, guard-bands, & object allocation), Performance, Timing, Graphics, and lots more Fine Grain Performance Analysis – Shark Same tools as for Mac development
Also used internally by Apple
Objective-C Example
@interface DemoAppDelegate : NSObject <UIApplicationDelegate> { UIWindow * window; DemoViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow * window;@property (nonatomic, retain) IBOutlet DemoViewController *viewController;
@end
@implementation DemoAppDelegate@synthesize window;@synthesize viewController;- (void)applicationDidFinishLaunching:(UIApplication *)app { [window addSubview:viewController.view]; [window makeKeyAndVisible];}@end
Object-C Connectability
• Outlet – IB Connectable External Variable• Protocol – Method set responded to by many
classes• Delegate – Protocol-Outlet combination• Target-Action – Dynamic External Methods• Notifications – Central Message Dispatch• Model-View-Controller Design Pattern
Protocol Example
@protocol UIApplicationDelegate<NSObject>@optional
- (void)applicationDidFinishLaunching:(UIApplication *)application;
...@end
Toolkits and Frameworks
HI widgets: Menus, Touch I/F, Animations, etc WebView, ScrollView, ImageView, URLs Mostly the same as for Mac development iPhone specific
– UI widgets (UIKit)– Touch I/F– Accelerometer– Location (GPS)
References
iPhone Dev Center http://developer.apple.com/iphone/
Videos - Getting Started & iPhone Tech Talk World Tour
Coding How-to's
Sample Code
iPhone Reference Library
Apple Developer Forums and Google
Stanford iPhone Application Programming http://www.stanford.edu/class/cs193p/
Summary
Application LandscapeCrowded, varied, and wide open
Application ProductionAs easy as iTunes
iPhone TechnologiesObjective-CDynamic ConnectivityExpansive and expanding Dev Env and Toolkits