- 支持 iOS 上的后台任务
- 保留的 iOS InfoAdditions 设置
- 支持不同的 iOS 设备型号
- 高分辨率显示器
- iOS 自定义 URI 方案
- iOS 兼容性筛选
- 退出而不是暂停
仅应用于 iOS 设备的设置会被放置到应用程序描述符的 <iPhone> 元素中。
iPhone 元素可以将 InfoAdditions 元素、requestedDisplayResolution 元素和 Entitlements 元素作为子级。
<InfoAdditions> <![CDATA[ <key>UIStatusBarStyle</key> <string>UIStatusBarStyleBlackOpaque</string> <key>UIRequiresPersistentWiFi</key> <string>NO</string> ]]> </InfoAdditions>
InfoAdditions 设置括在 CDATA 标记中。
利用 Entitlements 元素,您可以指定要添加到应用程序的 Entitlements.plist 设置文件的键值对。Entitlements.plist 设置使应用程序能够访问某些 iOS 功能,例如推送通知。
有关 Info.plist 和 Entitlements.plist 设置的更多详细信息,请参阅 Apple 开发人员文档。
支持 iOS 上的后台任务
Adobe AIR 3.3 和更高版本通过启用某些后台行为在 iOS 上支持多任务处理:
- 音频
- 位置更新
- 网络
- 选择禁止后台执行应用程序
后台音频
若要启用后台音频播放和录制,请在 InfoAdditions 元素中包括以下键值对:
<InfoAdditions> <![CDATA[ <key>UIBackgroundModes</key> <array> <string>audio</string> </array> ]]> </InfoAdditions>
后台位置更新
若要启用后台位置更新,请在 InfoAdditions 元素中包括以下键值对:
<InfoAdditions> <![CDATA[ <key>UIBackgroundModes</key> <array> <string>location</string> </array> ]]> </InfoAdditions>
后台网络
为了在后台执行简短任务,您的应用程序会将 NativeApplication.nativeApplication.executeInBackground 属性设置为 true。
例如,您的应用程序可能会启动文件上载操作,此后用户将另一个应用程序移动到前台。当应用程序收到上载完成事件时,它可以将 NativeApplication.nativeApplication.executeInBackground 设置为 false。
将 NativeApplication.nativeApplication.executeInBackground 属性设置为 true 不能保证应用程序将无限期运行,因为 iOS 会对后台任务施加时间限制。当 iOS 停止后台处理时,AIR 将调度NativeApplication.suspend 事件。
选择禁止后台执行
您的应用程序可以通过在 InfoAdditions 元素中包括以下键值对,明确选择禁止后台执行:
<InfoAdditions> <![CDATA[ <key>UIApplicationExitsOnSuspend</key> <true/> ]]> </InfoAdditions>
保留的 iOS InfoAdditions 设置
AIR 会在生成的 Info.plist 文件中设置多个条目,以确保应用程序和运行时功能正确运行。您不能定义以下设置:
CFBundleDisplayName CFBundleExecutable CFBundleIconFiles CFBundleIdentifier CFBundleInfoDictionaryVersion CFBundlePackageType CFBundleResourceSpecification CFBundleShortVersionString CFBundleSupportedPlatforms CFBundleVersion CTAutoOrients | CTInitialWindowTitle CTInitialWindowVisible CTIosSdkVersion CTMaxSWFMajorVersion DTPlatformName DTSDKName MinimumOSVersion(在 AIR 3.3 和更高版本中有效) NSMainNibFile UIInterfaceOrientation UIStatusBarHidden UISupportedInterfaceOrientations |
支持不同的 iOS 设备型号
为了支持 iPad,请为 InfoAdditions 元素中的 UIDeviceFamily 添加正确的键值设置。UIDeviceFamily 设置是一个字符串数组。每个字符串都定义受支持的设备。<string>1</string> 设置定义对 iPhone 和 iPod Touch 的支持。<string>2</string> 设置定义对 iPad 的支持。如果仅指定其中一个字符串,则仅支持该设备系列。例如,下面的设置限制对 iPad 的支持:
<key>UIDeviceFamily</key> <array> <string>2</string> </array>>
下面的设置支持两个设备系列(iPhone/iPod Touch 和 iPad):
<key>UIDeviceFamily</key> <array> <string>1</string> <string>2</string> </array>
高分辨率显示器
利用 requestedDisplayResolution 元素,可以指定在具有高分辨率屏幕的 iOS 设备上,应用程序是应该使用 standard 分辨率模式还是应该使用 high 分辨率模式。
<requestedDisplayResolution>high</requestedDisplayResolution>
在高分辨率模式中,您可以在高分辨率显示屏上逐个处理每个像素。在标准模式中,设备屏幕将以标准分辨率显示应用程序。在该模式中绘制单个像素会在高分辨率屏幕上设置四个像素的颜色。
默认设置为 standard。请注意,requestedDisplayResolution 元素是 iPhone 元素(而不是 InfoAdditions 元素)的子元素。
iOS 自定义 URI 方案
您可以注册自定义 URI 方案,以便允许您的应用程序由网页中的链接或设备上的其他本机应用程序进行调用。若要注册 URI 方案,请将 CFBundleURLTypes 键添加到 InfoAdditions 元素中。下面的示例注册了一个名为 com.example.app 的 URI 方案,从而允许应用程序由 example://foo 形式的 URL 进行调用。
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>example</string> </array> <key>CFBundleURLName</key> <string>com.example.app</string> </dict> </array>
通过自定义 URI 调用应用程序时,NativeApplication 对象会调度一个 invoke 事件。此链接的 URL(包括查询参数)放在 InvokeEvent 对象的 arguments 数组中。您可以使用任意多个自定义 URI 方案。
iOS 兼容性筛选
如果您的应用程序只能在具有特定硬件或软件功能的设备上使用,则请将条目添加到 InfoAdditions 元素的 UIRequiredDeviceCapabilities 数组中。例如,以下条目表示应用程序需要静态摄像头和麦克风:
<key>UIRequiredDeviceCapabilities</key> <array> <string>microphone</string> <string>still-camera</string> </array>
如果设备缺少相应的功能,则无法安装该应用程序。与 AIR 应用程序相关的功能设置包括:
telephony wifi sms still-camera auto-focus-camera front-facing-camera | camera-flash video-camera accelerometer location-services gps microphone |
AIR 2.6 以上的版本自动将 armv7 和 opengles-2 添加到必需功能的列表中。