Restrict to certain iOS target devices for App Store submission

23,517

Solution 1

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

Solution 2

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

Solution 3

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.

Solution 4

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.

Share:
23,517
Zebedee Pedersen
Author by

Zebedee Pedersen

Updated on March 27, 2020

Comments

  • Zebedee Pedersen
    Zebedee Pedersen about 4 years

    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!

  • Zebedee Pedersen
    Zebedee Pedersen about 12 years
    I feared that may be the case. I wonder if there are any APIs I could use that would preclude the application running on older devices?
  • Alan MacGregor
    Alan MacGregor about 12 years
    They may exist but they would not restrict the user downloading it in the first place, really not recommended which is a shame as devices too old to run apps properly is a big problem
  • Zebedee Pedersen
    Zebedee Pedersen about 12 years
    It definitely is a problem. For some applications, particularly those using DSP, it's not a case of just 'programming better', the 3G/3GS & even the iPhone 4 just aren't up to processing that much signal data.
  • Ray Fix
    Ray Fix about 10 years
    Hadn't considered bluetooth-le. +1 for that. You shouldn't have to go to the extreme of using the flash to make iPhone only... you can simply not build a universal app and achieve that.
  • snibbe
    snibbe about 10 years
    Trying to use this method got our app rejected, so it isn't a valid approach.
  • Molotoff
    Molotoff almost 10 years
    I've updated the link. @sss, it would be interesting if you could elaborate, what you did and how you solved your problem...
  • snibbe
    snibbe almost 10 years
    Sorry to say, the only solution we found to pass app review, was to make our app work on iPhone 4 by removing some features and making some optimizations.
  • abdus.me
    abdus.me almost 9 years
    seems to be a good solution but this will also exclude ipad 2 from compatible devices.
  • Flyingkiwi
    Flyingkiwi about 8 years
    I agree. I also had an app rejected by Apple because of required capabilities in the plist which were not used in the app. Either you use the features required in the plist, or you must remove them from the requirements. Adding a requirement to the plist simply to restrict the hardware will lead your app to be rejected.
  • allo86
    allo86 over 7 years
    Is there a way to exclude iPods? I mean, allow the user to install the app in iPhones & iPads, but not in iPods ...
  • TRVD1707
    TRVD1707 about 4 years
    You might set required feature telephony in UIRequiredDeviceCapabilities or even restrict it to only devices that support arm64. developer.apple.com/documentation/bundleresources/…