iOS Keys

The iOS frameworks provide the infrastructure you need for creating iOS apps. You use the keys associated with this framework to configure the appearance of your app at launch time and the behavior of your app once it is running.

UIKit keys use the prefix UI to distinguish them from other keys. Other frameworks also use appropriate prefixes. For more information about configuring the information property-list file of your iOS app, see iOS App Programming Guide.

Key Summary

Table 1 contains an alphabetical listing of iOS keys, the corresponding name for that key in the Xcode property list editor, a high-level description of each key, and the platforms on which you use it. Detailed information about each key is available in later sections.

Table 1  Summary of UIKit keys

Key

Xcode name

Summary

Availability

MKDirectionsApplicationSupportedModes

None

Specifies the types of directions the app can deliver. See “MKDirectionsApplicationSupportedModes” for details.

iOS 6.0 and later

UIAppFonts

“Fonts provided by application”

Specifies a list of app-specific fonts. See “UIAppFonts” for details.

iOS 3.2 and later

UIApplicationExitsOnSuspend

“Application does not run in background”

Specifies whether the app terminates instead of run in the background. See “UIApplicationExitsOnSuspend” for details.

iOS 4.0 and later

UIBackgroundModes

“Required background modes”

Specifies that the app needs to continue running in the background. See “UIBackgroundModes” for details.

iOS 4.0 and later

UIDeviceFamily

“Targeted device family”

Inserted automatically by Xcode to define the target device of the app. See “UIDeviceFamily” for details.

iOS 3.2 and later

UIFileSharingEnabled

“Application supports iTunes file sharing”

Specifies whether the app shares files with the user’s computer through iTunes. See “UIFileSharingEnabled” for details.

iOS 3.2 and later

UIInterfaceOrientation

“Initial interface orientation”

Specifies the initial orientation of the app’s user interface. See “UIInterfaceOrientation” for details.

iOS

UILaunchImageFile

“Launch image”

Specifies the name of the app’s launch image. See “UILaunchImageFile” for details.

iOS 3.2 and later

UILaunchImages

None

Specifies the launch images to use for the app. See “UILaunchImages” for details.

iOS 7.0 and later

UIMainStoryboardFile

“Main storyboard file base name”

Specifies the name of the app’s storyboard resource file. See “UIMainStoryboardFile” for details.

iOS 5.0 and later

UINewsstandApp

None

Specifies whether the app presents its content in Newsstand. See “UINewsstandApp” for details.

iOS 5.0 and later

UIPrerenderedIcon

“Icon already includes gloss effects”

Specifies whether the app’s icon already includes a shine effect. See “UIPrerenderedIcon” for details.

iOS

UIRequiredDeviceCapabilities

“Required device capabilities”

Specifies the device-related features required for the app to run. See “UIRequiredDeviceCapabilities” for details.

iOS 3.0 and later

UIRequiresPersistentWiFi

“Application uses Wi-Fi”

Specifies whether this app requires a Wi-Fi connection. See “UIRequiresPersistentWiFi” for details.

iOS

UIStatusBarHidden

“Status bar is initially hidden”

Specifies whether the status bar is initially hidden when the app launches. See “UIStatusBarHidden” for details.

iOS

UIStatusBarStyle

“Status bar style”

Specifies the style of the status bar as the app launches. See “UIStatusBarStyle” for details.

iOS

UISupportedExternalAccessoryProtocols

“Supported external accessory protocols”

Specifies the communications protocols supported for communication with attached hardware accessories. See “UISupportedExternalAccessoryProtocols” for details.

iOS 3.0 and later

UISupportedInterfaceOrientations

“Supported interface orientations”

Specifies the orientations that the app supports. See “UISupportedInterfaceOrientations” for details.

iOS 3.2 and later

UIViewControllerBasedStatusBarAppearance

None

Specifies whether the view controller determines the status bar style. See “UIViewControllerBasedStatusBarAppearance” for details.

iOS 7.0 and later

UIViewEdgeAntialiasing

“Renders with edge antialiasing”

Specifies whether Core Animation layers use antialiasing when drawing does not align to pixel boundaries. See “UIViewEdgeAntialiasing” for details.

iOS 3.0 and later

UIViewGroupOpacity

“Renders with group opacity”

Specifies whether Core Animation layers inherit the opacity of their superlayer. See “UIViewGroupOpacity” for details.

iOS 3.0 and later

MKDirectionsApplicationSupportedModes

MKDirectionsApplicationSupportedModes (Array - iOS) specifies the modes of transportation for which the app is capable of giving directions. The array contains one or more strings, each of which indicates a supported mode. Apps may include the following strings in this array:

