Large

Mobile Development: Which Mobile Platform?

Insight

Mobile Development, Solution Design

Date: 03/05/2016

We can cut through complexity.

When talking to new customers about developing a mobile app we often get asked the same question: "which mobile platform should we release our app on?" This is often motivated by two concerns: they always want to reach as many users as they can in their target demographic but they understand that releasing an app on multiple platforms will cost more. While there may not always be a right answer here we try to dig a little more into this seemingly simple question.

A reassuring answer is that there are in the region of 2 billion smartphone users in the world, varying by country, and that the two dominant mobile platforms are Android and iOS, so an app should be built to target both.

As simple answers go, this will answer most concerns, but as professional developers, it is important to point out two additional elements here: platform market share is not so clear cut, and developing for each platform will have its own quirks and costs.

Market Share

It was the case a while ago that Android and iOS roughly shared 50% of the market each, with other platforms such as Blackberry and Windows making up the noise. However, this has changed significantly over the last couple of years, probably because Android is available via multiple hardware vendors, whereas iOS is a purely Apple device.

Globally, Android seems to dominate with around 82% of the market, with iOS around 15% and this is predicted to remain fairly stable until 2020 at least. Blackberry's market share has fallen to below 1%, and while some think that Windows Phone is dead, its market share is predicted to sit somewhere around 1% to 5% over the next few years.

If cost really is a concern of your customer, then maybe going down the Android only route is an option after all, but (and this is a big "but"), these market share statistics can be misleading. Although it is clear that Apple has lost market share recently, iOS penetration depends on which country you are targeting. For example, in the UK, iOS has 39% while Android has 52%, compared to Germany's 20% and 73%. It seems we should therefore use these statistics carefully depending on the market we wish to penetrate.

Platform distribution statistics
Platform distribution statistics as at 3 May 2016. Source: Kantar Worldpanel

Development Costs for Multiple Platforms

Returning to potential concerns over cost, as developers we might offer cross-platform development which cuts out the problems of, say, only targeting one platform. The trend setter in this domain was PhoneGap, purchased by Adobe in 2011. This enables the development of mobile apps for Android, iOS, Windows and more using HTML, JavaScript and CSS. If this is your thing, then fine, but the gains you make in cross-platform development all-in-one can be let down by performance and a lack of native features.

Other cross-platform tools say they overcome these limitations, such as Appcelerator and Xamarin to pick just two. Taking Xamarin as an example, they compile C# into native code to increase performance, while allowing you to use common code for your business logic. They even provide new releases of their software rapidly after new versions of Android and iOS come out. However, Xamarin does expect you to write separate Android and iOS specific code in C# since the user interface elements of both platforms are distinct. In this case, you still need to develop two separate user interfaces. The advantage is that your business logic is only developed once. The disadvantage is that you still essentially need to develop separate apps, but this time you are having to do it in C#. So, while there are lots of examples of Android Java and iOS Objective-C and Swift source code out there, there are far less that do the same in C#. You are going to therefore need someone who understands your target platform anyway, and be sufficiently skilled to translate this into C#. What you gain in re-use of your business logic code may therefore be eroded by longer development times for the platform-specific parts of the app.

Of course, your development team experience will vary, as will the requirements on common business logic and user interface. My own experience developing for both platforms says that platform-specific development is the only way to go if you want to take advantage of all that a platform offers, including the latest features in each new release. Cross-platform tools may therefore save you some time and cost, but only if they meet the customer's requirements in terms of technologies supported and whether you want to take advantage of all the latest platform features.

There is, of course, always an exception. If you're developing a game, then you are somewhat less constrained by wanting to use the latest platform features. For example, games tend to have their own user interface requirements, and do not rely upon, say, using Android's "Material" design look and feel. Here then, a tool such as Unity is the only way to go, and with features such as augmented reality via support of the Vuforia SDK, you can include elements which were once only the domain of platform-specific code.

Having looked at developing for multiple platforms, a question we have to ask that customers often do not appreciate the importance of, is which version of each platform should we target? Older versions of Android or iOS will not have the latest features that new smartphones are advertising. Some apps (in my own experience, particularly for iOS) work only on the latest version of the platform. This culture of always having to have the latest hardware and software is not prevalent though, even if Apple report that 84% of their devices are running iOS 9. Android has a much more diverse picture with slower early adoption and a longer tail of older platform versions.

Just like our selection of platform, we must therefore consider carefully what versions of each platform the app should support. Android's excellent use of support libraries means that writing code for older versions of Android is far easier than iOS. Indeed, Android's reporting of version distribution is much clearer than Apple's. For example, currently 97% of all Android devices are running API 15 (Ice Cream Sandwich) or above. Apple, however, only report major release numbers on their own site, with 85% running iOS 8 or above. If you want more detail on older versions, head over to David Smith's statistics or Fiksu iOS Trackers, but if you want to know who is using iOS 7.0 vs iOS 7.1, then you are stuck. Why would I want to know? Because Xcode now only supports iOS 7.1 and above so testing 7.0 becomes very difficult. Apple have never been good at being transparent in its developer documents or the choices it makes.

Platform version statistics
Platform version statistics as at 3 May 2016. Source: Fiksu iOS Trackers

And the Answer?

So, is our reassuring answer sensible? For the most part, yes, but the real key is to focus on the customer's requirements and the user's needs. These will determine the best platform, platform versions and development tools.

Personally, I think that developing an Android app in Java using Android Studio, and an iOS app in Swift (and if I really have to, Objective C) using Xcode are the best approaches. I would also target Android API version 15 and above, and iOS 7.1 and above, since these cover the majority of devices across the world. Common business logic, including MySQL database structure and queries, state machines and even class hierarchies are relatively easy to translate between platforms without needing to resort to C# or other tools, and this then leaves the tricky part of developing the right user interface for each platform where it sits best — in their own development tools and languages (even if they are sometimes clunky and difficult).

And the last thing that I would point out to a customer? That releasing an app to 2 billion people is not the same as getting them to install it. Having a great app is the first step, but putting money into marketing the app is essential otherwise all that effort is for nothing.

We can help

Digital processing is at the heart of innovation. It may be that you have a difficult or complex problem. Pervasive Intelligence have the expertise to cut through the complexity to give you a solution you can use in the real-world.

If you would like to know more, or are interested in what support we can provide, take a look at what we can offer and get in touch. To receive similar insight, just follow us on .