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

Introduction au Développement d'Applications iOS

Introduction au Développement d'Applications iOS

Présentation donnée à l'EPFL, Lausanne, Suisse.

Adrian Kosmaczewski
PRO

November 11, 2010
Tweet

More Decks by Adrian Kosmaczewski

Other Decks in Technology

Transcript

  1. Introduction au
    Développement
    d’Applications iOS
    Adrian Kosmaczewski
    akosma software
    EPFL, 11 Novembre 2010

    View Slide

  2. Adrian
    Kosmaczewski

    View Slide

  3. http://www.flickr.com/photos/gi/164281467/

    View Slide

  4. http://www.flickr.com/photos/jm3/379494322/

    View Slide

  5. http://www.flickr.com/photos/[email protected]/2168398185/

    View Slide

  6. http://www.flickr.com/photos/emiliagarassino/2146648332/

    View Slide

  7. akosma software

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. http://www.flickr.com/photos/oskay/365607662/

    View Slide

  12. http://www.flickr.com/photos/oskay/365607591/

    View Slide

  13. http://www.flickr.com/photos/blakespot/2379207825/

    View Slide

  14. http://www.flickr.com/photos/oseillo/345879263/

    View Slide

  15. http://www.flickr.com/photos/justdrew1985/4348527596/

    View Slide

  16. View Slide

  17. Application iPhone

    View Slide

  18. Jérôme Commandeur

    View Slide

  19. http://akos.ma/gib5

    View Slide

  20. App Store

    View Slide

  21. View Slide

  22. Unique

    View Slide

  23. View Slide

  24. Chiffres

    View Slide

  25. http://akos.ma/_u

    View Slide

  26. http://akos.ma/_u

    View Slide

  27. http://akos.ma/gp0a

    View Slide

  28. http://akos.ma/5z3ud

    View Slide

  29. 5 chiffres à retenir
    http://akos.ma/7cunf

    View Slide

  30. 1. Deux millions d’iPads vendus en 2 mois

    = 1 chaque 3 secondes
    2. Il y a eu 35 millions de téléchargements
    sur l’App Store pour iPad (ou 17 apps
    par iPad)
    http://akos.ma/7cunf

    View Slide

  31. 3. 15,000 nouvelles applications sont
    envoyées à Apple chaque semaine
    pour évaluation
    4. 95% de toutes ces applications sont
    approuvées en 7 jours
    http://akos.ma/7cunf

    View Slide

  32. 5. Vers la fin du mois de juin 2010, Apple
    a vendu son 100 millionième appareil
    iOS (iPhone, iPod touch et / ou iPad)
    http://akos.ma/7cunf

    View Slide

  33. http://akos.ma/fttbc

    View Slide

  34. 600’000 iPhones en
    Suisse
    http://akos.ma/fl8

    View Slide

  35. View Slide

  36. Fonctionnement

    View Slide

  37. 1. Enregistrement

    View Slide

  38. http://developer.apple.com/programs/iphone/

    View Slide

  39. 2. Développement

    View Slide

  40. View Slide

  41. 3. Publication

    View Slide

  42. View Slide

  43. Requirements
    • Applications Gratuites:
    • Rien du tout
    • Applications payantes:
    • EIN Number, via IRS
    • Compte bancaire

    View Slide

  44. 4. Approbation

    View Slide

  45. View Slide

  46. 4.1 Refus

    View Slide

  47. “Your application cannot be posted to the App Store at this
    time because it does not adhere to the iPhone Human
    Interface Guidelines as outlined in iPhone SDK Agreement
    section x.x.x.
    When the device is in this or that condition, the application
    does not do this or that. This behavior might lead to user
    confusion. It would be appropriate to display either a
    notification or an alert stating that such or such condition is
    required.
    In order for your application to be reconsidered for the App
    Store, please resolve this issue and upload your new binary
    to iTunes Connect.”

    View Slide

  48. 5. Vente

    View Slide

  49. https://itunesconnect.apple.com/

    View Slide

  50. View Slide

  51. View Slide

  52. Demo 1:
    “Flashlight”

    View Slide

  53. View Slide

  54. Cocoa &
    Objective-C

    View Slide

  55. born in the 80s

    View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. Objective-C

    View Slide

  62. Objective-C Java
    @interface &
    @implementation
    class (1 file)
    @protocol interface
    #import // files! import // classes!
    categories
    n/a (in C#, “class
    extensions”)
    id n/a (generics?)

    View Slide

  63. Objective-C Java
    @selector n/a
    NSObject /
    NSProxy / ...
    Object
    @public / @protected /
    @private
    public / protected /
    private
    @try / @catch / @finally

    NSException
    try / catch / finally

    Exception
    n/a package / namespace

    View Slide

  64. • Thin layer around C

    • Message-dispatch runtime

    • Static and dynamic (you choose)

    • The “real” inspiration for Java:

    • http://cs.gmu.edu/~sean/stuff/java-
    objc.html

    View Slide

  65. • Single inheritance + interfaces (“@protocols”)

    • @protocols can have optional methods

    • Fields protected by default

    • All methods are virtual and overridable

    • Methods can be added to existing classes

    • Full introspection / reflection

    • Messages can be intercepted and forwarded à la
    AOP

    View Slide

  66. View Slide

  67. View Slide

  68. View Slide

  69. View Slide

  70. Demo 2:
    Pierre-feuille-ciseaux

    View Slide

  71. View Slide

  72. Applications web
    ou “natives”?

    View Slide

  73. mises à jour
    fréquence d’utilisation
    native
    apps
    web apps
    stocks
    calculatrice
    business forms
    reports

    View Slide

  74. Avantages des
    Applications “Natives”

    View Slide

  75. 1
    offline

    View Slide

  76. 2
    location services

    View Slide

  77. 3
    caméra

    View Slide

  78. 4
    audio & 3D

    View Slide

  79. http://www.flickr.com/photos/wellohorld/2734492298/

    View Slide

  80. http://www.flickr.com/photos/kelleys/1201625428/

    View Slide

  81. 5
    acceleromètre

    View Slide

  82. 6
    notifications

    View Slide

  83. http://www.flickr.com/photos/epitti/2565572445/

    View Slide

  84. Composants
    natifs

    View Slide

  85. Carnet d’adresses
    ABAddressBook
    ABMultiValue
    ABMutableMultiValue
    ABRecord
    ABGroup
    ABPerson
    http://www.flickr.com/photos/kevinmarsh/2315151843/

    View Slide

  86. Acceleromètre
    UIAccelerometer
    UIAccelerometerDelegate
    http://www.flickr.com/photos/evert-jan/2784525711/
    http://www.flickr.com/photos/evert-jan/2785380754/

    View Slide

  87. Vidéo
    MPMoviePlayerController
    http://www.flickr.com/photos/pingping/1431127181/

    View Slide

  88. Location services
    CLLocation
    CLLocationManager
    http://www.flickr.com/photos/thomcochrane/2780365916/

    View Slide

  89. Graphics & animation
    CALayer
    NSGraphicsContext
    NSRect / NSMakeRect
    NSBezierPath
    NSColor
    http://www.flickr.com/photos/alleus/2905293514/

    View Slide

  90. Caméra & photo library
    UIImagePickerController
    UIImagePickerControllerDelegate
    UIImagePickerControllerSourceTypeCamera
    UIImagePickerControllerSourceTypePhotoLibrary
    http://www.flickr.com/photos/ernohannink/2713579416/

    View Slide

  91. Et bien plus...
    audio
    XML
    WebKit
    SQLite
    networking
    Bonjour

    View Slide

  92. View Slide

  93. Honorer les “Human
    Interface Guidelines”

    View Slide

  94. http://developer.apple.com/iphone/
    library/documentation/
    userexperience/conceptual/
    mobilehig/

    View Slide

  95. View Slide

  96. evitez ceci

    View Slide

  97. http://www.flickr.com/photos/gruber/2635257578/

    View Slide

  98. et ceci

    View Slide

  99. http://smokingapples.com/iphone/app-store-iphone/the-worst-twitter-client-ever/

    View Slide


  100. I can’t find one redeeming quality about this app. It’s slow to start [on a 3GS], doesn’t
    respond to taps while it’s trying to load other things, and crashes if you try to change
    modes a lot. It’s limited to only timeline, replies, and messages. It has no other
    functionality. Oh wait… I forgot its killer feature, you can have custom backgrounds and
    choose the color of your tweets. That totally makes up for its lack of useful features
    and sluggish performance. I’m not sure why someone would bother building such an
    inferior app other than that they wanted to find some suckers and score a quick buck. It
    seems even more insane to me that they’d be actively seeking out reviewers to cover
    this. I was given a promo code for ChillTwit, and even for free I didn’t want it on my
    phone. I was sad just from looking at screenshots. Actually seeing it running confirmed
    all of my fears. If it was a free app, I might forgive the developer, but the fact that he’s
    trying to get $0.99 out of people pisses me off to no end. Go buy Tweetie.
    If you somehow weren’t scared away by all my bitching and whinning, you can see
    ChillTwit on the app store here. But seriously, if you buy this, we’re not friends
    anymore.

    View Slide

  101. View Slide

  102. Livres

    View Slide

  103. View Slide

  104. View Slide

  105. View Slide

  106. View Slide

  107. View Slide

  108. View Slide

  109. View Slide

  110. View Slide

  111. View Slide

  112. View Slide

  113. View Slide

  114. View Slide

  115. Merci!

    View Slide

  116. Questions?

    View Slide