Before you begin building iOS applications, it is crucial that you first understand the ecosystem. This article examines the fundamentals of Apple's operating systems, the various devices available, and Apple's App Store.
1. Why iOS?
Before the arrival of Android and Windows Phone, Apple was the dominant player in the mobile space, rivaled only by Nokia and BlackBerry. With the emergence of new mobile platforms, it has become more and more important to ask yourself which platform is best suited for you.
In spite of Apple's head start in 2007, Android has surpassed iOS in market share. What does that mean for iOS? Is it still a platform worth developing for? It sure is. There are many great reasons to get started with iOS development today.
- Strong Financial Incentives: People spend more money on Apple's App Store than on any other mobile platform. Despite the fact that Android has become the dominant player in the mobile space, the iOS platform remains more lucrative for developers.
- Walled Garden: Over the years Apple's App Store has received a lot of criticism from developers and customers, Apple's review process in particular. It is clear, however, that Apple's policy has led to an App Store in which the quality of its applications is higher than in any other mobile store. Customers also tend to feel much safer when purchasing applications from the App Store than they do on other—more open—platforms, such as Google Play.
- Community and Support: The iOS developer community is a great community to be part of. There is an almost unlimited supply of articles, tutorials, and documentation to help you out when you find yourself stuck with a problem. Also, Apple's documentation of the iOS SDK is superb, not to mention the hundreds of WWDC (World Wide Developer Conference) videos available on Apple's developer website.
People often forget, or don't know, that Android and iOS are very different platforms. Even though both platforms were designed for the mobile space, the iOS ecosystem differs in many respects from the Android ecosystem.
From a development perspective, most people seem to find it easier to develop for iOS than for Android. Don't misunderstand me, I am not referring to the technology stack that each platform uses nor am I referring to the available tools for each platform. Two reasons are at the foundation of the chasm between iOS and Android, fragmentation and adoption rate.
One of Android's core strengths is at the same time one of its principal weaknesses. As most of you know, the Android operating system is released as an open source project and can therefore be used and be modified by anyone. Numerous hardware manufacturers have seen the potential of Android, especially since it is backed by Google.
As a result, Android quickly gained in popularity. The problem is that each hardware manufacturer modifies Android to fit their needs and a wide variety of form factors have emerged since the introduction of Android.
Even though Android's market share may seem like a big pot of honey, it's a pain to create software that runs on each Android version currently available. Due to the thousands of different devices that run Android, testing software on hardware is no trivial task. As you can imagine, support and compatibility become a real challenge.
Traditionally, in many countries, the wireless market is under tight control by cellular carriers. From the very beginning, Apple knew it needed to be in control of its mobile devices to provide the best user experience possible. The result is that customers can upgrade their iOS devices to the latest version of iOS the same day it is released to the public. This is a major advantage of the iOS platform and the result is substantial. Less than a week after the release of iOS 9, over 50% of iOS devices had been upgraded to iOS 9.
Let's compare this with Android. In September 2015, only 20% of Android users had upgraded their devices to Lollipop (released in 2014) and less than 40% had upgraded to KitKat (released in October 2013).
The reason for bringing up these numbers is not to downplay the Android platform or any other mobile platform. What I want to emphasize is the impact the adoption rate has on the application ecosystem of these platforms.
The slower users adopt a new release of an operating system, the longer developers are forced to support older versions of the operating system. It also becomes less appealing to adopt new technologies, which can only be used on a fraction of Android devices.
2. Why Native?
A web application is your first option and this was, in fact, the only option prior to the introduction of the native iOS SDK in 2008. The upside of web applications is that they don't have to deal with the App Store or Apple's review process. Why is that? A web application is a fancy name for a website that acts and behaves like an application. All you need is a browser, such as Mobile Safari or Google Chrome.
Web applications have clear advantages. They are cross-platform by default since the applications run in a browser. Another advantage is the learning curve to create web applications. If you are familiar with web development, then you'll be up and running in no time.
Perhaps the biggest downside to building web applications is that, in general, they feel significantly slower than native applications. The responsiveness of web applications is improving every year, but the inherited delay added by the browser should not be overlooked or ignored. The experience is different. There's no doubt about that.
Mobile Cross-Platform Frameworks
The promise of a cross-platform framework is that developers can write an application that can be deployed to multiple mobile devices from a single code base. This is accomplished through a number of approaches.
Even though mobile development frameworks might seem like the holy grail for mobile development, there are a number of downsides that need to be considered. The most important downside is that your application depends on a third party framework. In other words, your project's code base depends on the company that provides the cross-platform solution. If that company goes out of business or is slow to implement changes made to the native SDK, you could be forced to start over from scratch. That's a risk that you need to consider.
Choosing to develop with the native SDK is the best choice if you want to create applications that stand out and take advantage of the device's capabilities. Opting for a native application also means that you will work in a robust development environment and that you can rely on Apple's development tools, utilities, and support.
3. iOS Ecosystem
One of the most appealing aspects of the iOS ecosystem is its simplicity. The list of devices capable of running iOS is surprisingly short compared to Android or Windows Phone. This means that testing iOS applications is much less cumbersome compared to other platforms.
As I mentioned earlier, Android has surpassed iOS in terms of market share, but this is only part of the story. The iOS platform accounts for more than a third of web usage on mobile devices. What does this tell us about the mobile space? It tells us that iOS remains a dominant player in the mobile space, at least online, and this despite Android's much larger market share.
There are essentially two device families within the iOS ecosystem:
- the iPad device family
- the iPhone device family, which also includes the iPod Touch
For a complete overview, I recommend taking a look at this list. The primary differences within the iPhone device family are hardware capabilities and screen size. For iPhone and iPod Touch, there are four possible screen sizes:
For the iPad device family, there are three possible screen sizes:
The difference in screen size does impact development, but it doesn't add much overhead for most applications. I will talk more about this in the course of the series.
In 2012, Apple introduced the iPad Mini and in 2015 the iPad family was expanded with the iPad Pro. Even though the introductions of the iPad Mini and the iPad Pro caused a ripple in the technology industry, it has had little impact for iOS developers.
The screen of the iPad Mini, for example, is significantly smaller than that of the 9.7" iPad Air, but the resolution is identical to the resolution of the 9.7" iPad devices. Due to the iPad Mini's smaller screen, the average size of the touch targets is smaller and this might pose a problem for some applications.
Apple traditionally releases a new version of its mobile operating system every year. To date, Apple has released nine major versions of its mobile operating system with the most recent release being iOS 9.
Device support is an aspect of iOS that people often overlook. Take the iPhone 4S, for example. The iPhone 4S was released in 2011 and is still capable of running iOS 9. There is no mobile platform that comes even close to this in terms of device support.
One of the key reasons to develop for the iOS platform is the incredible success of the App Store. Selling software has never been easier thanks to Apple's App Store on iOS and OS X. With more than one million applications it is getting a bit crowded in the App Store for iOS, but keep in mind that the number of iOS devices also continues to grow exponentially.
The mobile space is in its infancy and there is still so much potential that is waiting to be uncovered. As with the web in the late nineties, the mobile space will continue to grow at a fast pace and the amount of money that can be made increases with every new smartphone, smartwatch, and tablet sold.
4. watchOS and tvOS
In 2015, Apple announced two new operating systems, watchOS for Apple Watch and tvOS for Apple TV. Apple has opened up both platforms for third party developers, bringing third party applications to your wrist and living room.
The tools for watchOS and tvOS development are identical to those for iOS development. This is yet another reason for choosing for the iOS ecosystem. Apple's operating systems, OS X, iOS, watchOS, and tvOS, are tightly integrated and the possibilities are virtually endless.
You now have a clear picture of the iOS ecosystem and I hope that I was able to convince you to get started with iOS development. In the next post, I will show you how to get started with the native SDK by setting up the development environment. You're going to be surprised by how easy this is.
If you have any questions or comments, you can leave them in the comments below or reach out to me on Twitter.