Now that I’m ramping up in developing for iOS, and I’ve gotten the delightful details of system setup, Objective-C learning, and Xcode configuration done, the next question is: We’re at iOS 6, so what version should I target for my software?
Some pros and cons on selection, gleaned from a number of online sources:
- iOS 6 gives the latest and greatest features – if the feature is only in iOS 6, then the answer is obvious.
- For older devices, the OS they came with might be the only one to provide 100% of the features they can use – in other words, upgrading an older device to iOS 6 may not give it all of iOS 6 features; so an additional limit is the device and its capabilities.
- Testing is required for each device – target for iOS 4, but only test on iOS 6, and you could be bitten with a problem or two later on. This is not trivial, as Apple apparently no longer provides a way to ‘roll back’ an OS version on a device to test it – so once you move from iOS 5 to 6, there’s no way to test at 5 again on that device. Even the simulator seems to be have a problem, with people reporting issues getting the 4.X simulator to work under Mountain Lion.
- Some choices are obvious: For example, the 3GS introduced the armv7 CPU architecture (as opposed to the earlier armv6) and armv6 support is considered somewhat buggy now. So there are some ‘hard limits’ in how far you should go back to support.
- Older OSes can sometimes be given new life. For example, ARC (a memory feature) is compiler-based, so it is (somewhat) backwards compatible, meaning you get the benefit of easier memory management for older iOS 4 programs even though iOS 4 didn’t originally have that feature.
- Some devices are beyond help (and support): Every new iOS version means people don’t upgrade, primarily because their machines can’t handle the new code – for example, the original iPhone on iOS 5 is a waste of time supporting, since it will never run iOS 5!
- Time changes all, and the OS that’s popular now will be replaced. Especially if your app is not going out into the world for a few months, you might be OK with programming for a later OS, since it will continue to gain market share.
- Look at it from a business perspective: If someone has an old phone, and doesn’t upgrade (say for financial reasons), will they buy your app? So not supporting older devices may be fiscally sound.
Analyzing this, the result for me was simple: My software is very pedestrian performance wise, and doesn’t push limits or use exotic features. So my main concern was how much of a user base did I lose by ignoring an older version. For that, searches online showed some developers that kept stats from their popular programs (like Audiobooks). And these results seem to show that in mid-2013 iOS 5 and 6 took care of 95% or more of users (in some cases, it was more like 98%), while iOS 4.x took care of virtually everyone else.
Whether I’ll aim for iOS 4 and that remaining 2-5% is a question I can defer a little longer – but at least now my ‘aim’ is better…