How Many Versions of iOS Should My App Support?
As developers, we're always looking to take advantage of the latest technologies. Each new version of Apple's mobile operating system (iOS) introduces new APIs that give us the ability to do wonderfully new things within our apps, but the balance lies in leveraging this new technology while still supporting an established user base. We often try to guess how many versions of iOS our apps need to target because the overall goal is to introduce new functionality while supporting the maximum number of users. Adding bells and whistles won’t do us much good if that means cutting out a significant portion of our audience. Personally, when trying to decide which iOS version my apps will target the three primary things I take into account are a high adoption rate, app complexity and selective feature offerings.
High Adoption Rate
Apple's devices aren't "fragmented" in the way that many competitors’ devices are because Apple controls both the operating system and the hardware it runs on. As a result, there are really only two things that keep iOS users from upgrading: either the hardware is sufficiently old to prevent the upgrade, or users themselves choose not to. This clear upgrade path results in a new operating system adoption rate that is staggeringly high. Several sources claim that last year's release of iOS 6 reached over 60% adoption within a month's time, widely claimed to be the fastest software upgrade in history. This works in our favor because we can rest assured that by the time we've developed and tested features introduced by the latest software release, a good portion of our target audience will be able to take advantage of the latest features.
Will my app even need to take advantage of the latest technologies? What if I just plan to present a web view and a few buttons and labels? What if my app consists primarily of table views and doesn't even rely on network connectivity? If I’m following the KISS principle (Keep it simple, stupid!) and I don't plan on doing anything cutting edge, then I could honestly support several prior versions of iOS since most of the basic features have been around since the beginning.
Selective Feature Offerings
If I need to add some newer capabilities, I can always choose to code them in for upgraded devices and filter them out for older devices. Xcode, the iOS development tool, automates so many of the little tasks that we would have to perform when trying to support multiple devices or versions of an operating system. Apps automatically run in iPhone 5 compatibility mode without having to do a single thing. If you want to have your apps scale up to the iPhone 5's 4 inch display, just drop in a 4 inch launch image and for the most part, the app will scale automatically. Want to use the latest SDK, but support earlier operating systems? Just set the deployment target to an earlier version with one setting and test for compatibility in the various simulators. It really is quite easy to offer new features to those devices that can support them and selectively filter out features for devices running older versions of the operating system. Many times, the compiler will alert us if we try to compile a feature that isn't compatible with the specified target. Want to offer social sharing features but worried that older devices won't support it? Just use -(BOOL)respondsToSelector:(SEL)aSelector to determine what the device can and can't support. This way we can still use the latest features and simultaneously support earlier operating systems.
Since my last several projects have been more advanced, I've chosen to use some of the latest technologies and have come to the conclusion, based on high iOS adoption rates, that I'd be reaching the vast majority of iOS users if I support the two most recent major operating system versions, iOS 5 and 6. From what I've seen, the prevailing wisdom seems to be that you really can't go wrong if you support iOS for the prior year. Apple’s faithful supporters tend to be an eager bunch and will upgrade if they can, unless there’s a really good reason not to, which rarely seems to be the case. I know what you’re all thinking... Apple’s maps. In reality, they were the perfect solution for my latest project and offered more than Google maps could for my particular need, so don’t be afraid. Upgrade!