Zebedee Pedersen
Zebedee Pedersen

Reputation: 435

Restrict to certain iOS target devices for App Store submission

I've had an iTunes App Store submission bounce back because of problems running on iPhone 4 hardware.

Basically, the app is written to farm all networking activity off to a background thread so that the UI doesn't lock up while it's waiting for the server to respond on slow (cellular) data connection. This works fine on dual-core devices like the iPad 2 + iPhone 4S, but causes slow response times and errors on older, single-core hardware like the iPad/iPhone 4.

I did include notes to that effect in my submission, but I wondered if there was a formal way to restrict the target device in iTunes Connect?

Cheers!

Upvotes: 16

Views: 26149

Answers (4)

Molotoff
Molotoff

Reputation: 563

Actually, there might be a way:

Adding an item to UIRequiredDeviceCapabilities in your Info.plist with the requirement of bluetooth-le should limit your app to iPhone 4S/5 and iPad 3, 4 and mini. You could also throw in a camera-flash requirement to limit the app to iPhones only, should you need that.

See DeviceCompatibilityMatrix

Upvotes: 20

Haroldo Gondim
Haroldo Gondim

Reputation: 7995

You can only restrict your app for iPhone or iPad in the project settings, restricting also in publishing in the App Store.

See where you can set the type.

enter image description here

To restrict the some model like iPhone 4/4s you should do this programmatically getting the size and redirecting to some ViewController informing that your app is no supported in this model.

See here how get the screen size.

CGSize result = [[UIScreen mainScreen] bounds].size;

switch ((int) result.height) {
    case 480: 
        NSLog(@"iPhone 4 / 4s");
        break;

    case 568: 
        NSLog(@"iPhone 5 / 5c / 5s");
        break;

    case 667:
        NSLog(@"iPhone 6 / 6s"); 
        break;

    case 736: 
        NSLog(@"iPhone 6+ / 6s+");
        break;

    default: 
         NSLog(@"Other screen size, could be an iPad or new device model.");        
         break;
}

Is important to remember that Apple wants the maximum possible support for your apps and not support for a specific model can reject your app. But if you only no support the iPhone 4/4s you probably will publish as usual. First of all try to adapt your code to use auto-layout, only if is not possible you restrict by some device model.

I have a published app and restrict for iPhone 4s. It is approved as usal.

Upvotes: 2

Adi
Adi

Reputation: 2073

I just found the following when looking into it - this should help you submit and approved by Apple as it is the guidelines from Apple.

Device Compatibility

The information property list (Info.plist) file contains critical information about your app’s configuration and must be included in your app bundle. Every new project you create in Xcode has a default Info.plist file configured with some basic information about your project. You can modify this file to specify additional configuration details for your app.

The UIRequiredDeviceCapabilities key lets you declare the hardware or specific capabilities that your app needs in order to run. All apps are required to have this key in their Info.plist file. The App Store uses the contents of this key to prevent users from downloading your app onto a device that cannot possibly run it. The tables in this chapter show all iOS devices and their capabilities.

Hope it helped.

Upvotes: 2

Alan MacGregor
Alan MacGregor

Reputation: 511

Unfortunately not at the moment, there is a list of options available for you to restrict the user from purchasing the app but nothing for restricting due to the cores

List: http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

Upvotes: 10

Related Questions