In the good old days we had lots of choice in the mobile space – feature phones & smart phones, Symbian, BlackBerry, webOS, bada, Firefox OS, Ubuntu Touch, Windows Phone, Sailfish OS, Tizen and of course Android and iOS, etc.
Today, we have a duopoly of Android and iOS. While Sailfish and Tizen and few others still do exist, they play a niche role – same for Windows after Microsoft retreated from the mobile market. Retrospectively the same has happened like in the home computer industry of the 1980’s – one player – in this case the IBM-compatible PC – took the majority share and left only pieces to the other competitors.
In the mobile industry Google’s Android operating system is the major player, with Apple following with a comparatively small but very lucrative share. Without any paradigm shift – like perhaps voice user interface represent – we expect this situation not to change for the foreseeable future.
Stand Out in a Crowded Market
With the increasing competition in the apps space there are various aspects that are worth considering:
— Experiences can carry across a variety of form factors – may it be in-car-systems, TVs, PCs, game console, augmented reality or voice-enabled smart home systems. As mobile technology moved to many systems, you can use your existing app development skills to reach these form factors. But make sure to adapt to each platform in the best possible way, do not limit yourself to the least common denominator!
— Users seem to be less likely to try and install new apps; therefore existing apps will increase their features – moving from a single-purpose to a multi-purpose app world.
— With multi-purpose apps, extensions play an important role. Instead of creating and maintaining your own app you can also extend existing apps such as We Chat, Facebook Messenger, Microsoft Office, or even system extensions like the iOS 11 File Provider or the Today app extensions. Search for “zero UI” and “atomized apps” to learn more.
— Take notifications seriously and make sure to add interaction options to your notifications.
— Think about creating extension points in your app to allow others to get their services into your app.
— Take your target regions into account. In many regions feature phones are still the dominant platform, making good old Java MIDlets1, USSD2 and STK3 or SMS4-based services options worth considering.
— Driving engagement is – as always – critical. One of the biggest driver for apps is communication and socializing. Instead of creating your own solutions you can consider adding support for matrix.org or mastodon. Social, for Example.
— If you consider adding artificial intelligence to your app – and you should – please read our new chapter about AI apps in this edition.
The focus of this book is on developing mobile apps, which encompasses a number of phases including: planning and specification, prototyping and design, implementation, internal testing and deployment, deployment to an app store, discovery by users, installation, use and feedback. Ultimately, we want our users to enjoy using our apps and to give us positive ratings to encourage other users to do likewise. Keep reading to learn how to develop apps for the major platforms.
Should this be the first time that you have considered getting involved, do not delay; mobile has become the predominant form of computing in many areas already. At a global scale, mobile web usage overtook desktops5. Same applies for games: Mobile is generating more revenue than any other gaming market today6. And at least in the U.S., time spent on mobile app usage even surpassed the good old TV7. While developing mobile apps shares many common feature with developing other software, it has specific characteristics. We will cover some of these next.
How to Service Mobile Devices
There are several ways to realize a mobile service:
A native app is programmed in a platform specific language with platform specific APIs. It is typically purchased, downloaded and upgraded through the platform specific central app store. Native apps usually offer the best performance, the deepest integration and the best overall user experience compared to other options. However, native development is often also the most complex development option. When starting new apps you should consider using Kotlin for Android and Swift for iOS, rather than Java and Objective-C. Find further information on how to get started in the dedicated Android and iOS chapters.
Websites & Web Apps
Websites or – increasingly – so called single page applications are written in a variety of languages and use HTML and CSS for rendering. Consider using progressive web apps8 and configure them for iOS desktop pinning9. Web apps run without app store, so you are independent of app stores which is both good because you are not limited by the app store and bad because it is harder for your users to find you. Of course, you also find a dedicated chapter on mobile web development in this book.
There is a multitude of cross-platform services around that provide of write-once run-everywhere scenarios. Even when dealing with only two dominant platforms, cross-platform tools can help you to update and maintain your services with less effort. Read the cross-platform chapter to understand your options in this regard.
SMS, USSD and STK
Simple services can be realized with SMS, USSD or STK. Everyone knows how SMS (Short Message Service) text messaging works and every phone supports SMS, but you need to convince your users to remember textual commands for more complex services. In the UK in many towns parking charges can be paid using SMS messages.
USSD (Unstructured Supplementary Service Data) is a GSM protocol used for pushing simple text based menus, the capabilities depend on the carrier and the device. In Sri Lanka, visitors can receive a free SIM card which is registered using USSD menus.
STK (SIM Application Toolkit) enables the implementation of low-level, interactive apps directly on the SIM card of a phone. STK may appear irrelevant when so much focus is on smartphone apps; however, for example, M-Pesa is an STK app which is transforming life and financial transactions in Kenya and other countries.
The duopoly of Android and iOS has been further cemented in 2017 with Android and iOS controlling 99.8% of the worldwide market share in smartphone sales.
|Platform||Market Share Q1 2015||Market Share Q1 2016||Market Share Q1 2017|
(Source: gartner.com/newsroom/id/3725117 and gartner.com/newsroom/ id/3061917)
Why bother serving niche players? Because those niches will protect you from competition, because a mobile niche may be dominant or important on other form-factors – such as Windows on PC or Tizen on TV systems and smartwatches -, because they offer a truly open ecosystem – like Sailfish, and because they provide a better foundation for the future without all that baggage from the past – such as Fuchsia.
The regional market share of each platform varies significantly. In a world where localized content is increasing in importance, it is vital to know the details and characteristics of your target market. For example, China is the largest smartphone market today, but Chinese Android handsets are typically based on the Android Open Source Platform (AOSP) and come without the Google Play Store or the Google Mobile Services. At the same time, Apple is especially strong in the U.S.: In March 2017, 44.5 percent of U.S. smartphone subscribers were using an iOS device
To find out about market share in your target region, check out online resources such as Netmarketshare1, comscore1,
11 Nevertheless, Android is leading in the US as well holding 53.4 percent of the market, see statista.com/statistics/266572/market-share-held-bysmartphone-platforms-in-the-united-states
StatCounter14, VisionMobile15, Gartner16, Statista17 or Kantar Mobile World Panel18.
Windows Phone has given important impulses to the mobile ecosystem. Their “flat design” patterns have been adapted on iOS and Android as well and for some years it seems as if a Windows-based operating system on smartphones might become the third attractive platform for app developers. But in spite of Microsofts and Nokias enormous and cost-intensive efforts, its world wide market share decreased again in the past years and never reached a level where masses of developers considered it as a viable alternative. So Microsoft tried to change the rules with Windows 10 – now you can develop the very same app for both PC and Mobile (and for IoT, HoloLens and Xbox, too). However, Windows in the mobile ecosystem is only relevant for tablets today. Microsoft realized this some time ago and sold the Nokia brand to the Chinese phone manufacturer Foxconn in 2016 who are now releasing Androidbased Nokia phones. New impulses are expected to come from Windows on ARM and a rumored ultra-mobile PC generation.
Tizen19 has enjoyed quite a success in the smartwatch market, however none of Samsung’s four Tizen-based phones has found its way to the European or US market.
Seemingly gently yet continuously pushed forward by Samsung and Intel, Tizen aims to power also TVs, tablets, netbooks and in-vehicle infotainment systems. Typical Tizen apps are web based, but you can also create native C-based apps. Start your Tizen journey on developer.
tizen.org and developer.samsung.com/gear. For latest news and rumors, visit tizenexperts.com.
Although Jolla20 – the company behind the Sailfish OS21 – stopped producing devices themselves, the open OS is still being pushed forward. Start developing for Sailfish OS by visiting sailfishos.org/develop. One easy path to Sailfish is to use your existing Android app, but you can also create native Apps using Qt/C++ or even Python.
Google is researching a new real-time operating system called Fuchsia22 that is not based on Linux but rather on a custom microkernel. Interestingly enough, Google released a crossplatform development framework called Flutter23 that allows you to build for Android, iOS and Fuchsia at the same time.
Feature Phone Platforms
While smartphones generally get the most news coverage, in some parts of the world feature phones are still pretty relevant. Even on a global level 22% of all phones sold have still been feature phones in Q1 201624, with an install base much higher than that. However, Android is increasingly taken over the lowcost handset market so the future of this platform looks dim.
The big players in the feature phone market also had to realize this: Nokia shut down their feature phone app store in 2015.
While you can develop native apps for feature phones when you have close relationship with the vendor, you typically develop apps using Java ME or BREW for these phones.
As developers, we tend to have a passion for our chosen darlings. However, let us not forget that these technologies are just that – technologies that are relevant at a given time and in a given space, but not more. Yes, flamewars are fun but in retrospect, they are always silly. Hands up those who fought about Atari versus Amiga back in the good ol’ 80s! Probably not many of you but, surely, you get the point. Initiatives such as FairPhone25, ShiftPhone26 or the GuardianProject27 may prove more important than the OS or vendor of your choice in the future.
If you are lost in the vast space of mobile development, do not worry, stay calm and keep on reading. Go through the options and take the problem that you want to solve, your target audience and your know-how into account. Put a lot of effort into designing the experience of your service, concentrate on the problem at hand and keep it simple. It is better to do one thing well rather than doing ‘everything’ only so-so. Invest in the design and usability of your solution. Last but not least, finding the right niche is often better than trying to copy something that is already successful. This guide will help you make an informed decision!