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

Mobile App Development Options for Web Developers

Mobile App Development Options for Web Developers

My talk from Peers Conf 2015

Andrey Butov

April 14, 2015
Tweet

More Decks by Andrey Butov

Other Decks in Technology

Transcript

  1. Mobile app development options
    for web developers.
    Andrey Butov
    @andrey_butov

    View Slide

  2. View Slide

  3. Building mobile apps in-house.
    Subcontracting out mobile app development.
    • Mobile web apps, hybrid apps, native apps.
    • Selected frameworks and technologies.
    • What to expect in terms of cost.
    • Rules of thumb and things to watch out for.

    View Slide

  4. Andrey Butov
    • Writing code since the early ‘90s.
    • Academic background: MS, Computer Science
    • antair.com since 2005
    • andreybutov.com (@andrey_butov)
    • bootstrapped.fm (discuss.bootstrapped.fm)

    View Slide

  5. View Slide

  6. Revenue, 2005 - 2008

    View Slide

  7. View Slide

  8. “Nah. This iPhone thing is a fad.
    Let’s just keep making stuff for
    the Blackberry.”

    View Slide

  9. :(

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. scribbleton.com

    View Slide

  14. Development options for mobile apps
    • Mobile web apps
    • Hybrid apps
    • Native apps

    View Slide

  15. Mobile web apps. The good.
    • Typically, a lower cost of development as
    compared with native.
    • Take advantage of an existing skill set.
    • Typically, a single codebase.
    • Use whatever technology you prefer.

    View Slide

  16. • Not affected by app store review cycles.
    • Not affected by app store customer ratings.
    • Monetization benefits.
    • Not affected by arbitrary app store guidelines.
    Mobile web apps. The good.

    View Slide

  17. Mobile web apps. The bad.
    • Slower than other options.
    • No app store placement.
    • Home screen icon?
    • No native controls or behaviors.

    View Slide

  18. forecast.io

    View Slide

  19. • No native push notifications.
    • No in-app purchases.
    • No background processing.
    Mobile web apps. The bad.

    View Slide

  20. • Geolocation - available on iOS & Android.
    • Offline support - available on iOS & Android.
    • Motion sensors - available on iOS and Android.
    • Camera access - available for iOS and Android.
    • mobilehtml5.org
    Mobile web apps.

    View Slide

  21. Hybrid mobile apps
    • Common definition - a JavaScript driven, CSS styled, HTML5
    web app, rendered in a web view that runs inside a native
    application.
    • What about native apps built using “non-native” technology,
    that don’t run inside a web view?
    • ActionScript (Adobe AIR)
    • C# (Xamarin)
    • Java (RoboVM)
    • C++ (Qt)
    • Ruby (RubyMotion)

    View Slide

  22. What do we want from a hybrid app?
    • Cost of development on par to a mobile web app, or,
    at least, cheaper than native.
    • Some form of code reusability. Ideally, one codebase
    targeting both iOS and Android.
    • Little or no compromise when it comes to access to
    native functionality. (i.e. push notifications)
    • Better performance? Maybe? Hopefully.
    • Access to the app store.

    View Slide

  23. View Slide

  24. cordova.apache.org

    View Slide

  25. Apache Cordova
    • JavaScript, HTML, and CSS, with native plugins.
    • iOS, Android, BlackBerry, Windows Phone, and others.
    • The Cordova web view can run the entire UI, or just
    parts of it inside a larger native app.
    • No mandatory underlying web framework - use
    whatever you like.
    • No UI controls or styles - just the runtime.

    View Slide

  26. Cordova - setup
    • Install iOS SDK, Android SDK, etc.
    • Install Node.js
    • npm install -g cordova
    • cordova create myapp com.example.myapp MyApp
    • cd myapp ; cordova platform add ios android

    View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. ionicframework.com

    View Slide

  40. Ionic
    • Built on top of Cordova.
    • HTML5, JS, CSS (Sass), with native plugins.
    • The goal is to provide optimized UI components
    for a more “native-feeling” app, and a broader
    set of generic plugins.
    • AngularJS

    View Slide

  41. View Slide

  42. View Slide

  43. • Side menus that slide open and close on swipe.
    • Navigation with transition animations.
    • Gestures like on-tap, on-swipe, on-drag, etc.
    • Prevent keyboard from obscuring input fields.
    • Removal of the 300ms input delay.
    Ionic

    View Slide

  44. • Live reload of running code.
    • Icon & splash screen generation.
    • Back-end services like push.
    • Ionic View
    Ionic - tools

    View Slide

  45. Ionic - setup
    • Install Android/iOS platform dependencies.
    • Install Node.js
    • npm install -g cordova ionic
    • ionic start myApp sidemenu
    • cd myApp ; ionic platform add ios

    View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. ionic serve

    View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. https://facebook.github.io/react-native/

    View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. React Native
    • All controls and behaviors are native.
    • Doesn’t use the DOM; no related performance
    issues.
    • The JavaScript thread that runs the app runs
    asynchronously to the rendering thread.
    • Native modules for things that aren’t yet available.
    • Can use underscore.js or anything else that
    doesn’t have a browser dependency.

    View Slide

  61. Facebook Groups Facebook Ads Manager

    View Slide

  62. http://www.adobe.com/devnet/devices.html

    View Slide

  63. View Slide

  64. View Slide

  65. View Slide

  66. Native apps
    • Objective-C, Swift, (C/C++) on iOS, Java & XML on
    Android.
    • Typically the most expensive option, but not always.
    • Multiple codebases.
    • UI components and behaviors are native.
    • Best performance (developer-bound).
    • App store advantages/disadvantages - same as hybrid.

    View Slide

  67. The UI will devour your budget.

    View Slide

  68. howmuchtomakeanapp.com

    View Slide

  69. View Slide

  70. View Slide

  71. Native apps - bits and pieces.
    • Certificates, and provisional profiles will take
    longer to deal with than you think.
    • Second platform 75% rule of thumb.
    • Beta testing with test flight still needs to go
    through an app store approval.
    • Basic push notifications, error monitoring, and
    analytics should not take a lot of time to
    implement.

    View Slide

  72. View Slide

  73. View Slide

  74. Final thoughts

    View Slide

  75. The client does not care about whether or
    not you had a good time writing the code.

    View Slide

  76. Chasing the Platonic ideal is a
    poor use of your time.

    View Slide

  77. “You ain’t gonna need it.”
    >
    “Don’t repeat yourself.”

    View Slide