Mostly web
Native navigation
Multiple WebViews approach
Message bus between WebViews
OAuth2 based authentication and new customer process
Mobile a first class citizen, not second to web
Code reuse between mobile and web interfaces
Distribute responsibilities to the proper teams
One set of tools for analytics and A/B testing
Instant updates, continuous integration (DevOps)
We need to establish and maintain a mobile presence
that is just as good as our web presence
A mobile app that feels native, but
has all the benefits of a web app
One Web Core, three Native wrappers
All content and logic in Web layer
Navigation in Native wrappers
What feels natural on different mobile platforms?
Navigation patterns?
What about transitions and gestures?
If we only had one WebView for everything, things would be so much easier
iOS: +Best in class.
Android 4.4: +Awesome. -Rendering performance.
Windows 8/8.1: +Good performance. -Slightly less compliant.
Android <= 4.3: -Horrible. +Solved with Crosswalk.
Multiple views needs inter-communication
Authentication events and state
Storageservice, pub/sub for localstorage
Caching of API requests
Notifications
Development mode: Shared WebWorker bridges communication between tabs and windows
App mode: Using web-to-native and native-to-web bridges
All platforms can easily execute Javascript in WebView
Error prone due to race conditions.
Solution: 2 layer queueing of incoming messages.
Easy to bind to "start loading" event in native layer
nordnet://[viewtype]/page.html?title=[title]#[hash]
Viewtypes
Main tabs by ID
Action
Cover
Coverland
Dialog
Platform specific mapping of view type to transition
Knowledge of limitations and differences of three platforms
WebView debugging, Safari / Chrome / Visual Studio
Requires great documentation and open communication
One year ago, this project would not have been possible
Big challenge & High learning curve
Great result
Mobile a first class citizen, not second to web
Code reuse between mobile and web interfaces
Distribute responsibilities to the proper teams
One set of tools for analytics and A/B testing
Instant updates, continuous integration (DevOps)
We need to establish and maintain a mobile presence
that is just as good as our web presence