Cross platform development has always been tricky. A huge number of modern applications are restricted to a single platform, reducing their potential audience, either due to language restrictions or because of the additional effort of maintaining several versions of the same application. Even when companies decide to release their application on a different platform, sometimes that version lags behind the main platform in features and fixes.
On the desktop, cross-platform languages like Java can run on all platforms which have their runtime environment installed and frameworks like Qt allow developers to share the code between platform releases. More recently, the web gave developers a common framework for app development across almost all platforms through the browser.
With the rise of mobile platforms, the same issues have appeared. iOS, Android, Windows Mobile and newcomers like Ubuntu Touch and Firefox OS give people a huge variety of operating systems to choose from and that reflects on developers developing apps for these platforms.
Short answer: No.
Longer answer: No, you can’t.
Really long answer: Yes, but not through an app. Unfortunately, since there are multiple mobile platforms, each with its own preferred native language, there’s no single package which can be deployed to all mobile platforms and there won’t be one for the foreseeable future. So why did I answer ‘yes’ then? Because there’s something that all mobile platforms share: a web browser. This means that you can write an online mobile app once, deploy it on a server and make it available to every phone with a suitable browser.
This also gives you the advantage of having a website to go along with your app. This, in combination with new browsers’ local storage and websocket features means that you can create something which looks and feels like an app but runs on the browser. There are restrictions to what you can do through the browser but most of the time a mobile-optimised website will satisfy your needs.
But... what if you want more?
Since mobile-optimised websites are so popular and browsers are so powerful, why would anyone want to develop a mobile app?
At the moment there are a few reasons for that. While most people nowadays have devices with support for fast 4G networks, their top speed isn’t always available, and even when it is, it’s not always reliable and is rarely unlimited.
But even in a free-4G-for-all world, browsers can’t really access native functions of the phone, like notifications, vibration, the file system and the various sensors. This means that no mobile-optimised website can have all the features of a mobile app.
No 4G coverage here!
As soon as you decide to build a mobile app, you are faced with a choice: which platforms should you target? Is iOS the obvious choice? What about Android? Should that be a later iteration? Windows Phone is gaining popularity. Should you be the first to tap into the Ubuntu Touch market?
The answer to this question mostly depends on the people you would like to reach through your app. iOS has a very big market share in Europe and the US, but most low-end smartphones in the world run Android.
Let’s say for simplicity’s sake that you decide to target iOS and Android with no plans to expand to other platforms. iOS uses Objective-C (although Apple’s Swift language may change that) for applications and Android uses Java. As you expect, this means that they are not compatible with each other, so you will have to build two apps, one for each. That’s almost double the effort and possibly double the cost and that applies to the initial iteration and any additional features you decide to add in the future.
All of these have a browser but can't agree on anything else
Several frameworks were built on top of Cordova like PhoneGap and Ionic, each one adding its own features, to make developing mobile applications as simple as can be for as many platforms as possible.
The truth is that even though this method for developing mobile apps is convenient, it’s not without its caveats.
Since the apps run in a browser, even though they do it locally without requiring internet access, they will not have a native user interface or be able to access to all the features of each phone.
Not using a native interface means that sometimes the apps will look a bit ‘off’, especially on platforms with strongly-defined interfaces like Windows Phone. In addition, non-native apps don’t perform as well as native apps, because of the additional layer they add. Also, because of the wide-ranging feature sets of different phones, you end up using a common feature set of all the phones you will target.
As expected with this type of question, there’s no definite answer. For most cases, a mobile-optimised website may be the way to go. However, if you have the budget and the target audience requires is it, you may want to create an app instead.
We’re more than happy to give you some guidance on the right mobile development route for you. Please contact the Bright Interactive team for a chat.
Occasionally, as is the case with The National Archives, we get to work with clients across both sides of our business. In addition to custom web software development, Bright Interactive is also the company behind Asset Bank, industry leading Digital A...Continue reading... Dec. 16, 2015
Each of the speakers present demonstrated a real love for type, each brought their own case studies and demonstrations of effective uses of type on the web or in print. Here are just some samples of the useful and interesting things I picked up on from...Continue reading... Nov. 16, 2015
Last year, Mark Otto from Github wrote a popular blog post on how they go about architecting their CSS. Inspired by this spirit of knowledge sharing, other designers and engineers have since followed suit, including Mark Aparicio at Groupon, Brian Lovi...Continue reading... Nov. 5, 2015
Early one morning over the summer I joined an Institute of Directors roundtable discussion in London. These are my thoughts on exit strategies, self-managed teams and how to eat breakfast while being filmed (best advice: don't!)Continue reading... Oct. 19, 2015