Ios Device Compatibility
Ios Device Compatibility
Reference
Contents
Introduction 4
At a Glance 4
Device Compatibility Strings 4
Metal and OpenGL ES 4
How to Use This Document 5
Device Compatibility 6
Declaring the Required Device Capabilities 6
iPhone Devices 9
iPad Devices 12
iPod Touch Devices 16
2
Tables
Device Compatibility 6
Table 1-1 Dictionary keys for the UIRequiredDeviceCapabilities key 7
Table 1-2 iPhone 4, iPhone 5, and iPhone 6 device compatibility 10
Table 1-3 iPhone and iPhone 3G device compatibility 11
Table 1-4 iPad (4th generation), and iPad Air device compatibility 12
Table 1-5 iPad mini device compatibility 13
Table 1-6 iPad 1, iPad 2, and iPad (3rd generation) device compatibility 15
Table 1-7 iPod touch device compatibility 16
3
Introduction
iOS devices support a variety of features, including sensors, graphics processors and networking options. When
designing your app, you need to decide what capabilities your app needs and which devices to support,
because the capabilities of each kind of iOS device are different.
At a Glance
This document describes the details for each device in order to help you develop your app and choose devices
to test on. The information contained here is current as of iOS 8.0, but it is subject to change in future hardware
or software releases.
4
Introduction
How to Use This Document
5
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.
Important: All device requirement changes must be made when you submit an update to your binary.
You are permitted only to expand your device requirements. Submitting an update to your binary to restrict
your device requirements is not permitted. You are unable to restrict device requirements because this
action will keep customers who have previously downloaded your app from running new updates.
Important: If you require a capability listed in bold, you must build your app as a fat binary (armv6 and
armv7) or require a minimum iOS version of 4.3 or later. See the individual device tables for a specific key
requirement.
Table 1-1 lists the keys that you can include in the array or dictionary for the UIRequiredDeviceCapabilities
key. You should include keys only for the features that your app absolutely requires. If your app can run without
a specific feature, do not include the corresponding key.
6
Device Compatibility
Declaring the Required Device Capabilities
accelerometer Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of accelerometers on the device.
Apps use the Core Motion framework to receive
accelerometer events. You do not need to include this key
if your app detects only device orientation changes.
armv6 Include this key if your app is compiled only for the armv6 iOS 2.0
instruction set.
armv7 Include this key if your app is compiled only for the armv7 iOS 3.1
instruction set.
auto-focus-camera Include this key if your app requires (or specifically iOS 3.0
prohibits) autofocus 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
perform some sort of image processing.
bluetooth-le Include this key if your app requires (or specifically iOS 5.0
prohibits) the presence of Bluetooth low-energy hardware
on the device.
camera-flash Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of a camera flash for taking pictures
or shooting video. Apps use the UIImagePicker-
Controller interface to control the enabling of this
feature.
front-facing-camera Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of a forward-facing camera. Apps
use the UIImagePickerController interface to capture
video from the device’s camera.
gamekit Include this key if your app requires (or specifically iOS 4.1
prohibits) Game Center.
7
Device Compatibility
Declaring the Required Device Capabilities
gps Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of GPS (or AGPS) hardware when
tracking locations. (You should include this key only if you
need the higher accuracy offered by GPS hardware.) If you
include this key, you should also include the
location-services key. You should require GPS only
if your app needs location data more accurate than the
cellular or Wi-fi radios might otherwise provide.
gyroscope Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of a gyroscope on the device. Apps
use the Core Motion framework to retrieve information
from gyroscope hardware.
healthkit Include this key if your app requires (or specifically iOS 8.0
prohibits) HealthKit.
location-services Include this key if your app requires (or specifically iOS 3.0
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.)
magnetometer Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of magnetometer hardware. Apps
use this hardware to receive heading-related events
through the Core Location framework.
metal Include this key if your app requires (or specifically iOS 8.0
prohibits) Metal.
microphone Include this key if your app uses the built-in microphone iOS 3.0
or supports accessories that provide a microphone.
opengles-1 Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of the OpenGL ES 1.1 interfaces.
opengles-2 Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of the OpenGL ES 2.0 interfaces.
8
Device Compatibility
iPhone Devices
opengles-3 Include this key if your app requires (or specifically iOS 7.0
prohibits) the presence of the OpenGL ES 3.0 interfaces.
peer-peer Include this key if your app requires (or specifically iOS 3.1
prohibits) peer-to-peer connectivity over a Bluetooth
network.
sms Include this key if your app requires (or specifically iOS 3.0
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 iOS 3.0
prohibits) the presence of a camera on the device. Apps
use the UIImagePickerController interface to capture
images from the device’s still camera.
telephony Include this key if your app requires (or specifically iOS 3.0
prohibits) the presence of the Phone app. You might
require this feature if your app opens URLs with the tel
scheme.
video-camera Include this key if your app requires (or specifically iOS 3.0
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.
wifi Include this key if your app requires (or specifically iOS 3.0
prohibits) access to the networking features of the device.
For detailed information on how to create and edit property lists, see Information Property List Key Reference .
iPhone Devices
Table 1-2 and Table 1-3 (page 11) list the capabilities for iPhone devices.
9
Device Compatibility
iPhone Devices
accelerometer X X X X X X X
armv6 X X X X X X X
armv7 X X X X X X X
auto-focus-camera X X X X X X X
bluetooth-le X X X X X X
camera-flash X X X X X X X
front-facing-camera X X X X X X X
gamekit X X X X X X X
gps X X X X X X X
gyroscope X X X X X X X
healthkit X X X X X X
location-services X X X X X X X
magnetometer X X X X X X X
metal X X X
microphone X X X X X X X
opengles-1 X X X X X X X
opengles-2 X X X X X X X
opengles-3 X X X
peer-peer X X X X X X X
sms X X X X X X X
still-camera X X X X X X X
telephony X X X X X X X
video-camera X X X X X X X
10
Device Compatibility
iPhone Devices
wifi X X X X X X X
accelerometer X X X X
armv6 X X X X
armv7 X X
auto-focus-camera X X
bluetooth-le
camera-flash
front-facing-camera
gamekit X X
gps X X X
gyroscope
healthkit
location-services X X X X
magnetometer X X
metal
microphone X X X X
opengles-1 X X X X
opengles-2 X X
opengles-3
peer-peer X X X
sms X X X X
11
Device Compatibility
iPad Devices
still-camera X X X X
telephony X X X X
video-camera X X
wifi X X X
iPad Devices
Table 1-4 and Table 1-5 (page 13), and Table 1-6 (page 15) list the capabilities for iPad devices.
Table 1-4 iPad (4th generation), and iPad Air device compatibility
accelerometer X X X X X X
armv6 X X X X X X
armv7 X X X X X X
auto-focus-camera X X X X X X
bluetooth-le X X X X X X
camera-flash
front-facing-camera X X X X X X
gamekit X X X X X X
gps X X X
gyroscope X X X X X X
healthkit
location-services X X X X X X
12
Device Compatibility
iPad Devices
magnetometer X X X X X X
metal X X X X
microphone X X X X X X
opengles-1 X X X X X X
opengles-2 X X X X X X
opengles-3 X X X X
peer-peer X X X X X X
sms
still-camera X X X X X X
telephony
video-camera X X X X X X
wifi X X X X X X
accelerometer X X X X X X
armv6 X X X X X X
armv7 X X X X X X
auto-focus-camera X X X X X X
bluetooth-le X X X X X X
13
Device Compatibility
iPad Devices
camera-flash
front-facing-camera X X X X X X
gamekit X X X X X X
gps X X X
gyroscope X X X X X X
healthkit
location-services X X X X X X
magnetometer X X X X X X
metal X X X X
microphone X X X X X X
opengles-1 X X X X X X
opengles-2 X X X X X X
opengles-3 X X X X
peer-peer X X X X X X
sms
still-camera X X X X X X
telephony
video-camera X X X X X X
wifi X X X X X X
14
Device Compatibility
iPad Devices
Table 1-6 iPad 1, iPad 2, and iPad (3rd generation) device compatibility
accelerometer X X X X X X
armv6 X X X X X X
armv7 X X X X X X
auto-focus-camera X X
bluetooth-le X X
camera-flash
front-facing-camera X X X X
gamekit X X X X X X
gps X X X
gyroscope X X X X
healthkit
location-services X X X X X X
magnetometer X X X X X X
metal
microphone X X X X X X
opengles-1 X X X X X X
opengles-2 X X X X X X
opengles-3
peer-peer X X X X X X
sms
still-camera X X X X
telephony
15
Device Compatibility
iPod Touch Devices
video-camera X X X X
wifi X X X X X X
accelerometer X X X X X X
armv6 X X X X X X
armv7 X X X X
auto-focus-camera X
bluetooth-le X X
camera-flash X
front-facing-camera X X X
gamekit X X X X X
gps
gyroscope X X X
healthkit X X
location-services X X X X X X
16
Device Compatibility
iPod Touch Devices
magnetometer
metal
microphone X X X X X
opengles-1 X X X X X X
opengles-2 X X X X
opengles-3
peer-peer X X X X X
sms
still-camera X X
telephony
video-camera X X
wifi X X X X X X
17
Hardware GPU Information
Since the introduction of the original iPhone, Apple has continued to improve the GPU capabilities in new iOS
devices. When you write a Metal or OpenGL ES app, you need to understand the specific limits of each device
you app runs on. Currently, two distinct GPU categories are in common use:
● The Apple A7 and A8 GPUs
● The PowerVR SGX 543 and 554 GPUs
Table 2-1 lists the devices that are compatible with Metal and OpenGL ES 3.0.
Table 2-2 lists the devices that are compatible with OpenGL ES 2.0.
18
Hardware GPU Information
Apple A7 and A8 GPU Hardware
iPad Air Wi-Fi and iPad Air Wi-Fi + Cellular Apple A7 GPU
iPad Wi-Fi (4th generation) and iPad Wi-Fi + Cellular (4th generation) SGX 554
iPad 2 Wi-Fi, iPad 2 Wi-Fi + 3G, iPad Wi-Fi (3rd generation), and iPad Wi-Fi + Cellular SGX 543
(3rd generation)
iPad Mini with Retina display Wi-Fi and iPad Mini with Retina display Wi-Fi + Cellular Apple A7 GPU
iPad Mini Wi-Fi and iPad Mini Wi-Fi + Cellular SGX 543
19
Hardware GPU Information
Apple A7 and A8 GPU Hardware
mobile processors before. This means that advanced rendering techniques that have previously been available
only on desktop machines, such as deferred rendering, can now be used in iOS apps. See Metal Programming
Guide for more information about what features are visible to Metal apps.
To take advantage of the power of the A7 and A8 GPUs, your app must support Metal or OpenGL ES 3.0. Using
Metal or OpenGL ES 3.0 gives you access to the new features and also to a larger pool of rendering resources.
For example, on the A7 and A8 GPUs, an app that uses Metal or OpenGL ES 3.0 can access twice as many
textures in a shader than an app that uses OpenGL ES 2.0.
Table 2-3 OpenGL ES 3.0 attribute values implemented for the Apple A7 and A8 GPUs
MAX_ARRAY_TEXTURE_LAYERS 2048
MAX_COLOR_ATTACHMENTS 4
MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 50048
MAX_COMBINED_TEXTURE_IMAGE_UNITS 32
MAX_COMBINED_UNIFORM_BLOCKS 24
20
Hardware GPU Information
Apple A7 and A8 GPU Hardware
MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 51200
MAX_DRAW_BUFFERS 4
MAX_FRAGMENT_INPUT_COMPONENTS 64
MAX_FRAGMENT_UNIFORM_BLOCKS 12
MAX_FRAGMENT_UNIFORM_COMPONENTS 896
MIN_PROGRAM_TEXEL_OFFSET -8
MAX_PROGRAM_TEXEL_OFFSET 7
MAX_SAMPLES 8
MAX_TEXTURE_IMAGE_UNITS 16
MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 64
MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 4
MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 4
MAX_VARYING_VECTORS 15
MAX_VERTEX_ATTRIBS 16
MAX_VERTEX_OUTPUT_COMPONENTS 64
MAX_VERTEX_TEXTURE_IMAGE_UNITS 16
MAX_VERTEX_UNIFORM_BLOCKS 12
MAX_VERTEX_UNIFORM_COMPONENTS 2048
MAX_UNIFORM_BLOCK_SIZE 16384
Considerations
The A7 and A8 GPUs process all floating-point calculations using a scalar processor, even when those values
are declared in a vector. Proper use of write masks and careful definitions of your calculations can improve the
performance of your shaders. For more information, see Perform Vector Calculations Lazily in OpenGL ES
Programming Guide for iOS .
21
Hardware GPU Information
Apple A7 and A8 GPU Hardware
Medium- and low-precision floating-point shader values are computed identically, as 16-bit floating point
values. This is a change from the PowerVR SGX hardware, which used 10-bit fixed-point format for low-precision
values. If your shaders use low-precision floating point variables and you also support the PowerVR SGX
hardware, you must test your shaders on both GPUs.
Always use framebuffer discard operations when your framebuffer contents are no longer needed. The penalty
for not doing so is higher than it was on earlier GPUs. For best results, use the GLKView class; it automatically
implements framebuffer discard operations.
When rendering to multiple targets, limit your app to four image targets (and no more than 128 bits of total
data on A7 and 256 bits of total data on A8 written to the targets). A single sRGB target counts as 64 bits.
The following extensions are supported for the A7 and A8 GPUs in OpenGL ES 3 apps:
● APPLE_clip_distance
● APPLE_color_buffer_packed_float
● APPLE_copy_texture_levels
● APPLE_rgb_422
● APPLE_texture_format_BGRA8888
● EXT_color_buffer_half_float
● EXT_debug_label
● EXT_debug_marker
● EXT_pvrtc_sRGB
● EXT_read_format_bgra
● EXT_separate_shader_objects
● EXT_shader_framebuffer_fetch
● EXT_texture_filter_anisotropic
● IMG_read_format
22
Hardware GPU Information
Apple A7 and A8 GPU Hardware
● IMG_texture_compression_pvrtc
The following extensions are supported, but OpenGL ES 3 provides core functionality that matches these
extensions. If you are porting an OpenGL ES 2 app that uses these extensions, you should migrate your shaders
to the core OpenGL ES 3 functionality.
● EXT_shader_texture_lod
● EXT_shadow_samplers
● OES_standard_derivatives
Table 2-4 OpenGL ES 2.0 attribute values implemented for the Apple A7 and A8 GPUs
MAX_TEXTURE_IMAGE_UNITS 8
MAX_COMBINED_TEXTURE_IMAGE_UNITS 8
MAX_VERTEX_TEXTURE_IMAGE_UNITS 8
MAX_VERTEX_ATTRIBS 16
MAX_VERTEX_UNIFORM_VECTORS 128
MAX_FRAGMENT_UNIFORM_VECTORS 64
MAX_VARYING_VECTORS 8
Considerations
The A7 and A8 GPUs process all floating-point calculations using a scalar processor, even when those values
are declared in a vector. Proper use of write masks and careful definitions of your calculations can improve the
performance of your shaders. For more information, see Perform Vector Calculations Lazily in OpenGL ES
Programming Guide for iOS .
23
Hardware GPU Information
Apple A7 and A8 GPU Hardware
Medium- and low-precision floating-point shader values are computed identically, as 16-bit floating point
values. This is a change from the PowerVR SGX hardware, which used 10-bit fixed-point format for low-precision
values. If your shaders use low-precision floating point variables and you also support the PowerVR SGX
hardware, you must test your shaders on both GPUs.
Always use framebuffer discard operations when your framebuffer contents are no longer needed. The penalty
for not discarding framebuffers is higher than it was on earlier GPUs. For best results, use the GLKView class;
it automatically implements framebuffer discard operations.
24
Hardware GPU Information
PowerVR SGX Hardware
● EXT_separate_shader_objects
● EXT_shader_texture_lod
● EXT_shader_framebuffer_fetch
● EXT_shadow_samplers
● EXT_sRGB
● EXT_texture_filter_anisotropic
● EXT_texture_rg
● EXT_texture_storage
● IMG_read_format
● IMG_texture_compression_pvrtc
● OES_depth_texture
● OES_depth24
● OES_element_index_uint
● OES_fbo_render_mipmap
● OES_mapbuffer
● OES_packed_depth_stencil
● OES_rgb8_rgba8
● OES_standard_derivatives
● OES_texture_float
● OES_texture_half_float
● OES_texture_half_float_linear
● OES_vertex_array_object
25
Hardware GPU Information
PowerVR SGX Hardware
Table 2-5 OpenGL ES 2.0 attribute values implemented for SGX 543 and 554
MAX_TEXTURE_IMAGE_UNITS 8
MAX_COMBINED_TEXTURE_IMAGE_UNITS 8
MAX_VERTEX_TEXTURE_IMAGE_UNITS 8
MAX_VERTEX_ATTRIBS 16
MAX_VERTEX_UNIFORM_VECTORS 128
MAX_FRAGMENT_UNIFORM_VECTORS 64
MAX_VARYING_VECTORS 8
26
Hardware GPU Information
PowerVR SGX Hardware
Considerations
The PowerVR SGX processes high-precision floating-point calculations using a scalar processor, even when
those values are declared in a vector. Proper use of write masks and careful definitions of your calculations can
improve the performance of your shaders. For more information, see Perform Vector Calculations Lazily in
OpenGL ES Programming Guide for iOS .
Although medium- and low-precision floating-point values are both processed in parallel, low-precision variables
have a few specific performance limitations:
● Swizzling components of vectors declared with low precision is expensive and should be avoided.
● Many built-in functions use medium-precision inputs and outputs. If your app provides low-precision
floating-point values as parameters or assigns the results to a low-precision floating-point variable, the
shader may have to include additional instructions to convert the values. These additional instructions
are also added when swizzling the vector results of a computation.
For best results, limit your use of low-precision variables to color values.
27
Hardware GPU Information
PowerVR SGX Hardware
● EXT_shader_texture_lod
● EXT_texture_filter_anisotropic
● EXT_texture_storage
● IMG_read_format
● IMG_texture_compression_pvrtc
● OES_depth24
● OES_depth_texture
● OES_element_index_uint
● OES_fbo_render_mipmap
● OES_mapbuffer
● OES_packed_depth_stencil
● OES_rgb8_rgba8
● OES_standard_derivatives
● OES_texture_half_float
● OES_texture_float
● OES_texture_half_float
● OES_vertex_array_object
The following extensions are supported for the SGX 543 and 554 processors only:
● EXT_color_buffer_half_float
● EXT_occlusion_query_boolean
● EXT_pvrtc_sRGB
● EXT_shadow_samplers
● EXT_sRGB
● EXT_texture_rg
● OES_texture_half_float_linear
28
Document Revision History
Date Notes
2014-10-24 Changed the GPU associated with iPad Mini 3's to the A7 chip.
2013-09-18 New document that describes details about the features of existing iOS
devices.
29
Apple Inc.
Copyright © 2015 Apple Inc.
All rights reserved.