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 sesiArka 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üncellemeleriArka 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şimiUygulamanı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çmeUygulamanı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 desteklemeiPad 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 için desteği 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ü ekranlarrequestedDisplayResolution öğ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 filtrelemesiUygulamanı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 çıkmaKullanı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ğiCoğ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>
|
|
|