Настройки, которые применяются только для устройств с ОС 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, например push-уведомлениям.
Дополнительные сведения о настройках Info.plist и Entitlements.plist см. в документации для разработчиков Apple.
Поддержка в iOS задач, выполняемых в фоновом режиме
Adobe AIR 3.3 и более поздних версий поддерживает многозадачность в iOS, обеспечивая выполнение определенных действий в фоновом режиме:
Примечание.
Для SWF версии 21 и более ранних AIR не поддерживает выполнение в фоновом режиме на платформах iOS и Android, когда выбран прямой режим визуализации. Из-за этого приложения на основе Stage3D не могут выполнять фоновые задачи, в частности, воспроизведение аудио, отправку местоположения, передачу данных по сети и пр. Системой iOS запрещены вызовы, обращенные к графическому интерфейсу OpenGLES или визуализации в фоновом режиме. Работа приложений, предпринимающих попытку вызова OpenGL в фоновом режиме, прерывается системой iOS. Система Android разрешает приложениям выполнять как вызовы OpenGLES в фоновом режиме, так и другие фоновые задачи (такие как воспроизведение аудио). Для SWF версии 22 или более поздней мобильные приложения AIR могут выполняться в фоновом режиме, когда выбран прямой режим визуализации. В среде выполнения AIR iOS возникает ошибка ActionScript (3768 — API-интерфейс Stage3D нельзя использовать при выполнении в фоновом режиме), если вызовы OpenGLES отправляются в фоновом режиме. Однако на платформе 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 добавьте корректные настройки пар «ключ-значение» для
UIDeviceFamily
в элемент
InfoAdditions
. Параметр
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
для принудительного включения режима визуализации с использованием ЦП для указанного набора устройств и включения режима визуализации с использованием графического процессора для остальных устройств iOS.
Этот тег необходимо добавить к тегу
iPhone
в качестве дочернего тега и указать перечень моделей устройств, разделенный пробелами. Список допустимых наименований моделей устройств см. в описании
forceCPURenderModeForDevices
.
Например, чтобы использовать режим ЦП в старых устройствах iPod, iPhone и iPad и включить режим графического процессора для всех остальных устройств, в дескрипторе приложения укажите следующее:
...
<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
. К примеру, в следующем коде режим высокого разрешения применяется для всех устройств, поддерживающих его, кроме планшетов iPad 3-го поколения, для которых задан стандартный режим:
<requestedDisplayResolution excludeDevices="iPad3">high</requestedDisplayResolution>
Атрибут
excludeDevices
доступен в версии AIR 3.6 и более поздних.
Пользовательские URI-схемы для iOS
Можно зарегистрировать пользовательскую схему URI, чтобы разрешить вызов приложения по ссылке на веб-странице или другим исходным приложением на устройстве. Чтобы зарегистрировать схему URI, добавьте ключ CFBundleURLTypes в элемент InfoAdditions. В следующем примере выполняется регистрация схемы URI с именем
com.example.app
, чтобы разрешить вызов приложения по 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 ссылки с параметрами запроса помещается в массив
arguments
объекта InvokeEvent. Можно использовать любое количество пользовательских схем URI.
Примечание.
Ссылки в экземпляре StageWebView не поддерживают открытие URL-адресов, для которых используется пользовательская URI-схема.
Примечание.
Если схема уже была зарегистрирована для другого приложения, ваше приложение не может его заменить, так как для этой схемы URI имеется зарегистрированное приложение.
Фильтры совместимости iOS
Добавьте параметры в массив UIRequiredDeviceCapabilities в элементе
InfoAdditions
, если ваше приложение может работать только на устройствах с определенными аппаратными или программными возможностями. Например, следующий параметр указывает, что приложению требуется фотокамера и микрофон:
<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-файлов, используемых приложением, и загрузки оставшихся SWF-файлов (содержащих только ресурсы) во время выполнения с помощью метода
Loader.load()
. Для использования этой функции необходимо упаковать приложение таким образом, чтобы ADT переместил весь код ActionScript ByteCode (ABC) из внешне загружаемых SWF-файлов в главный SWF-файл приложения, оставляя SWF-файл, содержащий только ресурсы. Этого требует правило Apple Store, запрещающее загрузку любого кода после установки приложения.
ADT выполняет следующие действия для поддержки внешне загружаемых SWF-файлов (также называемых очищенными SWF):
-
Считывает текстовый файл, указанный в подэлементе
<externalSwfs>
элемента
<iPhone>
, для доступа к списку SWF-файлов (по одному на строке), которые требуется загрузить во время выполнения:
<iPhone>
...
<externalSwfs>FilewithPathsOfSWFsThatAreToNotToBePackaged.txt</externalSwfs>
</iPhone>
-
Переносит код ABC из каждого внешне загружаемого SWF-файла в основной исполняемый модуль.
-
Удаляет внешне загружаемые SWF-файлы из файла ipa.
-
Копирует очищенные SWF в каталог
.remoteStrippedSWFs
. Эти SWF-файлы размещаются на веб-сервере, и приложение загружает их по мере необходимости во время выполнения.
Указать, какие SWF-файлы необходимо загрузить во время выполнения, можно, перечислив их в текстовом файле (по одному в строке), как показано в следующем примере:
assets/Level1/Level1.swf
assets/Level2/Level2.swf
assets/Level3/Level3.swf
assets/Level4/Level4.swf
Указанный путь к файлу является относительным к файлу дескриптора приложения. Также необходимо перечислить эти SWF-файлы как ресурсы в команде
adt
.
Примечание.
Данная функция относится только к стандартной упаковке. В случае быстрой упаковки (например, при использовании интерпретатора, симулятора или отладчика) ADT не создает очищенные SWF.
Дополнительные сведения об этой функции, включая пример кода, см. в статье
Внешнее размещение вторичных SWF для программ AIR для iOS
в блоге инженера Adobe Абхинава Дхадха (Abhinav Dhandh).
Поддержка определения геоположения
Чтобы обеспечить поддержку определения геоположения, добавьте одну из следующих пар «ключ-значение» в элемент
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>
|
|
|