Poll: Which iOS version do you require?
Each iOS app has a minimum iOS version that's required. You can see this on iTunes in the left column. For example, foursquare requires iOS 4.0:
http://itunes.apple.com/us/app/foursquare/id306934924?mt=8
If you're an iOS developer, which version do you require for your apps? If it's different for different apps, just pick the most common one.
36 comments
[ 4.0 ms ] story [ 37.1 ms ] threadhttp://www.quora.com/What-proportion-of-all-iPhone-owners-us...
It's a genuine question, even though it sounds rhetorical. The same applies to people still using pre-3GS devices.
I'm working on the assumption that these people simply won't spend (much) money on apps, and that the effort involved in supporting older devices and OSs won't ever be repaid. If it's going to take you even one day, probably not worth bothering. iOS development is a crapshoot enough, without your spending time trying to support a wider range of devices. The longer you spend coding support for older devices, the smaller the percentage of the market they will be by the time you release.
(This is particularly true for OpenGL stuff, but I imagine it goes for Cocoa as well.)
Consider European markets where costs to upgrade iPhone 3G to 3GS/4G are much more than $200.
After being live for 45 days, it has around 50,000 users total at this point. Of those 50,000 users, less than 2% (817) were using pre-4.0 devices.
At that point, it was easy to convince them to abandon 3.x support for the next version, which will greatly simplify a lot things for us. I'm anxious to see how quickly 5.0 is adopted once it hits.
The issue here is that Apple specifically blocks restoring to any firmware except the very latest available. Since the iPhone 3GS and iOS 3.0, only the most recent firmware released for that device is allowed to be installed onto the device. And, to be very clear: that doesn't mean no downgrades, it means only the very latest is allowed. And that's even through Xcode's Organizer (which will "helpfully" allow you to try and restore older versions, which will then return an error partially through the restore), as well as iTunes when specifying a custom file to restore with.
Because of that restriction, I'm not sure how any other version can be supported: you have iOS 3.1 on an original iPhone, iOS 4.2 that an iPhone 3G can restore to, and iOS 4.3 on the current models. But other iOS versions don't have devices that can be restored to them. Do you just test in the simulator? Try and keep a device with the older version around, and hope it never needs to be replaced or restored if something goes wrong? I'm just not sure how something like that is managed.
(Note: there is a way around the above restriction, namely, saving Apple's "okay, you can restore to this version" response (often called a SHSH hash) when Apple is currently allowing that device to be restored to a certain version, and then spoofing that same reply later when you want to restore. That's how TinyUmbrella[1] and Cydia's TSS service[2] work, but it's (of course) not supported and won't even be possible as of iOS 5.)
[1]: http://thefirmwareumbrella.blogspot.com/ [2]: http://www.saurik.com/id/12
I don't think it's reasonable to care about <3.1.2 on the phone shaped devices, or <4.0 on iPads
It all depends on what devices you plan on supporting. If you are doing something advanced with audio or graphics, you may feel that only the later devices are capable of what you want to do, so you only support the latest FW on the latest devices. That makes it an easy choice. If you are doing something significantly more straightforward, like a social networking app, you will probably want the most broad adoption and try to support all devices, meaning supporting 3.1.3.
He simulator is only good to test that thins are laying out properly and working in general. It's not a very good test of device capability or even versions.
I haven't checked yet, but I would be surprised if the latest sdk for v5 even supports building for 3.x versions, given how apple wants to keep pushing people forward.
Finally, you should check Latest stats on original iPhone and iPod touch usage. I am pretty sure that it will fall significantly short below 3GS and 4 usage. That should be part of your decision making on whether or nit it is worth developing for those devices.
I have the current iPhone. I keep it updated to the latest stable and it's my primary development device.
When significant new beta comes out, I buy a latest gen iPod Touch and install the beta. This becomes my primary development device for all beta builds.
Once the new iOS version is released, I update my iPhone to the latest OS version. At the same time, since Apple allows some overlap, I downgrade the iPod Touch to the latest old version of iOS. At this point, I leave the iPod touch frozen at that iOS version and use it for old compatibility testing.
Also, if there are significant bugs on apples part in a particular iOS that hamper our app, we'll drop it early.
Also, the 4.0 style animation is so much easier and less error prone, customers demanding <4.0 compatibility make me cry a bit.
Wireless updates (announced for iOS 5) should definitely help though.
E.g. what features and/or improvements make it so apps like Foursquare require 4.0?
Although I'm not sure what would happen if you compiled the appropriate parts of http://compiler-rt.llvm.org/ into a 3.x application.
The highest iOS the 2nd gen can support is 4.2, but 4 is the lowest with most of the nicer features, and covers 90% of all devices (probably higher % now).
That said, I do intend to start requiring iOS 3.1 going forward, due to the drastically decreased user community on 2.x and a killer feature that Apple added in iOS 3.1 (one of the few features added that would ever make me consider this): objc_setAssociatedObject().