If this key is in your app’s Info.plist file, you must upload a GeoJSON file to iTunes Connect that indicates the regions for which your app is capable of providing directions. For more information about specifying this file, see Location and Maps Programming Guide.

This key is supported in iOS 6.0 and later.

UIAppFonts

UIAppFonts (Array - iOS) specifies any app-provided fonts that should be made available through the normal mechanisms. Each item in the array is a string containing the name of a font file (including filename extension) that is located in the app’s bundle. The system loads the specified fonts and makes them available for use by the app when that app is run.

This key is supported in iOS 3.2 and later.

UIApplicationExitsOnSuspend

UIApplicationExitsOnSuspend (Boolean - iOS) specifies that the app should be terminated rather than moved to the background when it is quit. Apps linked against iOS SDK 4.0 or later can include this key and set its value to YES to prevent being automatically opted-in to background execution and app suspension. When the value of this key is YES, the app is terminated and purged from memory instead of moved to the background. If this key is not present, or is set to NO, the app moves to the background as usual.

This key is supported in iOS 4.0 and later.

UIBackgroundModes

UIBackgroundModes (Array - iOS) specifies that the app provides specific background services and must be allowed to continue running while in the background. These keys should be used sparingly and only by apps providing the indicated services. Where alternatives for running in the background exist, those alternatives should be used instead. For example, apps can use the signifiant location change interface to receive location events instead of registering as a background location app.

Table 2 lists the possible string values that you can put into the array associated with this key. You can include any or all of these strings but your app must provide the indicated services.

Table 2  Values for the UIBackgroundModes array

Value

Description

audio

The app plays audible content in the background.

location

The app provides location-based information to the user and requires the use of the standard location services (as opposed to the significant change location service) to implement this feature.

voip

The app provides Voice-over-IP services. Apps with this key are automatically launched after system boot so that the app can reestablish VoIP services. Apps with this key are also allowed to play background audio.

fetch

The app requires new content from the network on a regular basis. When it is convenient to do so, the system launches or resumes the app in the background and gives it a small amount of time to download any new content.

This value is supported in iOS 7.0 and later.

remote-notification

The app uses remote notifications as a signal that there is new content available for download. When a remote notification arrives, the system launches or resumes the app in the background and gives it a small amount of time to download the new content.

This value is supported in iOS 7.0 and later.

newsstand-content

The app processes content that was recently downloaded in the background using the Newsstand Kit framework, so that the content is ready when the user wants it.

This value is supported in iOS 5.0 and later.

external-accessory

The app communicates with an accessory that delivers data at regular intervals.

This value is supported in iOS 5.0 and later.

bluetooth-central

The app uses the CoreBluetooth framework to communicate with a Bluetooth accessory while in the background.

This value is supported in iOS 5.0 and later.

bluetooth-peripheral

The app uses the CoreBluetooth framework to communicate in peripheral mode with a Bluetooth accessory. The system will alert the user to the potential privacy implications of apps with this key set. See “Best Practices for Maintaining User Privacy” in iOS App Programming Guide for more information on privacy.

This value is supported in iOS 6.0 and later.

This key is supported in iOS 4.0 and later.

UIDeviceFamily

UIDeviceFamily (Number or Array - iOS) specifies the underlying hardware type on which this app is designed to run.

The value of this key is usually an integer but it can also be an array of integers. Table 3 lists the possible integer values you can use and the corresponding devices.

Table 3  Values for the UIDeviceFamily key

Value

Description

1

(Default) The app runs on iPhone and iPod touch devices.

2

The app runs on iPad devices.

This key is supported in iOS 3.2 and later.

UIFileSharingEnabled

UIFileSharingEnabled (Boolean - iOS) specifies whether the app shares files through iTunes. If this key is YES, the app shares files. If it is not present or is NO, the app does not share files. Apps must put any files they want to share with the user in their <Application_Home>/Documents directory, where <Application_Home> is the path to the app’s home directory.

In iTunes, the user can access an app’s shared files from the File Sharing section of the Apps tab for the selected device. From this tab, users can add and remove files from the directory.

This key is supported in iOS 3.2 and later.

UIInterfaceOrientation

UIInterfaceOrientation (String - iOS) specifies the initial orientation of the app’s user interface. This key is ignored if the “UISupportedInterfaceOrientations” key is present.

This value is based on the UIInterfaceOrientation constants declared in the UIApplication.h header file. The default style is UIInterfaceOrientationPortrait.

UILaunchImageFile

UILaunchImageFile (String - iOS) specifies the name of the launch image file for the app. If this key is not specified, the system assumes a name of Default.png. This key is typically used by universal apps when different sets of launch images are needed for iPad versus iPhone or iPod touch devices.

