Before you begin building iOS applications, it’s crucial that you first understand the ecosystem. This article will examine the fundamentals of the iOS operating system, the various iOS devices available, and the Apple App Store. Read on!
Why iOS?
Prior to the arrival of Android and Windows Phone, Apple was the dominant player in the mobile space, rivaled only by Nokia and Research in Motion (RIM). 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? Of course! There are many great reasons to get started with iOS development, including:
- 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: Even though Apple’s App Store has received a lot of criticism from developers and customers, especially Apple’s review process, it is clear that this policy has led to an App Store in which the quality of the average application is higher than in any other mobile store available. 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. In addition, Apple’s documentation of the iOS SDK is superb, not to mention the hundreds of WWDC videos available to every registered iOS developer.
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 Google’s Android ecosystem. From a development perspective, most people seem to find it easier to develop for the iOS platform 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.
Fragmentation
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 modified by anyone. Numerous hardware manufacturers saw the potential of Android especially since it was backed by Google. Android quickly gained in popularity as a result. The problem is that each hardware manufacturer has modified Android to fit their needs and a wide variety of form factors have emerged since Android’s introduction.
Even though Android’s market share might seem like a big pot of honey, it is a pain to create software that runs on each version of Android that is on in the market. Testing software on hardware is no trivial task either due to the thousands of different devices that run Android. As you can imagine, support and compatibility become a real challenge.
Adoption Rate
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. In other words, customers can upgrade their iOS devices to the latest version of iOS the same day it is released to the public. This is another major advantage of the iOS platform and he result is substantial. Less than a month after the release of iOS 6, over 60% of iOS devices had been upgraded to iOS 6.
Let’s compare this with Android. In October 2012, less than 25% of Android users had upgraded their devices to Ice Cream Sandwich (released in October 2011) and less than 2% had upgraded to Jelly Bean (released in June 2012). Half of the users were still using Gingerbread, which was released in December 2010.
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 and it becomes less appealing to adopt new technologies that can only be used by a fraction of the users available.
Monetization
Even though Android is catching up, iOS is still by far the best platform in terms of monetization. During this year’s WWDC (2012), Apple announced that customers had downloaded more than 30 billion applications and that Apple had paid more than $5 billion to iOS developers. One of the key ingredients of this success are the 400 million active iTunes accounts. Last September (2012), Apple announced that they had sold more than 400 million iOS devices. If you are thinking about developing for a mobile platform, then iOS is an excellent choice and the financial incentive for doing so is unlikely to change anytime soon.
Why Native?
If you are a frequent reader of Mobiletuts+, than you may have heard of cross-platform frameworks like PhoneGap or Titanium Mobile. You might be wondering why you should go through the trouble of learning Objective-C when you can create iOS applications using JavaScript. Let me give you a brief rundown of your options if you decide to develop iOS applications.
- Web Applications: 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 application will run within a browser. Another advantage is the learning curve to create web applications. If you are familiar with web development, then you will be up and running in no time.
Of course, the downsides of web applications can’t be ignored. A web application has limited access to the capabilities of the devices they run on. Mobile web applications are quite powerful thanks to HTML5 and JavaScript. However, there are distinct restrictions in terms of what they can do. You won’t be able to use all the cool features of the iPad and iPhone. Also, web applications typically require a network connection to work, although there are exceptions to this rule. However, perhaps the biggest downside to exclusively building web applications is that, in general, they will feel significantly slower than native applications. The responsiveness of web apps is constantly improving, but the inherited delay added by the browser should not be overlooked or ignored. - Mobile Cross-Platform Frameworks: The promise of a cross-platform framework is that developer can write an application that can be deployed to multiple mobile devices while using just one code base. This is accomplished with a number of different approaches. Some frameworks use the native SDK of the platform to create a web view in which the application is embedded (i.e. PhoneGap). As with web applications, this imposes limitations in terms of functionality. The primary advantage is that the application feels like a native application in terms of user experience and that it can be distributed through the platform’s store.
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 entire codebase becomes dependent on the company that provides the cross-platform SDK. If that company goes broke or is slow to implement changes made to the native SDK, you could be forced to start over from scratch!
- iOS SDK: Choosing to develop with the native SDK is the best choice if you want to create applications that stand out and take full 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.
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 when compared with Android or Windows Phone. This means that testing iOS applications is much less cumbersome than the process required for other mobile platforms.
As stated 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 60% of web usage by mobile devices. What does this tell us about the mobile space? It tells us that iOS remains the most used operating system (at least online) in the mobile space despite Android’s higher market share.
Devices
There are essentially two device families within the iOS ecosystem: the iPhone device family, which also includes the iPod Touch, and the iPad device family. For a complete overview, I recommend that you take a look at this list.
The primary differences in the iPhone device family are hardware capabilities and screen size. The iPhone 5 and the 5th generation iPod Touch both have a larger 4″ screen, whereas the previous models come with the more familiar 3.5″ screen. 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.
The iPad family was recently expanded with the introduction of the 4th generation iPad and the iPad Mini. Even though the introduction of the iPad Mini caused a ripple in the technology industry, it has little impact for iOS developers. The screen of the iPad Mini is significantly smaller than that of the 10″ iPad, but the resolution is identical to the resolution of the original iPad and the iPad 2. Due to the iPad Mini’s smaller screen, the average size of the touch targets is smaller as well, and this might pose a problem for some existing applications.
iOS
Apple traditionally releases a new version of its mobile operating system every year. To date, Apple has released six major versions of its mobile operating system with the most recent release being iOS 6. Device support is an aspect of iOS that people often overlook. Take the iPhone 3GS, for example. The iPhone 3GS was released in 2009 and is still capable of running iOS 6. There is no mobile platform that comes even close to this in terms of device support.
App Store
One of the key reasons to develop for the iOS platform is the unprecedented success of the App Store. Selling software has never been easier thanks to both the iOS App Store and the Mac App Store. Apple recently announced that the App Store has surpassed the milestone of 1 million applications. It is getting a bit crowded in the App Store, but keep in mind that the number of iOS devices also continues to grow exponentially.
The mobile space is still in its infancy and there is still so much potential that is waiting to be uncovered. Just like it was 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 or tablet sold.
Conclusion
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 will be surprised how easy this is!