Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to the App Store and iOS Development

Introduction to the App Store and iOS Development

A crash course I gave for a software development company in Istanbul.

sarperdag

June 04, 2012
Tweet

More Decks by sarperdag

Other Decks in Programming

Transcript

  1. View Slide

  2. Sarp Erdag

    View Slide

  3. View Slide

  4. What is an “App”?
    • Not a mobile web site!
    • Something you want to carry in your pocket!
    • Something you need to interact frequently.
    • Bigger suite, broken into little pieces.
    (Facebook app = bad)
    (Camera app = good!)

    View Slide

  5. 585,000 apps in the App Store
    More than 25 billion downloads

    View Slide

  6. Average download per app:
    40.000

    View Slide

  7. iOS Device Stats: 315
    Million Sold, 62 Million
    In Q4 2011 Alone

    View Slide

  8. Around 1.000.000 iOS
    devices in Turkey

    View Slide

  9. 2500 apps created by
    Turkish developers

    View Slide

  10. Most popular apps
    Rank Paid apps Free apps
    1 Angry Birds Facebook
    2 Fruit Ninja Pandora Radio
    3 Doodle Jump Words With Friends Free
    4 Cut the Rope Skype
    5 Angry Birds Seasons The Weather Channel
    6 Words With Friends Google Search
    7 Tiny Wings Google Earth
    8 Angry Birds Rio Angry Birds Free
    9 Pocket God Shazam
    10 Camera+ Netflix
    Retrieved May 14, 2012. http://www.macobserver.com/tmo/article/apple_names_all-time_top_app_store_apps/

    View Slide

  11. View Slide

  12. App Distribution
    1. Ad-Hoc (up to 100)
    2. App Store
    3. Enterprise App Store

    View Slide

  13. Prices
    FREE!
    PAID
    • Min Price = $0.99
    • Revenue per application = $8,700
    • Apple takes 30% revenue
    • In app purchases
    • No other forms of payment allowed
    OR

    View Slide

  14. Approval
    1. Takes 7-10 days
    2. App Review Guidelines
    3. Strict and random

    View Slide

  15. How to
    Market?

    View Slide

  16. • Users can find your app by searching:
    • Company Name
    • App Name
    • Keywords (max 100 chars)
    App Store SEO

    View Slide

  17. • Company Name
    • App Name
    • Keywords (max 100 chars)
    • App description (max 4000) chars
    • 5 screenshots
    App Store SEO

    View Slide

  18. • Can choose the publish date
    • Ratings are reset when an update is
    released.
    • Astoturfing is illegal.
    • No way to track download locations.
    • Most sales in weekends.
    App Store SEO

    View Slide

  19. • Apple might choose your app in the
    features apps section.
    • If featured, it takes 1 to 2 weeks.
    • Increases sales by 20%
    App Store SEO

    View Slide

  20. • iAds
    • Google Ads
    • AdMob
    • Turkcell mobil reklam
    Advertising

    View Slide

  21. Development

    View Slide

  22. • Latest SDK version = 5.1
    • Xcode & iOS simulator (not emulator!)
    • Appcelerator Titanium (Wunderlist)
    • PhoneGap
    • RubyMotion
    • AppMakr
    • Parse and Kinvey

    View Slide

  23. Human Interface
    Design Guidelines

    View Slide

  24. HIG
    • People Interact with One App at a Time
    • The comfortable minimum size of tappable
    UI elements is 44 x 44 points.
    • Preferences should be in Settings app
    • Onscreen User Help is Minimal

    View Slide

  25. HIG
    • People expect immediate feedback when
    they operate a control, and they appreciate
    status updates during lengthy operations.
    (Eg: Instagram for uploading photo)
    • People us apps in one hand, and gesturing
    with the thumb of the same hand
    • Consider Adding Physicality and Realism

    View Slide

  26. HIG

    View Slide

  27. Status Bar

    View Slide

  28. Navigation Bar

    View Slide

  29. Toolbar

    View Slide

  30. Tab Bar

    View Slide

  31. Popover (iPad)

    View Slide

  32. Split View (iPad)

    View Slide

  33. TableView

    View Slide

  34. Grouped TableView

    View Slide

  35. Webview

    View Slide

  36. Alert

    View Slide

  37. Action Sheet

    View Slide

  38. Modal View

    View Slide

  39. Pickers

    View Slide

  40. Please, Don’t!

    View Slide

  41. Others
    Network activity indicator
    Label
    Page Indicator
    Progress Indicator
    Search Bar
    Segmented Control
    Slider
    Switch

    View Slide

  42. Notifications
    Badges
    Notifications

    View Slide

  43. Icon

    View Slide

  44. Icon
    • Apple adds gloss automatically
    • Apple adds rounded corners
    • No transparent icons allowed

    View Slide

  45. Icon/App consistency

    View Slide

  46. Don’t include words

    View Slide

  47. View Slide

  48. View Slide

  49. Graphics
    • Make everything 24bit PNG
    • Add @2x versions for retina
    • Use unretinizer or iconify!

    View Slide

  50. • Pttrns.com
    • Mobile-Patterns.com
    UI Design Patterns

    View Slide

  51. Hello World!
    with IB

    View Slide

  52. Objective-C

    View Slide

  53. Objective-C basics
    • Object Oriented
    • Methods (not functions)
    • Instance Variables
    • Accessors (get and set methods)
    • Properties
    • Directives

    View Slide

  54. Objective-C basics
    • Categories
    • Logging
    • Delegates

    View Slide

  55. Methods
    [self.view setBackgroundColor:bgColor];
    - (void)increaseAmount:(int)increase :
    (NSString*)string{
    amount = amount + increase;
    amountLabel.text = [NSString
    stringWithFormat:@"%d TL", amount];
    }

    View Slide

  56. Class Header
    #import
    @interface Photo : NSObject
    {
    NSString* caption;
    NSString* photographer;
    }
    @property (retain) NSString* caption;
    @property (retain) NSString* photographer;
    @end

    View Slide

  57. Class Implementation
    #import "Photo.h"
    @implementation Photo
    @synthesize caption;
    @synthesize photographer;
    - (id) init
    {
    if ( self = [super init] )
    {
    self.caption = @"Default Caption";
    self.photographer = @"Default Photographer";
    }
    return self;
    }
    - (void) dealloc
    {
    [self.caption release];
    [self.photographer release];
    [super dealloc];
    }
    - (NSString*)description
    {
    return [NSString stringWithFormat:@"Photo caption: %@, photographer: %@", self.caption,
    self.photographer];
    }
    @end

    View Slide

  58. Category
    #import
    @interface NSString (Utilities)
    - (BOOL) isURL;
    @end
    #import "NSString-Utilities.h"
    @implementation NSString (Utilities)
    - (BOOL) isURL
    {
    if ( self.length < 7 ) return NO;
    NSRange range = NSMakeRange(0,7);
    NSString* prefix = [self
    substringWithRange:range];
    if ( [prefix isEqualToString:@"http://"] )
    return YES;
    else
    return NO;
    }
    @end

    View Slide

  59. Logging
    NSLog(@"Logging something!");

    View Slide

  60. Memory Management
    IF YOU USE ALLOC, RETAIN or COPY THEN
    YOU NEED TO RELEASE

    View Slide

  61. ARC
    ARC doesn't completely free
    you from worrying about
    memory management

    View Slide

  62. What is Cocoa?
    A suite of object-oriented
    software libraries, a runtime
    system, and an integrated
    development environment.

    View Slide

  63. Cocoa Architecture

    View Slide

  64. Hello World!
    with Code

    View Slide

  65. View Slide

  66. Xcode basics
    • Projects & Workspaces
    • Targets
    • Schemas
    • Debug / Release Modes
    • IB
    • Tools

    View Slide

  67. Xcode basics
    • Code signing
    • Organizer
    • Build settings
    • Frameworks
    • Bundling
    • .ipa file

    View Slide

  68. iOS Simulator
    • Not an emulator
    • Resetting
    • Location detection
    • Push notifications do not work
    • Non-retina by default

    View Slide

  69. MVC

    View Slide

  70. Open Source Libraries
    • AFNetworking
    • JSONKit
    • EGOCache
    • SVProgressHUD
    • Helpers
    • SVWebViewController

    View Slide