If you include this key in your Info.plist file, any launch images you include in your app’s bundle should be based on the string. For example, suppose you want to include portrait and landscape launch images for iPad using the base name MyiPadImage.png. You would include the UILaunchImageFile~ipad key in your Info.plist file and set its value to MyiPadImage.png. You would then include a MyiPadImage-Portrait.png file and a MyiPadImage-Landscape.png file in your bundle to specify the corresponding launch images.

If this key and the “UILaunchImages” key are both present, the app uses the “UILaunchImages” key in iOS 7 and later.

This key is supported in iOS 3.2 and later.

UILaunchImages

UILaunchImages (Array - iOS) explicitly specifies the launch images to use for the app. This key contains an array of dictionaries. Each dictionary contains detailed information about a single launch image and how it is used. Xcode fills in the value of each dictionary based on information you provide in your project settings.

Table 4 lists the keys that can be included in each dictionary of the array.

Table 4  Keys for launch image dictionaries

Key

Description

UILaunchImageName (required)

A string containing the name of the PNG image file. The image file must reside at the top level of the app bundle. The name you specify for this key should not include a filename extension, nor should it include modifiers such as @2x, -568h, ~iphone, or ~ipad.

On disk, your image filenames may still include the @2x, -568h, ~iphone, or ~ipad modifiers as appropriate, although they are not required. The system automatically accounts for such modifiers when choosing which file to load.

UILaunchImageMinimumOSVersion (required)

A string representing the minimum iOS version number for which the image is intended. The form of the version number is the same as for the “LSMinimumSystemVersion” key, which is a string of the form n.n.n where n is a number. For example, images targeting iOS 7 and later should specify a string “7.0”.

UILaunchImageSize

A string containing the width and height of the image. This string represents the size of the display for which the image is intended. You must specify the width and height with respect to the device in a portrait orientation. In other words, portrait and landscape images targeting the same device would have the same width and height.

The format of this string is {width, height} where width and height are the size of the image in points. (The format of this string is the same as that generated by the NSStringFromCGSize function.) For example, the string {320, 480} specifies an image that can be used on an iPhone 4 or iPhone 4S.

If you do not specify this key, the image size is assumed to be {320, 480}.

UILaunchImageOrientation

A string containing the orientation of the image. The value of this key is one of the following values:

  • Portrait

  • PortraitUpsideDown

  • Landscape

  • LandscapeLeft

  • LandscapeRight

If you do not specify a value for this key, the orientation is assumed to be Portrait.

If this key is present, iOS 7 uses it exclusively to obtain launch images. The system does not fall back to the older naming conventions used prior to iOS 7.

This key is supported in iOS 7.0 and later.

UIMainStoryboardFile

UIMainStoryboardFile (String - iOS) contains a string with the name of the app’s main storyboard file (minus the .storyboard extension). A storyboard file is an Interface Builder archive containing the app’s view controllers, the connections between those view controllers and their immediate views, and the segues between view controllers. When this key is present, the main storyboard file is loaded automatically at launch time and its initial view controller installed in the app’s window.

This key is mutually exclusive with the “NSMainNibFile” key. You should include one of the keys in your Info.plist file but not both. This key is supported in iOS 5.0 and later.

UINewsstandApp

UINewsstandApp (Boolean - iOS) specifies the whether the app presents its content in Newsstand. Publishers of newspaper and magazine content use the Newsstand Kit framework to handle the downloading of new issues. However, instead of those apps showing up on the user’s Home screen, they are collected and presented through Newsstand. This key identifies the apps that should be presented that way.

Such apps must also provide default Newsstand icons as described in “Contents of the UINewsstandIcon Dictionary.”

This key is supported in iOS 5.0 and later.

UIPrerenderedIcon

UIPrerenderedIcon (Boolean - iOS) specifies whether the app’s icon already contains a shine effect. If the icon already has this effect, you should set this key to YES to prevent the system from adding the same effect again. All icons automatically receive a rounded bezel regardless of the value of this key.

Value

Description

YES

iOS does not apply a shine effect to the app icon.

NO

(Default) iOS applies a shine effect to the app icon.

UIRequiredDeviceCapabilities

UIRequiredDeviceCapabilities (Array or Dictionary - iOS) lets iTunes and the App Store know which device-related features an app requires in order to run. iTunes and the mobile App Store use this list to prevent customers from installing apps 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 app is able to run if the feature is present.

Table 5 lists the keys that you can include in the array or dictionary associated with the UIRequiredDeviceCapabilities key. You should include keys only for the features that your app absolutely requires. If your app can accommodate missing features by avoiding the code paths that use those features, do not include the corresponding key.

Table 5  Dictionary keys for the UIRequiredDeviceCapabilities key

Key

Description

telephony

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

wifi

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

sms

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

still-camera

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

auto-focus-camera

