Inställningar som bara gäller iOS-enheter placeras inuti
<iPhone>
-elementet i programbeskrivningen.
iPhone
-element kan innehålla elementen
InfoAdditions
,
requestedDisplayResolution
,
Entitlements
,
externalSwfs
och ett underordnat
forceCPURenderModeForDevices
-element.
Med
InfoAdditions
-elementet kan du ange nyckelvärdepar som läggs till i inställningsfilen Info.plist för programmet. Följande värden anger till exempel statusfältets format i programmet och att programmet inte kräver ständig trådlös nätverksåtkomst.
<InfoAdditions>
<![CDATA[
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UIRequiresPersistentWiFi</key>
<string>NO</string>
]]>
</InfoAdditions>
InfoAdditions-inställningarna anges i en
CDATA
-tagg.
Elementet
Entitlements
använder du för att ange nyckelvärdepar tillagda i inställningsfilen Entitlements.plist för programmet. Inställningar i Entitlements.plist ger programåtkomst till vissa iOS-funktioner, till exempel som push-meddelanden.
Mer information om Info.plist- och Entitlements.plist-inställningar finns i Apples dokumentation för utvecklare.
Stöd för bakgrundsåtgärder på iOS
Adobe AIR 3.3 och senare versioner har stöd för flera samtidiga åtgärder på iOS när vissa bakgrundsbeteenden är aktiverade:
Obs!
Med swf-version 21 och dess tidigare versioner har AIR inte stöd för bakgrundskörning på iOS och Android med återgivningsläget Direkt. På grund av den här begränsningen kan Stage3D-baserade program inte köra bakgrundsåtgärder som exempelvis ljuduppspelning, platsuppdateringar och nätverksöverföringar. iOS tillåter inte OpenGLES eller återgivningsanrop i bakgrunden. Program som försöker köra OpenGL-anrop i bakgrunden avslutas av iOS. Android begränsar inte program från att köra OpenGLES-anrop i bakgrunden eller från att köra andra bakgrundsåtgärder (som ljuduppspelning). Med swf-version 22 och senare kan AIR-mobilprogram köras i bakgrunden med återgivningsläget Direkt. AIR iOS-miljön genererar ett ActionScript-fel (3768 – Programmeringsgränssnittet för Stage3D kan inte användas under bakgrundskörning) om OpenGLES-anrop sker i bakgrunden. Däremot genereras inget fel på Android, eftersom Android-program tillåts köra OpenGLES-anrop i bakgrunden. För att utnyttja mobilresurserna optimalt bör återgivningsanrop inte ske när ett program körs i bakgrunden.
Bakgrundsljud
Om du vill aktivera uppspelning och inspelning av ljud i bakgrunden inkluderar du följande nyckelvärdepar i elementet
InfoAdditions
:
<InfoAdditions>
<![CDATA[
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
]]>
</InfoAdditions>
Platsuppdateringar i bakgrunden
Om du vill aktivera platsuppdateringar i bakgrunden inkluderar du följande nyckelvärdepar i elementet
InfoAdditions
:
<InfoAdditions>
<![CDATA[
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
]]>
</InfoAdditions>
Obs!
Använd bara den här funktionen när det behövs, eftersom plats-API:er tär på batteriet.
Bakgrundsnätverk
För att korta åtgärder ska kunna köras i bakgrunden anges egenskapen
NativeApplication.nativeApplication.executeInBackground
som
true
i programmet.
Till exempel kan en filöverföringsåtgärd startas i programmet, varefter användaren placerar ett annat program i fokus. När programmet tar emot en händelse om slutförd överföring, kan det ställa in
false
för
NativeApplication.nativeApplication.executeInBackground
.
Att egenskapen
NativeApplication.nativeApplication.executeInBackground
anges som
true
garanterar inte att programmet körs oavbrutet, eftersom det finns en tidsgräns i iOS för bakgrundsåtgärder. När iOS avslutar bakgrundsbearbetningen skickas händelsen
NativeApplication.suspend
i AIR.
Välja bort programkörning i bakgrunden
Du kan ange att programmet explicit ska välja bort körning i bakgrunden genom att inkludera följande nyckelvärdepar i elementet
InfoAdditions
:
<InfoAdditions>
<![CDATA[
<key>UIApplicationExitsOnSuspend</key>
<true/>
]]>
</InfoAdditions>
Reserverade inställningar för InfoAdditions i iOS
AIR anger flera poster i den genererade filen Info.plist för att garantera att programmet och körningsfunktionerna fungerar korrekt. Du kan inte definiera följande inställningar:
CFBundleDisplayName
CFBundleExecutable
CFBundleIconFiles
CFBundleIdentifier
CFBundleInfoDictionaryVersion
CFBundlePackageType
CFBundleResourceSpecification
CFBundleShortVersionString
CFBundleSupportedPlatforms
CFBundleVersion
CTAutoOrients
|
CTInitialWindowTitle
CTInitialWindowVisible
CTIosSdkVersion
CTMaxSWFMajorVersion
DTPlatformName
DTSDKName
MinimumOSVersion (reserveras för 3.2)
NSMainNibFile
UIInterfaceOrientation
UIStatusBarHidden
UISupportedInterfaceOrientations
|
Obs!
Du kan definiera MinimumOSVersion. Definitionen MinimumOSVersion kan användas i Air 3.3 och senare.
Stöd för olika iOS-modeller
För iPad-stöd inkluderar du korrekt nyckelvärdesinställning för
UIDeviceFamily
inuti
InfoAdditions
-elementet. Inställningen
UIDeviceFamily
är en array med strängar. Varje sträng definierar enheter som stöds. Inställningen
<string>1</string>
definierar stöd för iPhone och iPod touch. Inställningen
<string>2</string>
definierar stöd för iPad. Inställningen
<string>3</string>
definierar stöd för tvOS. Om du bara anger en av dessa strängar stöds bara den enhetsgruppen. Följande sträng begränsar till exempel stödet till iPad:
<key>UIDeviceFamily</key>
<array>
<string>2</string>
</array>>
Följande inställning har stöd för båda enhetsgrupperna (iPhone/iPod Touch och iPad):
<key>UIDeviceFamily</key>
<array>
<string>1</string>
<string>2</string>
</array>
Dessutom kan du i AIR 3.7 och senare använda taggen
forceCPURenderModeForDevices
om du vill framtvinga CPU-återgivningsläget för en angiven uppsättning enheter och aktivera GPU-återgivningsläget för återstående iOS-enheter.
Du lägger till denna tagg som underordnad till
iPhone
-taggen och skapar en blankstegsavgränsad lista över enhetsmodellnamnen. Se
forceCPURenderModeForDevices
om du vill få en lista över godkända enhetsmodellnamn.
Om du till exempel vill använda CPU-läget i gamla iPod-, iPhone- och iPad-modeller och aktiverar GPU-läget för alla andra enheter ska du ange följande i programbeskrivningen:
...
<renderMode>GPU</renderMode>
...
<iPhone>
...
<forceCPURenderModeForDevices>iPad1,1 iPhone1,1 iPhone1,2 iPod1,1
</forceCPURenderModeForDevices>
</iPhone>
Skärmar med hög upplösning
Elementet
requestedDisplayResolution
anger om ditt program ska använda
standardupplösning
eller
hög upplösning
på iOS-enheter med högupplösta skärmar.
<requestedDisplayResolution>high</requestedDisplayResolution>
I läget med hög upplösning kan du adressera varje högupplöst pixel individuellt. I standardläget visas enhetens skärm som en skärm med standardupplösning för programmet. När en enda pixel ritas i det här läget anges färgen för fyra pixlar på den högupplösta skärmen.
Standardinställningen är
standard
. Tänk på att om målenheterna är iOS-enheter använder du elementet
requestedDisplayResolution
som ett underordnat element till elementet
iPhone
(inte elementet
InfoAdditions
eller
initialWindow
).
Om du vill använda olika inställningar för olika enheter anger du standardvärdet som värdet för elementet
requestedDisplayResolution
. Använd attributet
excludeDevices
för att ange de enheter som ska använda motsatt värde. Med följande kod används till exempel läget med hög upplösning för alla enheter som har stöd för detta, utom 3:e generationens iPad-enheter, som använder standardläget:
<requestedDisplayResolution excludeDevices="iPad3">high</requestedDisplayResolution>
Attributet
excludeDevices
finns i AIR 3.6 och senare versioner.
Anpassade URI-scheman för iOS
Du kan registrera ett anpassat URI-schema om du vill tillåta ditt program att anropas av en länk på en webbsida eller ett annat, inbyggt program på enheten. Om du vill registrera ett URI-schema lägger du till en CFBundleURLTypes-nyckel i InfoAdditions-elementet. I följande exempel registreras ett URI-schema med namnet
com.example.app
för att tillåta ett program att anropas av webbadresser med adressformatet:
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>
När ditt program anropas via en anpassad URI skickar NativeApplication-objektet en
invoke
-händelse. URL:en för den länken, inklusive frågeparametrar, placeras i
arguments
-arrayen för InvokeEvent-objektet. Du kan använda valfritt antal anpassade URI-scheman.
Obs!
Länkar i en StageWebView-instans kan inte öppna URL:er där egna URI-scheman används.
Obs!
Om ett annat program redan har registrerat ett schema kan ditt program inte ersätta det som registrerat program för det URI-schemat.
Kompatibilitetsfiltrering för iOS
Lägg till poster i en UIRequiredDeviceCapabilities-array inuti
InfoAdditions
-elementet om ditt program bara ska användas på enheter med vissa maskinvaru- eller programvarufunktioner. Följande post talar till exempel om att ett program kräver en stillbildskamera och en mikrofon:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>microphone</string>
<string>still-camera</string>
</array>
Om en enhet saknar dessa funktioner kan programmet inte installeras. De funktionsinställningar som rör AIR-program är:
telefoni
wifi
sms
stillbildskamera
kamera med autofokus
framåtriktad kamera
|
kamerablixt
videokamera
accelerometer
platstjänster
gps
mikrofon
|
I AIR 2.6+ läggs
armv7
och
opengles-2
automatiskt till i listan över obligatoriska funktioner.
Obs!
Du behöver inte inkludera dessa funktioner i programbeskrivningen för att ditt program ska kunna använda dem. Använd bara UIRequiredDeviceCapabilities-inställningarna för att hindra användare från att installera ditt program på enheter som programmet inte fungerar korrekt på.
Avsluta i stället för att pausa
När en användare växlar från ett AIR-program placeras detta i bakgrunden och pausas. Om du vill att ditt program ska avslutas helt i stället för att pausas anger du egenskapen
UIApplicationExitsOnSuspend
som
YES
:
<key>UIApplicationExitsOnSuspend</key>
<true/>
Minimera nedladdningstorleken genom att läsa in externa, resursexklusiva SWF-filer
Du kan minimera storleken på den första programnedladdningen genom att förpacka en delmängd av SWF-filerna som används i programmet och läsa in de återstående (resursexklusiva) externa SWF-filerna i miljön med metoden
Loader.load ()
. Om du vill använda den här funktionen måste du förpacka programmet så att ADT flyttar all ActionScript ByteCode (ABC) från de externt inlästa SWF-filerna till huvudprogrammet för SWF och lämnar en SWF-fil som endast innehåller resurser. Detta görs för att anpassa till regelverket för Apple Store som förbjuder att kod laddas ned sedan programmet har installerats.
ADT gör efterföljande för att stödja externt inlästa SWF-filer (kallas även för "strippade" SWF-filer):
-
Läser in textfilen som anges i
<iPhone>
-elementets
<externalSwfs>
-delelement för att komma åt den radavgränsade listan med SWF-filer som ska läsas under körningen:
<iPhone>
...
<externalSwfs>FilewithPathsOfSWFsThatAreToNotToBePackaged.txt</externalSwfs>
</iPhone>
-
Överför ABC-koden från varje externt inläst SWF-fil till huvudfilen.
-
Utelämnar den externt inlästa SWF-filen från .ipa-filen.
-
Kopierar de strippade SWF-filerna till
.remoteStrippedSWFs
-katalogen. Du har dessa SWF-filer på en webbserver och programmet läser in dem vid behov under körningen.
Du anger vilka SWF-filer som ska läsas in under körningen genom att ange deras namn, en per rad i en textfil. Se följande exempel:
assets/Level1/Level1.swf
assets/Level2/Level2.swf
assets/Level3/Level3.swf
assets/Level4/Level4.swf
Den angivna filsökvägen är relativ till programbeskrivningsfilen. Dessutom måste du ange dessa SWF-filer som resurser i
adt
-kommandot.
Obs!
Den här funktionen gäller endast för standardförpackning. För snabbpaketering (med till exempel hjälp av tolk, simulator eller felsökning) skapar ADT inte strippade SWF-filer.
Mer information om den här funktionen, inklusive exempelkod, finns i
External hosting of secondary SWFs for AIR apps on iOS
, en blogg som drivs av Adobe-teknikern Abhinav Dhandh.
Geolocation-stöd
För Geolocation-stöd ska du lägga till ett av följande nyckelvärdepar i elementet
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>
|
|
|