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.
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:
-
MKDirectionsModeCar
-
MKDirectionsModeBus
-
MKDirectionsModeTrain
-
MKDirectionsModeSubway
-
MKDirectionsModeStreetCar
-
MKDirectionsModePlane
-
MKDirectionsModeBike
-
MKDirectionsModeFerry
-
MKDirectionsModeTaxi
-
MKDirectionsModePedestrian
-
MKDirectionsModeOther
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.
Value | Description |
---|---|
| The app plays audible content in the background. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| The app communicates with an accessory that delivers data at regular intervals. This value is supported in iOS 5.0 and later. |
| 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. |
| 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.
Important: Do not insert this key manually into your Info.plist
files. Xcode inserts it automatically based on the value in the Targeted Device Family build setting. You should use that build setting to change the value of the key.
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.
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.
Key | Description |
---|---|
| 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 On disk, your image filenames may still include the |
| 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”. |
| 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 If you do not specify this key, the image size is assumed to be |
| A string containing the orientation of the image. The value of this key is one of the following values:
If you do not specify a value for this key, the orientation is assumed to be |
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 |
---|---|
| iOS does not apply a shine effect to the app icon. |
| (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.
Key | Description |
---|---|
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 | |
Include this key if your app requires (or specifically prohibits) access to the networking features of the device. | |
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 | |
Include this key if your app requires (or specifically prohibits) the presence of a camera on the device. Apps use the | |
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. | |
Include this key if your app requires (or specifically prohibits) the presence of a forward-facing camera. Apps use the | |
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 | |
Include this key if your app requires (or specifically prohibits) the presence of a camera with video capabilities on the device. Apps use the | |
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. | |
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. | |
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 | |
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 | |
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. | |
Include this key if your app requires (or specifically prohibits) Game Center (iOS 4.1 and later.) | |
Include this key if your app uses the built-in microphone or supports accessories that provide a microphone. | |
Include this key if your app requires (or specifically prohibits) the presence of the OpenGL ES 1.1 interfaces. | |
Include this key if your app requires (or specifically prohibits) the presence of the OpenGL ES 2.0 interfaces. | |
Include this key if your app is compiled only for the armv6 instruction set. (iOS v3.1 and later.) | |
Include this key if your app is compiled only for the armv7 instruction set. (iOS v3.1 and later.) | |
Include this key if your app requires (or specifically prohibits) peer-to-peer connectivity over Bluetooth. (iOS v3.1 and later.) | |
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 |
---|---|
| 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. |
| (Default) iOS closes the active Wi-Fi connection after 30 minutes. |
Note: If an iPad contains apps that use push notifications and subsequently goes to sleep, the device’s active WiFi connection automatically remains associated with the current access point if cellular service is unavailable or out of range.
UIStatusBarHidden
UIStatusBarHidden
(Boolean
- iOS) specifies whether the status bar is initially hidden when the app launches.
Value | Description |
---|---|
| Hides the status bar. |
| 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.
Value | Description |
---|---|
| 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. |
| The device is in portrait mode but upside down, with the device held upright and the home button at the top. |
| The device is in landscape mode, with the device held upright and the home button on the left side. |
| 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 |
---|---|
| 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. |
| (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 |
---|---|
| (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. |
| (Default on iOS 6 and earlier) Do not inherit the opacity of the superlayer. |
This key is supported in iOS 3.0 and later.