Include this key if your app 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 app supports macro photography or requires sharper images in order to do some sort of image processing.

front-facing-camera

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

camera-flash

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

video-camera

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

accelerometer

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

gyroscope

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

location-services

Include this key if your app 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 app 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 app needs more accurate location data than the cell or Wi-fi radios might otherwise allow.

magnetometer

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

gamekit

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

microphone

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

opengles-1

Include this key if your app requires (or specifically prohibits) the presence of the OpenGL ES 1.1 interfaces.

opengles-2

Include this key if your app requires (or specifically prohibits) the presence of the OpenGL ES 2.0 interfaces.

opengles-3

Include this key if your app requires (or specifically prohibits) the presence of the OpenGL ES 3.0 interfaces.

armv6

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

armv7

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

peer-peer

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

bluetooth-le

Include this key if your app requires (or specifically prohibits) the presence of Bluetooth low-energy hardware on the device. (iOS 5 and later.)

This key is supported in iOS 3.0 and later.

UIRequiresPersistentWiFi

UIRequiresPersistentWiFi (Boolean - iOS) specifies whether the app requires a Wi-Fi connection. iOS maintains the active Wi-Fi connection open while the app is running.

Value

Description

YES

iOS opens a Wi-Fi connection when this app is launched and keeps it open while the app is running. Use with Wi-Fi–based apps.

NO

(Default) iOS closes the active Wi-Fi connection after 30 minutes.

UIStatusBarHidden

UIStatusBarHidden (Boolean - iOS) specifies whether the status bar is initially hidden when the app launches.

Value

Description

YES

Hides the status bar.

NO

Shows the status bar.

UIStatusBarStyle

UIStatusBarStyle (String - iOS) specifies the style of the status bar as the app launches.

This value is based on the UIStatusBarStyle constants declared in UIApplication.h header file. The default style is UIStatusBarStyleDefault.

UISupportedExternalAccessoryProtocols

UISupportedExternalAccessoryProtocols (Array - iOS) specifies the protocols that your app supports and can use to communicate with external accessory hardware. Each item in the array is a string listing the name of a supported communications protocol. Your app can include any number of protocols in this list and the protocols can be in any order. The system does not use this list to determine which protocol your app should choose; it uses it only to determine if your app is capable of communicating with the accessory. It is up to your code to choose an appropriate communications protocol when it begins talking to the accessory.

This key is supported in iOS 3.0 and later. For more information about communicating with external accessories, see External Accessory Programming Topics.

UISupportedInterfaceOrientations

UISupportedInterfaceOrientations (Array - iOS) specifies the interface orientations your app supports. The system uses this information (along with the current device orientation) to choose the initial orientation in which to launch your app. The value for this key is an array of strings. Table 6 lists the possible string values you can include in the array.

Table 6  Supported orientations

Value

Description

UIInterfaceOrientationPortrait

The device is in portrait mode, with the device held upright and the home button at the bottom. If you do not specify any orientations, this orientation is assumed by default.

UIInterfaceOrientationPortraitUpsideDown

The device is in portrait mode but upside down, with the device held upright and the home button at the top.

UIInterfaceOrientationLandscapeLeft

The device is in landscape mode, with the device held upright and the home button on the left side.

UIInterfaceOrientationLandscapeRight

The device is in landscape mode, with the device held upright and the home button on the right side.

This key is supported in iOS 3.2 and later.

UIViewControllerBasedStatusBarAppearance

UIViewControllerBasedStatusBarAppearance (Boolean - iOS) specifies whether the status bar appearance is based on the style preferred by the view controller that is currently under the status bar. When this key is not present or its value is set to YES, the view controller determines the status bar style. When the key is set to NO, view controllers (or the app) must each set the status bar style explicitly using the UIApplication object.

This key is supported in iOS 7.0 and later.

UIViewEdgeAntialiasing

UIViewEdgeAntialiasing (Boolean - iOS) specifies whether Core Animation layers use antialiasing when drawing a layer that is not aligned to pixel boundaries.

Value

Description

YES

Use antialiasing when drawing a layer that is not aligned to pixel boundaries. This option allows for more sophisticated rendering in the simulator but can have a noticeable impact on performance.

NO

(Default) Do not use antialiasing.

This key is supported in iOS 3.0 and later.

UIViewGroupOpacity

UIViewGroupOpacity (Boolean - iOS) specifies whether Core Animation sublayers inherit the opacity of their superlayer.

Value

Description

YES

(Default on iOS 7 and later) Inherit the opacity of the superlayer. This option allows for more sophisticated rendering in the simulator but can have a noticeable impact on performance.

NO

(Default on iOS 6 and earlier) Do not inherit the opacity of the superlayer.

This key is supported in iOS 3.0 and later.