Important: If a feature must be present in order for your application to run, you must include the
UIRequiredDeviceCapabilities key in your application’s Info.plist file. This key prevents users from
installing applications on a device that does not support the feature. You should not include a key, however,
if your application can function with or without the given feature. For more information about configuring
this key, see “Declaring the Required Device Capabilities” (page 90).
If your application can function with or without a specific feature, use runtime checks to see whether that
feature is present before attempting to use it. Table 1-2 lists the techniques for determining whether certain
types of hardware or features are available.
Table 1-2 Identifying available features
OptionsFeature
Get the value of the multitaskingSupported property in the UIDevice
class.
For more information about determining the availability of multitasking,
see “Determining Whether Multitasking Support Is Available” (page 65).
To determine if multitasking is
available…
Use the userInterfaceIdiom property of the UIDevice class. This
property is applicable only to universal applications that support different
layouts based on whether the content is intended for iPad versus iPhone
and iPod touch.
For more information on implementing a universal application, see
“Creating a Universal Application” (page 97).
To determine if you should
configure your interface for an
iPad-sized screen or an
iPhone-sized screen…
Get the value of the screens property in the UIScreen class. If the array
contains more than one screen object, one of the objects corresponds to
the main screen and the other corresponds to an external screen.
For more information about displaying content on an external display, see
“Windows” in View Programming Guide for iOS.
To determine if an external
screen is attached…
Get the value of the protectedDataAvailable property in the shared
UIApplication object. For more information on encrypting on-disk
content, see “Working with Protected Files” (page 53).
To determine if hardware-level
disk encryption is available…
If you need to transfer something using the network, just do so and be
prepared to handle any errors that might crop up. The CFNetwork
framework (as well as NSStream and other network interfaces) report errors
when they occur, so you should be sure to provide appropriate error
handlers when using these interfaces.
If you need specific information about the state of the network, you can
use the reachability interfaces of the System Configuration framework to
obtain that information. For an example of how to use the System
Configuration framework, see the sample code project Reachability.
To determine if the network is
available…
Use the isSourceTypeAvailable: method of the UIImagePicker-
Controller class to determine if a camera is available.
For more information, see Camera Programming Topics for iOS.
To determine if the still camera
is available…
20
Determining the Available Hardware Support
2011-02-24 | © 2011 Apple Inc. All Rights Reserved.
CHAPTER 1
The Application Runtime Environment