iOS 設定

在應用程式描述器中,僅能套用至 iOS 裝置的設定會置於 <iPhone> 元素內。 iPhone 元素可以具有 InfoAdditions 元素、 requestedDisplayResolution 元素、 Entitlements 元素、 externalSwfs 元素和 forceCPURenderModeForDevices 做為子系。

InfoAdditions 元素可讓您指定索引鍵值配對,以新增至應用程式的 Info.plist 設定檔案。例如,下列值會設定應用程式的狀態列樣式,並指出應用程式不需要持續存取 Wi-Fi。
<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 上支援多工作業:

  • 音效

  • 位置更新

  • 網路

  • 選擇結束背景應用程式執行

備註: 在 SWF 版本 21 及舊版中,當設定「直接」顯示模式時,AIR 並未支援背景執行。由於這個限制,Stage3D 應用程式無法執行背景工作,例如音效播放、位置更新、網路上傳或下載等。iOS 不允許在背景執行 OpenGLES 或顯示呼叫。嘗試在背景進行 OpenGL 呼叫的應用程式會遭到 iOS 加以終止。Android 並未限制應用程式在背景進行 OpenGLES 呼叫或是執行其他背景工作 (如音效播放)。透過 SWF 版本 22 及更新版本,AIR 行動裝置應用程式可以在已設定 renderMode direct 的情況下在背景執行。如果在背景進行 OpenGLES 呼叫,AIR iOS 執行階段會造成 ActionScript 錯誤 (3768 - 在背景執行期間不會使用 Stage3D API)。不過,在 Android 則不會造成任何錯誤,因為 Android 原生應用程式是可以在背景進行 OpenGLES 呼叫的。為了讓行動裝置資源的運用達到最佳化,當應用程式在背景執行時,請不要進行顯示呼叫。

背景音效

若要啟用背景音效播放和錄製,請在 InfoAdditions 元素中加入下列索引鍵值配對:

<InfoAdditions> 
                                <![CDATA[ 
                                <key>UIBackgroundModes</key> 
                                <array> 
                                <string>audio</string> 
                                </array> 
                                ]]> 
                                </InfoAdditions>

背景位置更新

若要啟用背景位置更新,請在 InfoAdditions 元素中加入下列索引鍵值配對:

<InfoAdditions> 
                                <![CDATA[ 
                                <key>UIBackgroundModes</key> 
                                <array> 
                                <string>location</string> 
                                </array> 
                                ]]> 
                                </InfoAdditions>
備註: 僅在必要時使用這個功能,因為位置 API 非常耗電。

背景網路

若要在背景執行簡短工作,您的應用程式會將 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 (保留至 3.2)

NSMainNibFile

UIInterfaceOrientation

UIStatusBarHidden

UISupportedInterfaceOrientations

備註: 您可以定義 MinimumOSVersion。MinimumOSVersion 定義會在 Air 3.3 及更新版本中實行。

支援不同的 iOS 裝置機型

如需 iPad 支援,請在 InfoAdditions 元素內加上 UIDeviceFamily 的適當索引鍵值設定。 UIDeviceFamily 設定為字串陣列。每個字串定義支援的裝置。 <string>1</string> 設定定義支援 iPhone 與 iPod Touch。 <string>2</string> 設定定義支援 iPad。 <string>3</string> 設定定義支援 tvOS。如果僅指定其中一個字串,則只會支援該裝置系列。例如,下列設定僅支援 iPad:

<key>UIDeviceFamily</key> 
                            <array> 
                            <string>2</string> 
                            </array>>

下列設定同時支援兩種裝置系列 (iPhone/iPod Touch 和 iPad):

<key>UIDeviceFamily</key> 
                            <array> 
                            <string>1</string> 
                            <string>2</string> 
                            </array>

此外,在 AIR 3.7 及更新版本中,您可以使用 forceCPURenderModeForDevices 標記,針對指定的裝置組合強制套用 CPU 顯示模式,並針對其餘 iOS 裝置啟用 GPU 顯示模式。

您可以將這個標記新增為 iPhone 標記的子系,並且指定以空格分隔的裝置機型名稱清單。如需有效的裝置機型名稱清單,請參閱 forceCPURenderModeForDevices

例如,若要在舊版 iPod、iPhone 和 iPad 中使用 CPU 模式,並且針對所有其他裝置啟用 GPU 模式,請在應用程式描述器中指定下列項目:

... 
                            <renderMode>GPU</renderMode> 
                            ... 
                            <iPhone> 
                            ... 
                               <forceCPURenderModeForDevices>iPad1,1 iPhone1,1 iPhone1,2 iPod1,1 
                               </forceCPURenderModeForDevices> 
                            </iPhone>

高解析度顯示

requestedDisplayResolution 元素指定在具有高解析度螢幕的 iOS 裝置上,應用程式應該使用「標準」還是「高」解析度模式。

