Make Better Things



I like to make better things.

How to prevent apps to being installed on wrong or incapable devices

There may be cases when your app does not run because the device does not have front camera (or any such feature which is required to run the app). You can always check the device capabilities before using the special feature (check my this post if you don’t know how), But if you app absolutely depends on the feature you should prevent users from installing your app. The real question here is how can you prevent users from installing the app. The answer is UIRequiredDeviceCapabilities key in your info.plist file.

UIRequiredDeviceCapabilities (Array or Dictionary – iOS) lets iTunes and the App Store know which device-related features an application requires in order to run. iTunes and the mobile App Store use this list to prevent customers from installing applications on a device that does not support the listed capabilities.
If you use an array, the presence of a given key indicates the corresponding feature is required. If you use a dictionary, you must specify a Boolean value for each key. If the value of this key is true, the feature is required. If the value of the key is false, the feature must not be present on the device. In both cases, omitting a key indicates that the feature is not required but that the application is able to run if the feature is present.
You should include keys only for the features that your application absolutely requires. If your application can accommodate missing features by avoiding the code paths that use those features, do not include the corresponding key.
Here is a list of all the keys and their meaning -

telephony
Include this key if your application requires (or specifically prohibits) the presence of the Phone application. You might require this feature if your application opens URLs with the tel scheme.

wifi
Include this key if your application requires (or specifically prohibits) access to the networking features of the device.

sms
Include this key if your application requires (or specifically prohibits) the presence of the Messages application. You might require this feature if your application opens URLs with the sms scheme.

still-camera
Include this key if your application requires (or specifically prohibits) the presence of a camera on the device. Applications use the UIImagePickerController interface to capture images from the device’s still camera.

auto-focus-camera
Include this key if your application requires (or specifically prohibits) auto-focus capabilities in the device’s still camera. Although most developers should not need to include this key, you might include it if your application supports macro photography or requires sharper images in order to do some sort of image processing.

front-facing-camera
Include this key if your application requires (or specifically prohibits) the presence of a forward-facing camera. Applications use the UIImagePickerController interface to capture video from the device’s camera.

camera-flash
Include this key if your application requires (or specifically prohibits) the presence of a camera flash for taking pictures or shooting video. Applications use the UIImagePickerController interface to control the enabling of this feature.

video-camera
Include this key if your application requires (or specifically prohibits) the presence of a camera with video capabilities on the device. Applications use the UIImagePickerController interface to capture video from the device’s camera.

accelerometer
Include this key if your application requires (or specifically prohibits) the presence of accelerometers on the device. Applications use the classes of the Core Motion framework to receive accelerometer events. You do not need to include this key if your application detects only device orientation changes.

gyroscope
Include this key if your application requires (or specifically prohibits) the presence of a gyroscope on the device. Applications use the Core Motion framework to retrieve information from gyroscope hardware.

location-services
Include this key if your application requires (or specifically prohibits) the ability to retrieve the device’s current location using the Core Location framework. (This key refers to the general location services feature. If you specifically need GPS-level accuracy, you should also include the gps key.)

gps
Include this key if your application requires (or specifically prohibits) the presence of GPS (or AGPS) hardware for greater accuracy when tracking locations. If you include this key, you should also include the location-services key. You should require GPS only if your application needs more accurate location data than the cell or Wi-fi radios might otherwise allow.

magnetometer
Include this key if your application requires (or specifically prohibits) the presence of magnetometer hardware. Applications use this hardware to receive heading-related events through the Core Location framework.

gamekit
Include this key if your application requires (or specifically prohibits) Game Center (iOS 4.1 and later.)

microphone
Include this key if your application uses the built-in microphone or supports accessories that provide a microphone.

opengles-1
Include this key if your application requires (or specifically prohibits) the presence of the OpenGL ES 1.1 interfaces.

opengles-2
Include this key if your application requires (or specifically prohibits) the presence of the OpenGL ES 2.0 interfaces.

armv6
Include this key if your application is compiled only for the armv6 instruction set. (iOS v3.1 and later.)

armv7
Include this key if your application is compiled only for the armv7 instruction set. (iOS v3.1 and later.)

peer-peer
Include this key if your application requires (or specifically prohibits) peer-to-peer connectivity over Bluetooth. (iOS v3.1 and later.)

Category: iPhone

Tagged: ,

One Response

  1. [...] well if you really want to prevent users from installing your app if they don’t have a autofocus camera then you can add “UIRequiredDeviceCapabilities” key in your info.plist file and can add “auto-focus-camera” value to it. for more info you can visit my blog entry – https://www.makebetterthings.com/blogs/iphone/how-to-prevent-apps-to-being-installed-on-wrong-or-inca… [...]

Leave a Reply to Prevent user from installing my app if capability not met - Programmers Goodies × Cancel reply