iOS Ayarları

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:

  • Ses

  • Konum güncellemeleri

  • Ağ iletişimi

  • Arka planda uygulama yürütme işleminden vazgeçme

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 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ü 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.

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>