<requestedDisplayResolution>high</requestedDisplayResolution>

在高解析度模式下,您可以個別處理高解析度畫面的每一個像素。在標準模式下,應用程式會將裝置螢幕當成標準解析度螢幕。在此模式下繪製單一像素會在高解析度螢幕上設定四個像素的顏色。

預設設定為 standard 。請注意,針對以 iOS 為目標的裝置,請將 requestedDisplayResolution 元素當做 iPhone 元素的子元素 (不是 InfoAdditions 元素或 initialWindow 元素) 來使用。

如果您想要在不同裝置使用不同設定,請將您的預設值指定為 requestedDisplayResolution 元素的值。使用 excludeDevices 特質可指定應使用相反值的裝置。例如,透過下列程式碼,高解析度模式可用於所有支援的裝置,除了第 3 代 iPad 以外,因為它使用標準模式:

<requestedDisplayResolution excludeDevices="iPad3">high</requestedDisplayResolution>

excludeDevices 特質可以在 AIR 3.6 及更新版本中取得。

iOS 自訂 URI 配置

您可以註冊自訂 URI 配置,以便透過網頁中的連結或裝置上的其他原生應用程式來叫用您的應用程式。若要註冊 URI 配置,請將 CFBundleURLTypes 索引鍵新增至 InfoAdditions 元素。下列範例會註冊名為 com.example.app 的 URI 配置,以使用下列形式的 URL 來叫用應用程式:example://foo。

<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 配置。

備註: StageWebView 實體中的連結無法開啟使用自訂 URI 配置的 URL。
備註: 如果另一個應用程式已註冊某個配置,則您的應用程式無法取代該應用程式成為該 URL 配置的已註冊應用程式。

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 新增至必要功能清單。

備註: 這些功能不需要加到應用程式描述器中,就能供應用程式使用。使用 UIRequiredDeviceCapabilities 設定只是為了防止使用者將應用程式安裝到應用程式無法正常運作的裝置上。

結束而非暫停

當使用者離開 AIR 應用程式時,它會進入背景並暫停。如果要讓應用程式完全結束而非暫停,請將 UIApplicationExitsOnSuspend 屬性設為 YES

<key>UIApplicationExitsOnSuspend</key> 
                            <true/>

載入僅限資源的外部 SWF,將下載大小減到最小

您可以封裝應用程式所使用的 SWF 子集,並且使用 Loader.load() 方法在執行階段載入其餘 (僅限資源) 的外部 SWF,藉此將初始應用程式下載大小減到最小。若要使用這個功能,您必須封裝應用程式,如此,ADT 就會將所有 ActionScript ByteCode (ABC) 從外部載入的 SWF 檔案移至主應用程式 SWF,留下只包含資源的 SWF 檔案。這是為了符合 Apple Store 禁止在安裝應用程式之後下載任何程式碼的規則所致。

ADT 會執行下列動作以支援外部載入的 SWF (也稱去除的 SWF):

  • 讀取 <iPhone> 元素的 <externalSwfs> 子元素中指定的文字檔,以便存取要在執行時載入、以行分隔的 SWF 清單。

    <iPhone> 
                                           ... 
                                           <externalSwfs>FilewithPathsOfSWFsThatAreToNotToBePackaged.txt</externalSwfs> 
                                        </iPhone>
  • 將每個外部載入的 SWF 中的 ABC 程式碼傳送至主執行檔。

  • 忽略 .ipa 檔案中外部載入的 SWF。

  • 將去除的 SWF 複製至 .remoteStrippedSWFs 目錄。您可以將這些 SWF 裝載在網站伺服器上,在執行階段,應用程式會在需要時載入 SWF。

透過在文字檔中每行輸入一個名稱的指示方式,指定要在執行階段載入之 SWF 檔案的名稱,如下列範例所示:

assets/Level1/Level1.swf 
                            assets/Level2/Level2.swf 
                            assets/Level3/Level3.swf 
                            assets/Level4/Level4.swf

指定的檔案路徑必須相對於應用程式描述器檔案。此外,您必須在 adt 命令中,將這些 SWF 指定為資源。

備註: 這個功能僅適用於標準封裝。為了快速進行封裝 (例如使用解譯器、模擬器或除錯),ADT 不會建立去除的 SWF。

地理位置支援

如需地理位置支援,請將下列其中一個索引鍵值配對新增至 InfoAdditions 元素:

<InfoAdditions> 
                            <![CDATA[ 
                            <key>NSLocationAlwaysUsageDescription</key> 
                            <string>Sample description to allow geolocation always</string> 
                            <key>NSLocationWhenInUseUsageDescription</key> 
                            <string>Sample description to allow geolocation when application is in foreground</string>               
                            ]]> 
                            </InfoAdditions>