(linking theiphonewiki page) |
|||
(7 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{occlass|library=GraphicsServices.framework}} | {{occlass|library=GraphicsServices.framework}} | ||
'''GSCapability''' is a group of C functions that checks the ''capability'' of the device. A capability can be anything from a simple boolean value (such as whether the device can take pictures) to a complex structure (such as the screen dimensions). | |||
* '''Note''': On iOS 7, GSSystemHasCapability (see example below) crashes with _abort unless you query for @'explicitContentRestriction". You should use [[LibMobileGestalt.dylib |MGGetBoolAnswer]] instead. | |||
See also: [http://theiphonewiki.com/wiki/GSC_bit GSC bit on TheiPhoneWiki]. | |||
== Example code == | == Example code == | ||
Line 19: | Line 23: | ||
#include <sys/stat.h> | #include <sys/stat.h> | ||
#include <CoreFoundation/CoreFoundation.h> | #include <CoreFoundation/CoreFoundation.h> | ||
static CFDictionaryRef | static CFDictionaryRef GSCopyCapabilities(void) { | ||
int shm = shm_open("GSCapabilities", 0); | int shm = shm_open("GSCapabilities", 0); | ||
assert(shm != -1); | assert(shm != -1); | ||
Line 51: | Line 55: | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! Capabilities !! N45AP<br />(iPod Touch 1G) !! M68AP<br />(iPhone 2G) | ! Capabilities !! N45AP<br />(iPod Touch 1G) !! M68AP<br />(iPhone 2G) !! N88AP<br />(iPhone 3GS) !! K48AP <br />(iPad) !! N90AP<br />(iPhone 4) | ||
|- | |- | ||
| kGSTelephonyCapability <br /> "<tt>telephony</tt>" | | kGSTelephonyCapability <br /> "<tt>telephony</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSCellularDataCapability <br /> "<tt>cellular-data</tt>" | | kGSCellularDataCapability <br /> "<tt>cellular-data</tt>" | ||
| {{No}} || {{Unk}} | | {{No}} || {{Unk}} || {{Unk}} || {{Yes}} || {{Unk}} | ||
|- | |- | ||
| kGSSMSCapability <br /> "<tt>sms</tt>" | | kGSSMSCapability <br /> "<tt>sms</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSCameraCapability <br /> "<tt>still-camera</tt>" | | kGSCameraCapability <br /> "<tt>still-camera</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSVideoCameraCapability <br /> "<tt>video-camera</tt>" | | kGSVideoCameraCapability <br /> "<tt>video-camera</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSAutoFocusCameraCapability <br /> "<tt>auto-focus-camera</tt>" | | kGSAutoFocusCameraCapability <br /> "<tt>auto-focus-camera</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSH264EncoderCapability <br /> "<tt>h264-encoder</tt>" | | kGSH264EncoderCapability <br /> "<tt>h264-encoder</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSWiFiCapability <br /> "<tt>wifi</tt>" | | kGSWiFiCapability <br /> "<tt>wifi</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSAccelerometerCapability <br /> "<tt>accelerometer</tt>" | | kGSAccelerometerCapability <br /> "<tt>accelerometer</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSMagnetometerCapability <br /> "<tt>magnetometer</tt>" | | kGSMagnetometerCapability <br /> "<tt>magnetometer</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSGPSCapability <br /> "<tt>gps</tt>" | | kGSGPSCapability <br /> "<tt>gps</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSLocationServicesCapability <br /> "<tt>location-services</tt>" | | kGSLocationServicesCapability <br /> "<tt>location-services</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSMicrophoneCapability <br /> "<tt>microphone</tt>" | | kGSMicrophoneCapability <br /> "<tt>microphone</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSPeer2PeerCapability <br /> "<tt>peer-peer</tt>" | | kGSPeer2PeerCapability <br /> "<tt>peer-peer</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSOpenGLES1Capability <br /> "<tt>opengles-1</tt>" | | kGSOpenGLES1Capability <br /> "<tt>opengles-1</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSOpenGLES2Capability <br /> "<tt>opengles-2</tt>" | | kGSOpenGLES2Capability <br /> "<tt>opengles-2</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSARMV6ExecutionCapability <br /> "<tt>armv6</tt>" | | kGSARMV6ExecutionCapability <br /> "<tt>armv6</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSARMV7ExecutionCapability <br /> "<tt>armv7</tt>" | | kGSARMV7ExecutionCapability <br /> "<tt>armv7</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSDisplayPortCapability <br /> "<tt>display-port</tt>" | | kGSDisplayPortCapability <br /> "<tt>display-port</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSContainsCellularRadioCapability <br /> "<tt>contains-cellular-radio</tt>" | | kGSContainsCellularRadioCapability <br /> "<tt>contains-cellular-radio</tt>" | ||
| {{No}} || {{Unk}} | | {{No}} || {{Unk}} || {{Unk}} || {{Yes}} || {{Unk}} | ||
|- | |- | ||
| kGSVolumeButtonCapability <br /> "<tt>volume-buttons</tt>" | | kGSVolumeButtonCapability <br /> "<tt>volume-buttons</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSRingerSwitchCapability <br /> "<tt>ringer-switch</tt>" | | kGSRingerSwitchCapability <br /> "<tt>ringer-switch</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSPiezoClickerCapability <br /> "<tt>piezo-clicker</tt>" | | kGSPiezoClickerCapability <br /> "<tt>piezo-clicker</tt>" | ||
| {{Yes}} || {{No}} | | {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| kGSBluetoothCapability <br /> "<tt>bluetooth</tt>" | | kGSBluetoothCapability <br /> "<tt>bluetooth</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSUnifiedIPodCapability <br /> "<tt>unified-ipod</tt>" | | kGSUnifiedIPodCapability <br /> "<tt>unified-ipod</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSYouTubeCapability <br /> "<tt>youtube</tt>" | | kGSYouTubeCapability <br /> "<tt>youtube</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSYouTubePluginCapability <br /> "<tt>youtubePlugin</tt>" | | kGSYouTubePluginCapability <br /> "<tt>youtubePlugin</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSGreenTeaDeviceCapability<ref name="green-tea">"Green-Tea" is a code name for devices sold in China. Green-Tea devices have restricted access to various applications e.g. Maps.</ref> <br /> "<tt>green-tea</tt>" | | kGSGreenTeaDeviceCapability<ref name="green-tea">"Green-Tea" is a code name for devices sold in China. Green-Tea devices have restricted access to various applications e.g. Maps.</ref> <br /> "<tt>green-tea</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} | ||
|- | |- | ||
| kGSNotGreenTeaDeviceCapability<ref name="green-tea"/> <br /> "<tt>not-green-tea</tt>" | | kGSNotGreenTeaDeviceCapability<ref name="green-tea"/> <br /> "<tt>not-green-tea</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSInternationalSettingsCapability <br /> "<tt>international-settings</tt>" | | kGSInternationalSettingsCapability <br /> "<tt>international-settings</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSPlatformStandAloneContactsCapability <br /> "<tt>stand-alone-contacts</tt>" | | kGSPlatformStandAloneContactsCapability <br /> "<tt>stand-alone-contacts</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSDelaySleepForHeadsetClickCapability <br /> "<tt>delay-sleep-for-headset-click</tt>" | | kGSDelaySleepForHeadsetClickCapability <br /> "<tt>delay-sleep-for-headset-click</tt>" | ||
| {{No}} || {{ | | {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| kGSLaunchApplicationsWhileAnimatingCapability <br /> "<tt>launch-applications-while-animating</tt>" | | kGSLaunchApplicationsWhileAnimatingCapability <br /> "<tt>launch-applications-while-animating</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}}|| {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSLoadThumbnailsWhileScrollingCapability <br /> "<tt>load-thumbnails-while-scrolling</tt>" | | kGSLoadThumbnailsWhileScrollingCapability <br /> "<tt>load-thumbnails-while-scrolling</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSSensitiveUICapability <br /> "<tt>sensitive-ui</tt>" | | kGSSensitiveUICapability <br /> "<tt>sensitive-ui</tt>" | ||
| {{No}} || {{Unk}} | | {{No}} || {{Unk}} || {{Unk}} || {{Unk}} || {{Unk}} | ||
|- | |- | ||
| kGSAppleInternalInstallCapability <br /> "<tt>apple-internal-install</tt>" | | kGSAppleInternalInstallCapability <br /> "<tt>apple-internal-install</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| kGSHasAllFeaturesCapability <br /> "<tt>all-features</tt>" | | kGSHasAllFeaturesCapability <br /> "<tt>all-features</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSNikeIpodCapability <br /> "<tt>nike-ipod</tt>" | | kGSNikeIpodCapability <br /> "<tt>nike-ipod</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSApplicationInstallationCapability <br /> "<tt>applicationInstallation</tt>" | | kGSApplicationInstallationCapability <br /> "<tt>applicationInstallation</tt>" | ||
| {{Yes}} || {{Yes}} | | {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSVoiceControlCapability <br /> "<tt>voice-control</tt>" | | kGSVoiceControlCapability <br /> "<tt>voice-control</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSProximitySensorCapability <br /> "<tt>proximity-sensor</tt>" | | kGSProximitySensorCapability <br /> "<tt>proximity-sensor</tt>" | ||
| {{No}} || {{Yes}} | | {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSGasGaugeBatteryCapability<ref>Gas-gauge capability allows accurate monitoring of the battery level</ref> <br /> "<tt>gas-gauge-battery</tt>" | | kGSGasGaugeBatteryCapability<ref>Gas-gauge capability allows accurate monitoring of the battery level</ref> <br /> "<tt>gas-gauge-battery</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSAccessibilityCapability <br /> "<tt>accessibility</tt>" | | kGSAccessibilityCapability <br /> "<tt>accessibility</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSMMSCapability <br /> "<tt>mms</tt>" | | kGSMMSCapability <br /> "<tt>mms</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{no}} || {{Yes}} | ||
|- | |- | ||
| kGSEncryptedDataPartitionCapability <br /> "<tt>encrypted-data-partition</tt>" | | kGSEncryptedDataPartitionCapability <br /> "<tt>encrypted-data-partition</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSEncodeAACCapability <br /> "<tt>encode-aac</tt>" | | kGSEncodeAACCapability <br /> "<tt>encode-aac</tt>" | ||
| {{No}} || {{Unk}} | | {{No}} || {{No}} || {{Yes}} || {{Unk}} || {{Yes}} | ||
|- | |- | ||
| kGS720pPlaybackCapability <br /> "<tt>720p</tt>" | | kGS720pPlaybackCapability <br /> "<tt>720p</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSDisplayFCCLogosViaSoftwareCapability <br /> "<tt>fcc-logos-via-software</tt>" | | kGSDisplayFCCLogosViaSoftwareCapability <br /> "<tt>fcc-logos-via-software</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| kGSHideNonDefaultApplicationsCapability <br /> "<tt>hide-non-default-apps</tt>" | | kGSHideNonDefaultApplicationsCapability <br /> "<tt>hide-non-default-apps</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} | ||
|- | |- | ||
| kGSWildcatCapability<ref>"Wildcat" is the codename of iPad.</ref> <br /> "<tt>wildcat</tt>" | | kGSWildcatCapability<ref>"Wildcat" is the codename of iPad.</ref> <br /> "<tt>wildcat</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} | ||
|- | |- | ||
| kGSDataPlanCapability <br /> "<tt>data-plan</tt>" | | kGSDataPlanCapability <br /> "<tt>data-plan</tt>" | ||
| {{No}} || {{Unk}} | | {{No}} || {{Unk}}|| {{Unk}} || {{Yes}} || {{Unk}} | ||
|- | |- | ||
| kGSCameraFlashCapability <br /> "<tt>camera-flash</tt>" | | kGSCameraFlashCapability <br /> "<tt>camera-flash</tt>" | ||
| {{No}} || {{ | | {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSCanRasterizeEfficientlyCapability <br /> "<tt>can-rasterize-efficiently</tt>" | | kGSCanRasterizeEfficientlyCapability <br /> "<tt>can-rasterize-efficiently</tt>" | ||
| {{Unk}} || {{Unk}} | | {{Unk}} || {{Unk}} || {{Unk}} || {{Unk}} || {{Unk}} | ||
|- | |- | ||
| kGSFrontFacingCameraCapability <br /> "<tt>front-facing-camera</tt>" | | kGSFrontFacingCameraCapability <br /> "<tt>front-facing-camera</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSHiDPICapability <br /> "<tt>horiz</tt>" | | kGSHiDPICapability <br /> "<tt>horiz</tt>" | ||
| {{ | | {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSIOSurfaceBackedImagesCapability <br /> "<tt>io-surface-backed-images</tt>" | | kGSIOSurfaceBackedImagesCapability <br /> "<tt>io-surface-backed-images</tt>" | ||
| {{Unk}} || {{ | | {{No}} || {{No}} || {{Yes}} || {{Unk}} || {{Yes}} | ||
|- | |- | ||
| kGSMultitaskingCapability <br /> "<tt>multitasking</tt>" | | kGSMultitaskingCapability <br /> "<tt>multitasking</tt>" | ||
| {{No}} || {{No}} | | {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSVeniceCapability <br /> "<tt>venice</tt>" | | kGSVeniceCapability<ref>"Venice" is used to determine if video conferencing is allowed. It is not known what Venice stands for.</ref> <br /> "<tt>venice</tt>" | ||
| {{ | | {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} | ||
|- | |- | ||
| kGSTelephonyMaximumGeneration <br /> "<tt>telephony-maximum-generation</tt>" | | kGSTelephonyMaximumGeneration <br /> "<tt>telephony-maximum-generation</tt>" | ||
| 0 || 2.5 | | 0 || 2.5 || 3.5 || {{Unk}} || 3.5 | ||
|- | |- | ||
| kGSDeviceNameString <br /> "<tt>device-name</tt>" | | kGSDeviceNameString <br /> "<tt>device-name</tt>" | ||
| iPod || iPhone | | iPod || iPhone || iPhone || iPad || iPhone | ||
|- | |- | ||
| kGSMarketingNameString <br /> "<tt>marketing-name</tt>" | | kGSMarketingNameString <br /> "<tt>marketing-name</tt>" | ||
| iPod Touch || iPhone | | iPod Touch || iPhone || iPhone 3GS || iPad || iPhone | ||
|- | |- | ||
| kGSScreenDimensionsCapability<ref>This capability is a dictionary with 4 members. Only width and height are shown here.</ref> <br /> "<tt>screen-dimensions</tt>" | | kGSScreenDimensionsCapability<ref>This capability is a dictionary with 4 members. Only width and height are shown here.</ref> <br /> "<tt>screen-dimensions</tt>" | ||
| 320 × 480 || 320 × 480 | | 320 × 480 || 320 × 480 || 320 × 480 || 768 × 1024 || 640 × 960 | ||
|} | |} | ||
Latest revision as of 04:04, 18 November 2014
GSCapability is a group of C functions that checks the capability of the device. A capability can be anything from a simple boolean value (such as whether the device can take pictures) to a complex structure (such as the screen dimensions).
- Note: On iOS 7, GSSystemHasCapability (see example below) crashes with _abort unless you query for @'explicitContentRestriction". You should use MGGetBoolAnswer instead.
See also: GSC bit on TheiPhoneWiki.
Example code
if (GSSystemHasCapability(kGSMagnetometerCapability)) {
direction = get_direction();
} else {
printf("This device has no compass\n");
}
Extracting the capability dictionary
The capabilities are stored as a plist in a shared memory region named "GSCapabilities". You can use this code to extract it:
#include <sys/mman.h>
#include <sys/stat.h>
#include <CoreFoundation/CoreFoundation.h>
static CFDictionaryRef GSCopyCapabilities(void) {
int shm = shm_open("GSCapabilities", 0);
assert(shm != -1);
struct stat shm_stat;
int fstat_ret = fstat(shm, &shm_stat);
assert(fstat_ret == 0);
void* map = mmap(NULL, shm_stat.st_size, 1, 1, shm, 0);
assert(map >= 0);
CFIndex len = *(CFIndex*)map;
CFDataRef data = CFDataCreateWithBytesNoCopy(NULL, (const UInt8*)map + sizeof(len), len, kCFAllocatorNull);
assert(data != NULL);
CFPropertyListRef propList = CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, NULL);
CFRelease(data);
munmap(map, len);
close(shm);
return propList;
}
This shared memory is constructed by the SBPlatformController class in SpringBoard.
Default capabilities of various devices
Capabilities | N45AP (iPod Touch 1G) |
M68AP (iPhone 2G) |
N88AP (iPhone 3GS) |
K48AP (iPad) |
N90AP (iPhone 4) |
---|---|---|---|---|---|
kGSTelephonyCapability "telephony" |
No | Yes | Yes | No | Yes |
kGSCellularDataCapability "cellular-data" |
No | Unknown | Unknown | Yes | Unknown |
kGSSMSCapability "sms" |
No | Yes | Yes | No | Yes |
kGSCameraCapability "still-camera" |
No | Yes | Yes | No | Yes |
kGSVideoCameraCapability "video-camera" |
No | No | Yes | No | Yes |
kGSAutoFocusCameraCapability "auto-focus-camera" |
No | No | Yes | No | Yes |
kGSH264EncoderCapability "h264-encoder" |
No | No | Yes | Yes | Yes |
kGSWiFiCapability "wifi" |
Yes | Yes | Yes | Yes | Yes |
kGSAccelerometerCapability "accelerometer" |
Yes | Yes | Yes | Yes | Yes |
kGSMagnetometerCapability "magnetometer" |
No | No | Yes | Yes | Yes |
kGSGPSCapability "gps" |
No | Yes | Yes | No | Yes |
kGSLocationServicesCapability "location-services" |
Yes | Yes | Yes | Yes | Yes |
kGSMicrophoneCapability "microphone" |
No | Yes | Yes | Yes | Yes |
kGSPeer2PeerCapability "peer-peer" |
No | No | Yes | Yes | Yes |
kGSOpenGLES1Capability "opengles-1" |
Yes | Yes | Yes | Yes | Yes |
kGSOpenGLES2Capability "opengles-2" |
No | No | Yes | Yes | Yes |
kGSARMV6ExecutionCapability "armv6" |
Yes | Yes | Yes | Yes | Yes |
kGSARMV7ExecutionCapability "armv7" |
No | No | Yes | Yes | Yes |
kGSDisplayPortCapability "display-port" |
No | No | No | Yes | Yes |
kGSContainsCellularRadioCapability "contains-cellular-radio" |
No | Unknown | Unknown | Yes | Unknown |
kGSVolumeButtonCapability "volume-buttons" |
No | Yes | Yes | Yes | Yes |
kGSRingerSwitchCapability "ringer-switch" |
No | Yes | Yes | No | Yes |
kGSPiezoClickerCapability "piezo-clicker" |
Yes | No | No | No | No |
kGSBluetoothCapability "bluetooth" |
No | Yes | Yes | Yes | Yes |
kGSUnifiedIPodCapability "unified-ipod" |
No | Yes | Yes | No | Yes |
kGSYouTubeCapability "youtube" |
Yes | Yes | Yes | Yes | Yes |
kGSYouTubePluginCapability "youtubePlugin" |
Yes | Yes | Yes | Yes | Yes |
kGSGreenTeaDeviceCapability[1] "green-tea" |
No | No | Yes | No | No |
kGSNotGreenTeaDeviceCapability[1] "not-green-tea" |
Yes | Yes | Yes | Yes | Yes |
kGSInternationalSettingsCapability "international-settings" |
Yes | Yes | Yes | Yes | Yes |
kGSPlatformStandAloneContactsCapability "stand-alone-contacts" |
Yes | Yes | Yes | Yes | Yes |
kGSDelaySleepForHeadsetClickCapability "delay-sleep-for-headset-click" |
No | Yes | No | No | No |
kGSLaunchApplicationsWhileAnimatingCapability "launch-applications-while-animating" |
No | No | Yes | Yes | Yes |
kGSLoadThumbnailsWhileScrollingCapability "load-thumbnails-while-scrolling" |
No | No | Yes | Yes | Yes |
kGSSensitiveUICapability "sensitive-ui" |
No | Unknown | Unknown | Unknown | Unknown |
kGSAppleInternalInstallCapability "apple-internal-install" |
No | No | No | No | No |
kGSHasAllFeaturesCapability "all-features" |
Yes | Yes | Yes | Yes | Yes |
kGSNikeIpodCapability "nike-ipod" |
No | No | Yes | No | Yes |
kGSApplicationInstallationCapability "applicationInstallation" |
Yes | Yes | Yes | Yes | Yes |
kGSVoiceControlCapability "voice-control" |
No | No | Yes | No | Yes |
kGSProximitySensorCapability "proximity-sensor" |
No | Yes | Yes | No | Yes |
kGSGasGaugeBatteryCapability[2] "gas-gauge-battery" |
No | No | Yes | Yes | Yes |
kGSAccessibilityCapability "accessibility" |
No | No | Yes | Yes | Yes |
kGSMMSCapability "mms" |
No | No | Yes | No | Yes |
kGSEncryptedDataPartitionCapability "encrypted-data-partition" |
No | No | Yes | Yes | Yes |
kGSEncodeAACCapability "encode-aac" |
No | No | Yes | Unknown | Yes |
kGS720pPlaybackCapability "720p" |
No | No | No | Yes | Yes |
kGSDisplayFCCLogosViaSoftwareCapability "fcc-logos-via-software" |
No | No | Yes | Yes | Yes |
kGSHideNonDefaultApplicationsCapability "hide-non-default-apps" |
No | No | No | Yes | No |
kGSWildcatCapability[3] "wildcat" |
No | No | No | Yes | No |
kGSDataPlanCapability "data-plan" |
No | Unknown | Unknown | Yes | Unknown |
kGSCameraFlashCapability "camera-flash" |
No | No | No | No | Yes |
kGSCanRasterizeEfficientlyCapability "can-rasterize-efficiently" |
Unknown | Unknown | Unknown | Unknown | Unknown |
kGSFrontFacingCameraCapability "front-facing-camera" |
No | No | No | No | Yes |
kGSHiDPICapability "horiz" |
No | No | No | No | Yes |
kGSIOSurfaceBackedImagesCapability "io-surface-backed-images" |
No | No | Yes | Unknown | Yes |
kGSMultitaskingCapability "multitasking" |
No | No | Yes | No | Yes |
kGSVeniceCapability[4] "venice" |
No | No | No | No | Yes |
kGSTelephonyMaximumGeneration "telephony-maximum-generation" |
0 | 2.5 | 3.5 | Unknown | 3.5 |
kGSDeviceNameString "device-name" |
iPod | iPhone | iPhone | iPad | iPhone |
kGSMarketingNameString "marketing-name" |
iPod Touch | iPhone | iPhone 3GS | iPad | iPhone |
kGSScreenDimensionsCapability[5] "screen-dimensions" |
320 × 480 | 320 × 480 | 320 × 480 | 768 × 1024 | 640 × 960 |
References
- ↑ 1.0 1.1 "Green-Tea" is a code name for devices sold in China. Green-Tea devices have restricted access to various applications e.g. Maps.
- ↑ Gas-gauge capability allows accurate monitoring of the battery level
- ↑ "Wildcat" is the codename of iPad.
- ↑ "Venice" is used to determine if video conferencing is allowed. It is not known what Venice stands for.
- ↑ This capability is a dictionary with 4 members. Only width and height are shown here.