iOS 4 and 5 compatibility : Prompt users to update iOS - iphone

The skinny: my app works excellently in iOS 5.x. However, certain features do not work so well in 4.x. All is resolved with an update to 5.x.
Option 1 - Good programmer: find out what was done in my app with these particular features and why they don't work in 4.x.
Option 2 - Lazy programmer: detect the version of iOS the user is running (I'm already aware that this is not advised) and suggest they upgrade if it's older. Even further, lead them to Settings/Software Update through the use of iPhone URL (eg: iossettings://).
Your advise is greatly appreciated.

This question may not suit StackOverflow very well, but I'll provide my thoughts. Support the platform or don't support the platform. If you don't support iOS 4, then don't support it and compile the app to require iOS5. If you do support it, then fix the bugs. Don't support it but nag the user. That's just lazy as you say.
Many apps have already moved to iOS5-only. Unless your market is unusual and is particularly likely to have iOS4, then I would drop iOS4 support and move on. The time you waste supporting it won't translate into enough sales to cover it for most apps IMO. And the bad reviews you get on iOS4 will outweigh the few extra sales you might get there. Pick an audience and delight them.

Most people are running iOS 4 because their devices don't support iOS 5. Option 1 makes a lot more sense. Or just don't support iOS 4 at all.

Related

IOS8 App Supports for IOS 7 and IOS 6?

I am going to develop an Iphone application in IOS8.But I have no idea whether it will work on IOS7 and IOS6.Can anyone clarify my doubts with clear explanation?
Thanks & Regards
Sam.P
It would only support the older OSes if you didn't use any features exclusive to the newer OSes, and if you targeted the old OS when building the application. There is nothing stopping you from doing so, except that you will miss out on a lot of the new technologies (and adoption of recent iOS versions is very high traditionally among Apple's customers, so it isn't a huge issue generally to only support the latest version).
You must make this decision before you publish your app, the earlier the better. You can support all OSes starting from 6 and only use APIs and features available in 6. Or use all the new features of the 8 and make the app incompatible with the earlier versions.
Each published app has a target OS version. If you specify 8 then users with earlier OSes simply won't see your app in the app store. However it's not sufficient to set your target to 6 to support earlier system. You must be careful in using the APIs: each has a documented version where it became available. And you must test, at least in simulators with different OS versions. iOS 6 simulator is still available as a separate download for Xcode 5. I'm not sure about Xcode 6.
iOS 7 adoption wasn't as overwhelming as with earlier updates because Apple made big changes in the UI. So the iOS 6 user base is still significant. I think it still makes sense to support iOS 6 for a new commercial application.

How do I support multiple iOS versions?

So there´s quite a few versions of iOS up and running on devices now, and I´ve some questions on supporting the different kinds.
If I were to release an application know, wanting to use some features in iOS 6, but don´t want to lose the iOS 5 users, is it possible to target both versions within the same application that would be available on the App Store?
What is the other option here? To skip the iOS 6 features and just target iOS 5? Will the application have full support for iOS 6 in this case?
Thank you.
iOS users upgrade faster than just about any other group. Unless you have a special user base, I do not recommend spending significant time supporting a version of iOS older than about 6 months. For many kinds of apps, even that is too long. Matt Gemmell wrote an excellent discussion of this when iOS 5 came out.
During your transition period, before you switch to the latest version, my recommendation is to build against the old SDK. Don't just set "Deployment Target." Set "Base SDK". This means you need to keep around the old SDKs and link them into your copy of Xcode because Apple will keep deleting them. Google around for how to build against old SDKs. There are lots of discussions. I'm sure there are tons on SO. There are several reasons I strongly recommend this (regardless of how long you wait to upgrade):
It is somewhat rare that you can actually provide a feature in the newest version that you don't in the old version. Most of the time you wind up having to provide it in the older version in some form. That means you now have two versions of the code doing basically the same thing. Most of the time the older way is harder, but still works. Once you've written the hard method, what's the point of also writing the easy method, and then writing the extra code to choose between them?
The testing required to swap features in and out is incredibly high. It's hard enough to test features in the first place. Now test that and test not having the feature.
The compiler gives you no help when you use "Development Target." If you call a method from iOS 6 without checking that it exists, then you will get no warning. You'll just crash on iOS 5. If you use Base SDK, then the compiler will tell you when it's not available. I spoke with the Xcode team at WWDC about this. They noted that Apple recommends using Deployment Target, but admitted it's insanely fragile to use in practice.
So basically, I say stay on the iOS 5 SDK until you're ready to go to iOS 6. Then go to the iOS 6 SDK and never look back.

What iOS versions should I hope to support today? [closed]

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 11 years ago.
I am digging deeper into iOS application coding, and am running across the usual problem of trying to decide what versions of the iOS base I would like to focus on.
The application I am focusing mostly on is an older one of mine, DumTek, a Middle Eastern drumming tutor. It runs currently on anything back to 3.0, and might have even worked further back. I do use iAd but those are easy to enable or disable for different versions.
It's clear that Apple does not want me to make applications that go back too far. I have an older 3.x device which I mostly use for development, but that version of the OS and even 4.x are lacking some pretty cool features I'd like to use. I could enable or disable features depending on OS support, but I fear that will complicate things immediately and make maintenance harder. It also greatly increases my on-device testing footprint.
I am inclined to decide that I should just support 5.x so I can use iCloud for personal data storage, but that is not 100% necessary. I could say for 5.x devices the option to use iCloud is there, but for 4.x devices it stores locally only. I could also continue to support 3.x devices by disabling all of these new features.
So, in summary:
Should I abandon 3.x, even though not everyone has upgraded to 5.x capable devices?
Should I abandon 4.x and focus entirely on 5.x devices?
This is a fundamentally difficult question to answer, and depends on lot on who you think your customers are, and how complicated your code would get. No one can offer super-specific insight about your business case without knowing a lot more about it.
As you're determined, there are two considerations:
Whether you're targeting devices that can't run iOS 4 or 5.
Trading off your long term technical complexity vs potential users.
Re: #1, there are some devices that are stuck on iOS 3.x forever (iPhone 2G, early iPod touches). There are some that probably are stuck on iOS 4.x forever, but I'm not sure where that line is.
In general, iOS users who can upgrade, do so quickly (I don't have a link for this but maybe others do--- I've certainly seen this of my users).
TL;DR: A reasonable rule of thumb in general is, unless you're making a point of supporting legacy devices or laggard users, you're pretty much OK requiring the latest major version of iOS. iOS 5.x is still very new, but within a month or two it will be effectively universal on devices that support it.
Typically support up to one version behind. I'd say abandon supporting 3.x explicitly, but still support 4.x until adoption of 5.0 increases.
http://insights.chitika.com/2011/ios5-breaks-into-the-market-with-record-numbers/
You should be able to soft-implement iCloud just like with iAd between 3 and 4, and have users on 4.x use whatever prior storage version you've been using in the app.
However, regardless of what you do, make sure your App Store data (and info files) reflect the minimum iOS required for your app... I updated my app to use 4.0 features, and forgot to update these, and as a result all of my 3.x users updated to the new version and get a crashing app - poisoned my reviews forever.
There may be some statistical evidence suggesting that users of devices running old OS versions tend very disproportionately to not be spending money on new apps. You will have to decide if that small and shrinking customer base is worth your development time, versus spending that same time on other apps/endeviors for the larger customer base running newer OS versions and buying more apps.
The developers of instapaper are one possible source for OS versions percentages using that popular app.

Percentage users still on iOS 3.x? Should I bother?

I know its been asked/answered before, but everything I look at is from back in July, or otherwise out of date.
Should I bother making my app compatible with iOS 3.x (probably 3.1.2 and up)? Means extra testing some coding changes, etc, etc.
Or are enough users on iOS 4.x that I don't need to worry about it.
If there are any sites that keep up to date (daily, weekly, even monthly) stats, please post.
This answer is 6 years old.
You can confidently ignore 3.x now.
DO NOT BOTHER.
You will find no difference in sales. It's a 4 world as of xmas 2010.
A reasonable number of users are unable to upgrade to iOS 4.x and will remain forever in 3.x land because their phones are pre 3G. Specifically many users in countries without access to the latest smart phones will still consider a 2G iPhone to be modern. I'd recommend launching with iOS 4.x and adding support if your user base desires it (and if your app gets traction, it is a very competitive market). As an aside, the iPhone (2G) were on sale until mid-2008; many users are still under contract on a device and unable to upgrade! Poor souls!
The evidence of the installed base of devices with older OS versions is misleading. People running devices with older OS versions buy new paid apps much less often. Unless you are doing a free app, it's not worth it.
Something like 10-20% of my users appear to be on 3.x in the past 2 weeks. I bet the percentage will drop a bit after people get shiny new iPhone 4s for Christmas.
Here's the best link I've been able to find so far. Best, mostly because it is kept up to date. Of course it still just reflects the users that this one company has, so it could be skewed, and they don't say how many users it is. But its something.
http://www.sunflat.net/en/iphoneoscount/index.html
Looks like iOS3.x is under the 10% mark if you just look at iPhone users.
If anyone has a similar link that has current stats, please post.
Skip 3.x. As a developer, I have supported 3.x, but I am now ready to move on to 4.x only because the conditionals in my code that are required for supporting any 4.x feature in a 3.x compatible app are creating too many quality control testing situations.
Here are the stats you are looking for:
http://www.9to5mac.com/47661/developer-stats-say-90-of-ios-device-users-run-ios-4-x/
Cheers,
Henry
It never hurts to support older iOS versions, until Apple says it's not necessary.
Anyway, here are some results from Google.
Stats from Delhi City
iOS 3.0 Adoption Rate
AdMod Updated iOS Stats
September Breakdown

Is it worth only supporting the iOS 4 when making an iPhone app?

If I am creating an iPhone app, is it worth trying to make sacrifices with functionality (e.g. with MPMoviePlayer) in the application and support previous versions of the OS?
Are the majority of iPhone users running iOS 4?
Will I lose out on a big portion of the market if I only support iOS 4?
There will still be a lot of iOS 3.x users because iOS 4 cannot be installed on original iPhones and older iPod touches. And iOS 4 barely works on iPhone 3G. You can still use functionality of iOS 4 while still targeting older versions though.
I've been learning through doing user testing that a lot of people don't upgrade their apps, much less their OS. Add that to the fact that lots of devices can't run 4.0, and I think you'll limit your market if you don't support at least 3.1.x.
As to 2.x, this report says it was less than 13% 5 months ago, so it's probably safe not to support for a new app at this point.
First, you're forgetting something: You need to support 3.2 if you want your app to run on the iPad.
You don't have to "sacrifice functionality"; you just have to code your app to detect what features are available at runtime and fallback gracefully.
If your app isn't free, then the real question is "Will users who don't upgrade buy my app?", and I suspect the answer is generally no. Apparently a substantial portion of the 2.x installed base are iPod Touch users who don't want to pay for the upgrade.
The other factor is the amount of work. If you use few enough iOS 4 features that it's not much work to also make it run on 3.1.3, then supporting 3.1.3 is a no-brainer. Of course, never support an OS version you can't test.
If this is a brand new app, there's not much point in supporting older versions of the OS. It will require making sacrifices when programming the app, and over time everybody will eventually move to iOS 4.