Reputation: 2102
I'm wondering if there is a way to deploy an iOS 5 only version of an app and not have later versions of iOS be able to run this app. I'm aware of the the Base SDK version and deployment target options to configure which systems an application runs on but is there a way to specify that an app should only run on iOS 5?
Reason: I have a newer version of an app that has more features, which use more memory, and therefore crashes on the iPad 1. The older version of the app has less features and runs fine. I'd like to deploy the old version to iOS 5 only and for everything iOS 6 and above, I'd like to deploy the new version.
Is there a way to do this without releasing two separate apps, thus confusing the user as to which one to download?
Upvotes: 0
Views: 209
Reputation: 70673
You can only release apps in the App Store that Apple has approved after they test it. Sine they are reported to usually test apps on the latest release of iOS, if your app crashes or fails to run on the current OS (6.1.3 today), Apple will likely reject the app.
So no.
Upvotes: 0
Reputation: 124997
Is there a way to do this without releasing two separate apps, thus confusing the user as to which one to download?
You should build a single app that conditionally enables features based on whether or not the device supports them. The iOS6 features that won't work on iOS5 should be hidden when running on iOS5. Features that depend on certain hardware should be hidden when that hardware isn't present. Try to test for the specific functionality you need, though -- don't assume that a feature is or isn't present based on the version of the operating system.
Upvotes: 0
Reputation: 8512
You can't restrict app for newer iOS version.
As you stated in your question, your problem is not iOS version, but iPad 1.
You can detect iPad 1 in runtime using +[UIDevice model]
and -[NSProcessInfo processorCount]
. iPad 1 has just one CPU core, all other iPad models have 2 or more cores.
Then just disable or alter some features on this device.
Upvotes: 1
Reputation: 318774
I'm wondering if there is a way to deploy an iOS 5 only version of an app and not have later versions of iOS be able to run this app
No, this can't be done. Even if your app has a Base SDK of 5.0, there is no way to prevent iOS 6 users from installing and running the app.
Is there a way to do this without releasing two separate apps, thus confusing the user as to which one to download?
As "matt" stated, yes. You create one app. You set the Deployment Target to 5.0 and the Base SDK to "latest". The trick is that you need to have lots of runtime checks so users of iOS 5 only get the "older, lower memory" functionality. Users of iOS 6 should get all of the newer functionality.
Your app description (and the "What's New" notes) should make it clear that iOS 5 and iOS 6 users will get different functionality.
Upvotes: 3
Reputation: 349
You can just program your app for iOS5 compatibility and send it to Apple. When ou are uploading your app, it asks for some information, one of them being compatibility. If you state that it's only iOS5 compatible, they might accept it, but I'm not 100% certain.
Upvotes: 1
Reputation: 534893
I'd like to deploy the old version to iOS 5 only and for everything iOS 6 and above, I'd like to deploy the new version. Is there a way to do this without releasing two separate apps...?
Yes, you'll have to write conditional code where certain things happen if the device is running iOS 5 and other things happen if the device is running iOS 6.
Upvotes: 0