3. Presentation tackmobile.com
About Me
• Engineering Director, Tack Mobile
• Denver, CO
• Android (since Beta), then iOS (since ~ iOS 2)
• Various Server-side technologies
• Pragmatic Programmers Author
4. Presentation tackmobile.com
Goals for Today
• Very Modest Goal:
• Understand what cross-platform solutions get
you
• … and what they don’t
• Offer my experience on which types of cross-
platform solutions make sense
5. Presentation tackmobile.com
Like It Or Not…
• Cross platform solutions are necessary
• I don’t like it…
• But it’s the world we live in
• Be prepared
18. Presentation tackmobile.com
Doesn’t HTML Solve Everything?
• Your Mobile Web is important
• A Good Mobile Web Experience is Table Stakes
• Web views replacing native - It’s just not the
world we live in yet.
19. Presentation tackmobile.com
Mobile UX Considerations
• Android users want Android conventions
• iOS users want iOS conventions
• Unless you have a good reason not to
• … and that reason shouldn’t be that you can’t
do it with your toolchain
22. Presentation tackmobile.com
What Are You Trying to Accomplish?
• Make a one-size-fits-all app?
• Shield developers from learning a new
language or platform?
• Save money on development effort?
• Share code, but still build a great UX?
24. Presentation tackmobile.com
Cross Platform Web
• PhoneGap/Cordova Based
• Strategy: Hide cross platform differences,
Write with web technologies
Run in web view
• Hard Questions:
• Does it look like a web app?
• Does it feel like a web app?
25. Presentation tackmobile.com
Cross Platform Interpreted
• Example: Titanium
• Strategy: Hide cross platform differences
behind a common, vendor API.
Write everything once with web technologies,
interpreted on native platforms
• Hard questions:
• How hard is it to fit design to the platform?
• Do I get native performance and experience?
26. Presentation tackmobile.com
Cross Platform Native
• Example: Xamarin, React Native, RubyMotion
• Strategy: Unified language and platform to
native APIs.
Runs in native runtime.
Write in one language, calling native APIs.
• Hard Questions:
• Do you trust the developer?
• Can they keep up?
27. Presentation tackmobile.com
A Syllogism
• Native applications are preferable to web
• and Native execution is preferable to interpreted
• and platform native APIs are preferable to vendor
APIs
• Cross platform native apps are native, executed,
and access native APIs
• Therefore: Cross native platforms are preferable
• QED
34. Presentation tackmobile.com
Push the Shared Code as Far As You Can
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
35. Presentation tackmobile.com
Add Caching and Local Data
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
Local
Datastore
36. Presentation tackmobile.com
Abstract Platform Services
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
Local
Datastore
Location
Manager
CoreLocation
Injected Injected
Abstract Location
Manager
43. Presentation tackmobile.com
Recap
• Web technologies are not up to native
standards yet
• Cross platform solutions deserve your
attention
• Don’t give up access to the native APIs
• Build good apps