In this introduction to mobile web development, Brennan will break down native app development for iOS, provide an overview of development tools and touch on how to interact with backend data services (REST/JSON).
* Introduction and Background
* #devmke on Twitter, Facebook and LinkedIn
* Native Apps and Mobile Web Apps
* Why mobile web over native apps?
* Cross-platform
* Leverage existing skills from web development experience
* Potentially reduce costs by developing a single solution
* Is web too limiting? It depends.
* Location services
* Local storage (SQLite)
* Video and audio support
* Device API is coming (http://www.w3.org/2009/dap/)
* Adding Camera, Address Book, Calendar, etc
* iPhone: Add to Home Screen (removes browser chrome, optionally)
* Examples: Twitter, Facebook, Basecamp, Untappd
* jQuery Mobile, for full application-like experience (jquerymobile.com)
* Zurb Foundation for adaptive layouts (http://foundation.zurb.com/)
* Example of adaptive layouts: StreamFIT.com
* Why native apps over mobile web?
* Tighter control over the user experience
* Potentially reduce costs by not supporting ever mobile web client
* Performance can be tuned more precisely
* Animations are more smooth due to hardware acceleration (more coming to web)
* Xcode and Interface Builder
* Objective-C and C (LLVM Compiler, Static Analyzer)
* What native can do that web cannot
* Access iPod library on iOS
* Live audio processing
* Camera, address book and calendar (but coming to web eventually)
* Advanced security
* Low level networking
* Much more
* What about cross-platform solutions?
* It's like DreamWeaver for web. It abstracts away the platform giving you
some power while also taking away some control. Most serious web developers
prefer to write HTML, CSS and JavaScript by hand without visual tools.
* Cross-platform Abstractions
* PhoneGap
* Appcelerator (Titanium)
* MonoTouch with .NET (http://xamarin.com/monotouch)
* Adobe Flash Builder 4.5 (http://www.adobe.com/devnet/devices/ios.html)
* Trouble with fragmentation
* It can be hard to support many diverse client projects
* It can be hard to find developers for niche solutions
* New features in iOS may not be available immediately
* Refining details to tune to each platform may not be possible
* Data Services to the Rescue
* What is REST and JSON?
* Flickr example (http://bit.ly/ul4VAA - http://bit.ly/tvd5O0)
* iTunes Search example (http://bit.ly/ux2wyD)
* What about XML?
* XML is still useful and is more human editable
* JSON is more lightweight and can be used more easily with web
* Exporting data as JSON or XML is trivial with libraries
* Twitter example (http://bit.ly/srajj9)
* Why use REST? (JSON/XML)
* Leverage your existing infrastructure
* Make services available to mobile, desktop and web platforms
* Extend the life of legacy systems until they can be replaced
* Isolate legacy systems from new applications (teams and deadlines)
* Is mobile web enough? It depends.
* What does your app need to do?
* Are you largely just providing content to users?
* Do you need more interactive features?
* Do your features need a highly refined and tuned for each platform?
* Favorite blog (http://cocoawithlove.com/)
* Brennan Stehling
* SmallSharpTools.com