Yalnızca iOS aygıtları için geçerli olan ayarlar uygulama tanımlayıcısında
<iPhone>
öğesinin içine yerleştirilir.
iPhone
öğesi; alt öğe olarak bir
InfoAdditions
öğesi,
requestedDisplayResolution
öğesi,
Entitlements
öğesi,
externalSwfs
öğesi ve
forceCPURenderModeForDevices
öğesi içerebilir.
InfoAdditions
öğesi uygulama için Info.plist ayarlar dosyasına eklenen anahtar-değer çiftleri belirtmenize olanak tanır. Örneğin, aşağıdaki değerler uygulamanın durum çubuğu stilini belirlerken uygulamanın sürekli bir Wi-Fi erişimi gerektirmediğini ifade eder.
<InfoAdditions>
<![CDATA[
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UIRequiresPersistentWiFi</key>
<string>NO</string>
]]>
</InfoAdditions>
InfoAdditions ayarları bir
CDATA
etiketine eklenmiştir.
Entitlements
öğesi, uygulamanın Entitlements.plist ayar dosyasına eklenen anahtar-değer çiftlerini belirtmenize olanak tanır. Entitlements.plist ayarları, push bildirimleri gibi belirli iOS özelliklerine uygulama erişimi sağlar.
Info.plist ve Entitlements.plist ayarları hakkında daha ayrıntılı bilgi için Apple geliştirici belgelerine bakın.
iOS'ta arka plan görevlerini destekleme
Adobe AIR 3.3 ve daha yüksek sürümleri, belirli arka plan davranışlarını etkinleştirerek iOS'ta çoklu görevleri destekler:
Not:
swf sürümü 21 ve önceki sürümlerinde AIR, oluşturma modu direct (doğrudan) ayarlandığında iOS ve Android'de arka planda yürütmeyi desteklemez. Bu kısıtlama nedeniyle, Stage3D temelli uygulamalar ses yürütme, konum güncellemeleri, ağ yükleme veya indirme vb. gibi arka plan görevlerini yürütemez. iOS, arka planda OpenGLES veya çağrı oluşturmaya izin vermez. Arka planda OpenGL çağrıları yapmayı deneyen uygulamalar iOS tarafından sonlandırılır. Android, uygulamaları arka planda OpenGLES çağrıları veya ses yürütme gibi diğer arka plan görevlerini gerçekleştirme konusunda kısıtlamaz. swf sürümü 22 ve sonraki sürümlerinde AIR mobil uygulamaları, renderMode direct (doğrudan) olarak ayarlandığında arka planda yürütme gerçekleştiremez. OpenGLES çağrıları arka planda yapılırsa AIR iOS çalışma zamanı bir ActionScript hatası ile sonuçlanır (3768 - Stage3D API'si arka planda yürütme sırasında kullanılmayabilir). Ancak, yerel uygulamalarına arka planda OpenGLES çağrıları yapma izni verildiğinden Android'de hata olmaz. Mobil kaynağın en iyi şekilde kullanımı için arka planda uygulama yürütülürken oluşturma çağrıları yapmayın.
Arka plan sesi
Arka planda ses oynatmayı ve kayıt yapmayı etkinleştirmek için
InfoAdditions
öğesine aşağıdaki anahtar-değer çiftini ekleyin:
<InfoAdditions>
<![CDATA[
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
]]>
</InfoAdditions>
Arka planda konum güncellemeleri
Arka planda konum güncellemelerini etkinleştirmek için
InfoAdditions
öğesine aşağıdaki anahtar-değer çiftini ekleyin:
<InfoAdditions>
<![CDATA[
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
]]>
</InfoAdditions>
Not:
Konum API'leri pili önemli ölçüde boşalttığından, bu özelliği yalnızca gerektiğinde kullanın.
Arka planda ağ iletişimi
Uygulamanız, arka planda kısa görevler yürütmek amacıyla
NativeApplication.nativeApplication.executeInBackground
özelliğini
true
olarak ayarlar.
Örneğin uygulamanız bir dosya yükleme işlemi başlatabilir. Ardından kullanıcı başka bir uygulamayı öne getirebilir. Uygulama, bir yükleme tamamlama olayı aldığında
NativeApplication.nativeApplication.executeInBackground
öğesini
false
olarak ayarlayabilir.
iOS, arka plan görevlerine zaman sınırı koyduğundan,
NativeApplication.nativeApplication.executeInBackground
özelliğinin
true
olarak ayarlanması, uygulamanın süresiz olarak çalışacağı garantisini vermez. iOS, arka planda işlemeyi durdurduğunda AIR
NativeApplication.suspend
olayını gönderir.
Arka planda yürütme işleminden vazgeçme
Uygulamanız, aşağıdaki anahtar-değer çiftinin
InfoAdditions
öğesine eklenmesiyle arka planda yürütme işleminden açıkça vazgeçebilir.
<InfoAdditions>
<![CDATA[
<key>UIApplicationExitsOnSuspend</key>
<true/>
]]>
</InfoAdditions>
Ayrılmış iOS InfoAdditions ayarları
AIR, uygulama ve çalışma zamanı özelliklerinin düzgün çalıştığından emin olmak için oluşturulan Info.plist dosyasında çeşitli girişler ayarlar. Aşağıdaki ayarları tanımlayamazsınız:
CFBundleDisplayName
CFBundleExecutable
CFBundleIconFiles
CFBundleIdentifier
CFBundleInfoDictionaryVersion
CFBundlePackageType
CFBundleResourceSpecification
CFBundleShortVersionString
CFBundleSupportedPlatforms
CFBundleVersion
CTAutoOrients
|
CTInitialWindowTitle
CTInitialWindowVisible
CTIosSdkVersion
CTMaxSWFMajorVersion
DTPlatformName
DTSDKName
MinimumOSVersion (3.2'ye kadar ayrılmış)
NSMainNibFile
UIInterfaceOrientation
UIStatusBarHidden
UISupportedInterfaceOrientations
|
Not:
MinimumOSVersion değerini tanımlayabilirsiniz. MinimumOSVersion tanımı Air 3.3 ve sonraki sürümlerde mevcuttur.
Farklı iOS aygıtı modellerini destekleme
iPad desteği için
InfoAdditions
öğenize
UIDeviceFamily
öğesi için uygun anahtar-değer ayarlarını dahil edin.
UIDeviceFamily
ayarı bir dize dizisidir. Her dize desteklenen aygıtları tanımlar.
<string>1</string>
ayarı iPhone ve iPod Touch için desteği tanımlar.
<string>2</string>
ayarı, iPad desteğini tanımlar.
<string>3</string>
ayarı, tvOS desteğini tanımlar. Bu dizelerden yalnızca birini belirtirseniz, yalnızca bu aygıt ailesi desteklenir. Örneğin, aşağıdaki ayar sınırları iPad'i destekler:
<key>UIDeviceFamily</key>
<array>
<string>2</string>
</array>>
Aşağıdaki ayar iki aygıt ailesini de destekler (iPhone/iPod Touch ve iPad):
<key>UIDeviceFamily</key>
<array>
<string>1</string>
<string>2</string>
</array>
Ayrıca AIR 3.7 ve sonrasında, CPU oluşturma modunu belirtilen bir aygıt kümesi için zorlamak ve GPU oluşturma modunu kalan iOS aygıtları için etkinleştirmek üzere
forceCPURenderModeForDevices
etiketini kullanabilirsiniz.
Bu etiketi
iPhone
etiketinin alt öğesi olarak ekleyin ve boşlukla ayrılmış bir aygıt modeli ad listesi belirtin. Geçerli aygıt modeli ad listesi için bkz.
forceCPURenderModeForDevices
.
Örneğin, eski iPod'larda, iPhone'larda ve iPad'lerde CPU modunu kullanmak ve diğer tüm aygıtlarda GPU modunu etkinleştirmek için, uygulama tanımlayıcıda aşağıdakileri belirtin:
...
<renderMode>GPU</renderMode>
...
<iPhone>
...
<forceCPURenderModeForDevices>iPad1,1 iPhone1,1 iPhone1,2 iPod1,1
</forceCPURenderModeForDevices>
</iPhone>
Yüksek çözünürlüklü ekranlar
requestedDisplayResolution
öğesi uygulamanızın yüksek çözünürlüklü ekranlara sahip iOS aygıtlarında
standard
çözünürlüğü mü yoksa
yüksek
çözünürlük modunu mu kullanması gerektiğini belirtir.
<requestedDisplayResolution>high</requestedDisplayResolution>
Yüksek çözünürlük modunda, yüksek çözünürlüklü ekrandaki her pikseli bireysel olarak ele alabilirsiniz. Standart modda, aygıt ekranı uygulamanıza standart çözünürlüklü ekran olarak görünür. Bu modda tek bir piksel çizmek, yüksek çözünürlüklü ekranda dört pikselin rengini ayarlayacaktır.
Varsayılan değer
standard
değeridir. Unutmayın, iOS aygıtlarını hedeflemek için
requestedDisplayResolution
öğesi,
iPhone
öğesinin alt öğesi olarak kullanılır (
InfoAdditions
öğesi veya
initialWindow
öğesi değil).
Farklı aygıtlarda farklı ayarlar kullanmak istiyorsanız, varsayılan değerinizi
requestedDisplayResolution
öğesinin değeri olarak belirleyin. Karşıt değeri kullanması gereken aygıtları belirtmek için
excludeDevices
niteliğini kullanın. Örneğin, yüksek çözünürlük modu aşağıdaki kodla, bu modu destekleyen tüm aygıtlarda kullanılır (standart modu kullanan 3. nesil iPad'ler hariç):
<requestedDisplayResolution excludeDevices="iPad3">high</requestedDisplayResolution>
excludeDevices
niteliği AIR 3.6 ve üst sürümlerinde kullanılabilir.
iOS özel URI şemaları
Uygulamanızın bir web sayfasındaki bağlantı tarafından veya aygıttaki başka bir yerel uygulama tarafından çağrılmasına izin vermek için özel bir URI şeması kaydedebilirsiniz. Bir URI şemasını kaydetmek için InfoAdditions öğesine bir CFBundleURLTypes anahtarı ekleyin. Aşağıdaki örnek, bir uygulamanın
example://foo
biçimine sahip URL'ler tarafından çağrılmasına izin vermek için
com.example.app
adlı bir URI şeması kaydeder.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>example</string>
</array>
<key>CFBundleURLName</key>
<string>com.example.app</string>
</dict>
</array>
Uygulamanız özel bir URI aracılığıyla başlatıldığında NativeApplication nesnesi bir
invoke
olayı gönderir. Sorgu parametreleri de dahil olmak üzere bağlantının URL'si InvokeEvent nesnesinin
arguments
dizisine yerleştirilir. Herhangi bir sayıda özel URI şeması kullanabilirsiniz.
Not:
Bir StageWebView örneğindeki bağlantılar özel bir URI şeması kullanan URL'leri açamaz.
Not:
Başka bir uygulama zaten bir şema kaydetmişse, uygulama o URI şeması için kaydedildiğinden, uygulama bunu değiştiremez.
iOS uyumluluk filtrelemesi
Uygulamanızın yalnızca belirli donanım ve yazılım özelliklerine sahip aygıtlarda kullanılması gerekiyorsa,
InfoAdditions
öğesi içindeki UIRequiredDeviceCapabilities dizisine girişler ekleyin. Örneğin, aşağıdaki giriş bir uygulamanın bir fotoğraf kamerası ve bir mikrofon gerektirdiğini gösterir:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>microphone</string>
<string>still-camera</string>
</array>
Bir aygıtta karşılık gelen özellikler yoksa uygulama yüklenemez. AIR uygulamalarıyla ilgili özellik ayarları şunları içerir:
telephony
wifi
sms
still-camera
auto-focus-camera
front-facing-camera
|
camera-flash
video-camera
accelerometer
location-services
gps
microphone
|
AIR 2.6 ve üstü
armv7
ve
opengles-2
öğelerini gerekli özellikler listesine otomatik olarak ekler.
Not:
Uygulamanızın kullanması için bu özellikleri uygulama tanımlayıcısına dahil etmeniz gerekmez. UIRequiredDeviceCapabilities ayarlarını yalnızca kullanıcıların uygulamanızı düzgün çalışmayacağı aygıtlara yüklemesini engellemek için kullanın.
Duraklatma yerine çıkma
Kullanıcı bir AIR uygulamasından başka bir uygulamaya geçtiğinde, uygulama arka plana geçer ve duraklar. Uygulamanızın duraklamak yerine tamamen çıkmasını isterseniz,
UIApplicationExitsOnSuspend
özelliğini
YES
olarak ayarlayın.
<key>UIApplicationExitsOnSuspend</key>
<true/>
Harici, yalnızca varlık içeren SWF'leri yükleyerek indirme boyutunu küçültme
Uygulamanız tarafından kullanılan SWF'lerin bir alt kümesini paketleyerek ve çalışma zamanında
Loader.load()
yöntemiyle kalan (yalnızca varlık içeren) harici SWF'lerini yükleyerek ilk uygulama indirme boyutunuzu küçültebilirsiniz. Bu özelliği kullanmak için uygulamayı, ADT harici olarak yüklenen SWF dosyalarındaki tüm ActionScript ByteCode (ABC) öğelerini ana uygulama SWF'sine taşıyıp, yalnızca varlık içeren bir SWF dosyası bırakacak şekilde paketlemeniz gerekir. Bunun, bir uygulamanın yüklenmesinin ardından herhangi bir kodun indirilmesini yasaklayan Apple Store kuralıyla uyumlu olması gerekir.
ADT, harici olarak yüklenen SWF'leri (kesilen SWF'ler olarak da adlandırılır) desteklemek için şunları yapar:
-
Çalıştırma zamanında yüklenmesi için çizgiyle sınırlandırılmış SWF listesine erişmek üzere
<iPhone>
öğesinin
<externalSwfs>
alt öğesinde belirtilen metin dosyasını okur.
<iPhone>
...
<externalSwfs>FilewithPathsOfSWFsThatAreToNotToBePackaged.txt</externalSwfs>
</iPhone>
-
ABC kodunu her bir harici olarak yüklenen SWF'den ana çalıştırılabilir dosyaya aktarır.
-
.ipa dosyasındaki harici olarak yüklenen SWF'leri atlar.
-
Kesilen SWF'leri
.remoteStrippedSWFs
dizinine kopyalar. Bu SWF'leri bir web sunucusunda barındırdığınızda uygulamanız bunları gerektiğinde çalışma zamanında yükler.
Çalışma zamanında yüklenecek SWF dosyalarını, aşağıdaki örnekte gösterildiği gibi, adlarını metin dosyasında satır başına bir tane gelecek şekilde belirterek gösterin:
assets/Level1/Level1.swf
assets/Level2/Level2.swf
assets/Level3/Level3.swf
assets/Level4/Level4.swf
Belirtilen dosya yolu, uygulama tanımlayıcı dosyasına göre değişir. Ayrıca bu SWF'leri
adt
komutunda varlık olarak belirtmelisiniz.
Not:
Bu özellik yalnızca standart paketleme için geçerlidir. ADT, hızlı paketlemede (örneğin, yorumlayıcı benzeticisini veya hata ayıklamayı kullanarak) kesilen SWF'ler oluşturmaz.
Örnek kod dahil olmak üzere bu özellikle ilgili daha fazla bilgi için Adobe mühendisi Abhinav Dhandh tarafından yayınlanan
External hosting of secondary SWFs for AIR apps on iOS
(iOS'ta AIR uygulamaları için ikincil SWF'lerin harici olarak barındırılması) web günlüğüne bakın.
Coğrafi Konum Desteği
Coğrafi Konum desteği için aşağıdaki anahtar-değer çiftlerinden birini
InfoAdditions
öğesine ekleyin:
<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>
|
|
|