Is there a way to only allow certain hardware (iOS)?

I have a relatively graphic intensive app, that runs well on iPhone 4S and iPhone 5 (as well as iPod and iPad equivalents). However, its a bit too much for hardware below the 4S threshold. Is there a way to require specific hardware to buy the app from the app store? (Not iOS version as iPhone 4 can get 6.X, but doesn’t have the processing power to run the app).

tl;dr - How can I require iPhone 4S and higher to be able to download from app store?

You cannot say that your app only runs on certain devices. You can, however, say your app needs certain features. So, if you could say your app needs an 8M camera, it would only run on 4S and 5.

Unfortunately Apple doesn’t allow you, the developer, to decide on what hardware an app can / should run. Apple determines this fully automatically. The only way you can restrict the target devices is by specifying certain hardware requirements that is only available on your desired devices.

For example we had a lot of support tickets because one of our apps didn’t run probably on 3GS phones. We had to include the front-facing-camera requirement in the UIRequiredDeviceCapabilities to exclude the 3GS.

This is really a pain. The worst thing in my opinion is that Apple didn’t understand our point why we need to exclude this explict device type. Sadly in most official Apple forums you see the same attitude in the majority of the community.

We had something like 15 eMails with the Apple support but the only “solution” was to require the front-facing-camera. This of course won’t work for each specific restriction you want to implement. In most cases you exclude far more devices than necessary.

See this post:

You can restrict your app to run on certain versions (and better/newer) of iOS. We made a similar decision with our iPad app. The iPad 1 has a tiny fraction of the performance of the iPad 2 and 3 so we definitely wanted to avoid trying to make our beautiful game run on it. Fortunately, Apple did not make iOS 6 available for it. So what we did was specify iOS 6 as our minimum requirement OS which excludes the iPad 1.