Xamarin.iOS'ta iPad için çoklu görev

iOS 9, slayt üzerinden veya bölünmüş görünüm kullanarak aynı anda çalışan iki uygulamayı destekler. Ayrıca Resim İçi Resim oynatmayı da destekler.

Bölünmüş Ekran Örneği Resim İçi Resim Örneği

iOS 9, belirli iPad donanımlarında iki uygulamayı aynı anda çalıştırmak için çoklu görev desteği ekler. iPad için çoklu görev, aşağıdaki özellikler aracılığıyla desteklenir:

  • Slide Over - Kullanıcının, şu anda çalışmakta olan ana uygulamanın yaklaşık %25'ini kapsayan bir slayt çıkışı panelinde (dil yönüne göre ekranın sağ veya sol tarafında) ikinci bir iOS uygulamasını geçici olarak çalıştırmasına olanak tanır. Slide Over yalnızca iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 veya iPad Mini 4'te kullanılabilir.
  • Bölünmüş Görünüm - Desteklenen iPad donanımlarında (yalnızca iPad Air 2, iPad Mini 4 ve iPad Pro), kullanıcı ikinci bir uygulama seçebilir ve şu anda çalışan uygulamayla bölünmüş ekran modunda yan yana çalıştırabilir. Kullanıcı, her uygulamanın kapsadığını ana ekranın yüzdesini denetleyebiliyor.
  • Resimdeki Resim - Video içeriğini yürüten uygulamalar için, video artık iOS cihazında çalışmakta olan diğer uygulamaların üzerinde kayan taşınabilir ve yeniden boyutlandırılabilir bir pencerede oynatılabilir. Kullanıcı, bu pencerenin boyutu ve konumu üzerinde tam denetime sahiptir. Resim'deki resim yalnızca iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 veya iPad Mini 4'te kullanılabilir.

Uygulamanızda birden çok görevi desteklerken göz önünde bulundurmanız gereken birkaç şey vardır:

Bir uygulama geliştiricisi olarak PIP Video Kayıttan Yürütme'yi devre dışı bırakmak da dahil olmak üzere birden çok görevi devre dışı bırakabilirsiniz.

Bu makalede, Xamarin.iOS uygulamanızın çoklu görev ortamında doğru şekilde çalıştığından emin olmak için gereken adımlar veya uygulamanız için uygun değilse çoklu görev yapmayı geri çevirme adımları ele alınacaktır.

iPad için çoklu görev yapma videosu

Çoklu Görev Hızlı Başlangıcı

Slide Over veya Split View'ı desteklemek için uygulamanızın aşağıdakileri yapması gerekir:

  • iOS 9 (veya üzeri) için derlenmiş olmalıdır.
  • Görsel Taslak'ı Başlatma Ekranı (görüntü varlıkları için değil) için kullanın.
  • Kullanıcı arabirimi için Otomatik Katman ve Boyut Sınıfları ile görsel taslak kullanın.
  • 4 iOS cihaz yönlendirmesini de destekleyin (Dikey, Baş Aşağı Dikey, Yatay Sol ve Yatay Sağ).

iPad için Çoklu Görev Hakkında

iOS 9, Slide Over, Split View (yalnızca iPad Air 2, iPad Mini 4 ve iPad Pro) ve Picture in Picture ile iPad'de yeni çoklu görev özellikleri sunar. Aşağıdaki bölümlerde bu özelliklere daha yakından bakacağız.

Üzerine Kaydır

Slide Over özelliği, kullanıcının hızlı etkileşim sağlamak için ikinci bir uygulama seçmesine ve küçük bir kayan panelde görüntülemesine olanak tanır. Üzerine Slayt paneli geçicidir ve kullanıcı ana uygulamayla yeniden çalışmaya geri döndüğünde kapanır.

Üzerine Slayt paneli

Hatırlanması gereken temel şey, kullanıcının hangi iki uygulamanın yan yana çalıştırılacağına karar verdiği ve geliştiricinin bu işlem üzerinde hiçbir denetimi olmadığıdır. Sonuç olarak, Xamarin.iOS uygulamanızın Slayt Üzerine Slayt panelinde doğru şekilde çalıştığından emin olmak için yapmanız gereken birkaç şey vardır:

  • Otomatik Katman ve Boyut Sınıflarını Kullanma — Xamarin.iOS uygulamanız artık slayt dışarısı yan panelinde çalıştırılabildiği için, kullanıcı arabiriminizi düzenlerken cihaza, ekran boyutuna veya yönlendirmesine artık güvenemezsiniz. Uygulamanızın arabirimini doğru ölçeklendirdiğinden emin olmak için Otomatik Katman ve Boyut Sınıflarını kullanmanız gerekir. Daha fazla bilgi için Birleşik Görsel Taslaklara Giriş belgelerimize bakın.
  • Kaynakları Verimli Kullanma — Uygulamanız artık sistemi çalışan başka bir uygulamayla paylaşabildiğinden, uygulamanızın sistem kaynaklarını verimli bir şekilde kullanması kritik önem taşır. Bellek seyrek hale geldiğinde, sistem en çok bellek kullanan uygulamayı otomatik olarak sonlandırır. Daha fazla ayrıntı için bkz. Apple'ın iOS Uygulamaları için Enerji Verimliliği Kılavuzu.

Slide Over yalnızca iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 veya iPad Mini 4'te kullanılabilir. Uygulamanızı Slayt Üzerinde'ye hazırlama hakkında daha fazla bilgi edinmek için lütfen Apple'ın iPad'de Çoklu Görev Geliştirmelerini Benimseme belgelerine bakın.

Bölünmüş Görünüm

Desteklenen iPad donanımlarında (yalnızca iPad Air 2, iPad Mini 4 ve iPad Pro), kullanıcı ikinci bir uygulama seçebilir ve şu anda çalışan uygulamayla bölünmüş ekran modunda yan yana çalıştırabilir. Kullanıcı, her uygulamanın kapladığı ana ekranın yüzdesini bir ekran ayırıcıyı sürükleyerek denetleyebiliyor.

Bölünmüş Görünüm

Slide Over gibi, hangi iki uygulamanın yan yana çalıştırılacağına kullanıcı karar verir ve geliştiricinin bu işlem üzerinde hiçbir denetimi yoktur. Sonuç olarak Bölünmüş Görünüm, Xamarin.iOS uygulamasına benzer gereksinimler yerleştirir:

  • Otomatik Katman ve Boyut Sınıflarını kullanma — Xamarin.iOS uygulamanız artık kullanıcının belirtilen boyutunda bölünmüş ekran modunda çalıştırılabildiğinden, kullanıcı arabiriminizi düzenlerken cihaza, ekran boyutuna veya yönlendirmesine artık güvenemezsiniz. Uygulamanızın arabirimini doğru ölçeklendirdiğinden emin olmak için Otomatik Katman ve Boyut Sınıflarını kullanmanız gerekir. Daha fazla bilgi için Birleşik Görsel Taslaklara Giriş belgelerimize bakın.
  • Kaynakları Verimli Kullanma — Uygulamanız artık sistemi çalışan başka bir uygulamayla paylaşabildiğinden, uygulamanızın sistem kaynaklarını verimli bir şekilde kullanması kritik önem taşır. Bellek seyrek hale geldiğinde, sistem en çok bellek kullanan uygulamayı otomatik olarak sonlandırır. Daha fazla ayrıntı için bkz. Apple'ın iOS Uygulamaları için Enerji Verimliliği Kılavuzu.

Uygulamanızı Bölünmüş Görünüm'e hazırlama hakkında daha fazla bilgi edinmek için lütfen Apple'ın iPad'de Çoklu Görev Geliştirmelerini Benimseme belgelerine bakın.

Resimdeki Resim

Yeni Resimdeki Resim özelliği (PIP olarak da bilinir), kullanıcının çalışan diğer uygulamaların üzerinde ekranda herhangi bir yere yerleştirebileceği küçük, kayan bir pencerede video izlemesine olanak tanır.

Resim kayan penceresinde örnek resim

Slayt Üstü ve Bölünmüş Görünüm'de olduğu gibi, kullanıcı Resim modunda resim izleme üzerinde tam denetime sahiptir. Uygulamanızın ana işlevi video izlemekse, PIP modunda doğru şekilde davranması için bazı değişiklikler yapılması gerekir. Aksi takdirde, PIP'i desteklemek için hiçbir değişiklik gerekmez.

Uygulamanızın kullanıcının isteği üzerine PIP videosunu görüntülemesi için AVKit veya AV Foundation API'lerini kullanmanız gerekir. Medya Oynatıcı çerçevesi iOS 9'da kullanımdan kaldırılmıştır ve PIP'i desteklemez.

Resim'deki resim yalnızca iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 veya iPad Mini 4'te kullanılabilir. Daha fazla bilgi için Bkz. Apple'ın Picture in Picture Quick Start belgeleri.

Uygulamanızda Birden Çok Görevi Destekleme

Mevcut herhangi bir Xamarin.iOS uygulaması için, uygulamanız Apple'ın iOS 8 için tasarım kılavuzlarını ve en iyi uygulamalarını izlediği sürece çoklu görevi destekleme saydam bir görevdir. Bu, uygulamanın Kullanıcı Arabirimi düzenleri için Otomatik Katman ve Boyut Sınıflarına sahip görsel taslakları kullanması gerektiği anlamına gelir (daha fazla bilgi için Birleşik Görsel Taslaklara Giriş sayfamıza bakın).

Bu uygulamalar için, birden çok görevi desteklemek ve içinde iyi davranabilmek için çok az değişiklik yapılması veya hiç yapılmamış olması gerekir. Uygulamanızın kullanıcı arabirimi, C# kodunda kullanıcı arabirimi öğelerini doğrudan konumlandırma ve boyutlandırma gibi diğer yöntemler kullanılarak oluşturulduysa veya belirli cihaz ekran boyutlarına veya yönlendirmelerine bağlıysa, iOS 9 çoklu görevini doğru şekilde desteklemek için önemli değişikliklere ihtiyaç duyar.

Herhangi bir yeni Xamarin.iOS uygulamasında iOS 9 çoklu görevlerini desteklemek için, uygulamanın tüm Kullanıcı Arabirimi düzenleri için Otomatik Katman ve Boyut Sınıfları içeren görsel taslakları yeniden kullanın ve aşağıdaki bölümlerde yer alan yönergeleri uygulayın.

Ekran Boyutu ve Yönlendirmeyle İlgili Dikkat Edilmesi Gerekenler

iOS 9'da uygulamanızı belirli cihaz ekran boyutlarına ve yönlendirmelerine göre tasarlayabilirsiniz. Bir uygulama artık Slayt Çıkışı panelinde veya Bölünmüş Görünüm modunda çalıştırılabildiği için, cihazın fiziksel yönüne veya ekran boyutuna bakılmaksızın kendisini iPad'de küçük veya normal bir yatay boyut sınıfında çalışır halde bulabilir.

Ekran Boyutu ve Yönlendirmeyle İlgili Dikkat Edilmesi Gerekenler

iPad'de tam ekran bir uygulama Normal yatay ve dikey Boyut Sınıflarına sahiptir. iPhone 6 Plus ve iPhone 6s Plus hariç tüm iPhone'lar, her iki yönde de herhangi bir yönde Kompakt Boyut sınıflarına sahiptir. Yatay modda iPhone 6 Plus ve iPhone 6s Plus, Normal yatay Boyut Sınıfına ve Kompakt dikey Boyut Sınıfına (iPad Mini gibi) sahiptir.

Slide Over ve Split View'ı destekleyen iPad'lerde aşağıdaki bileşimlerle sonuçlanabilir:

Yönelim Birincil Uygulama İkincil Uygulama
Portre Ekranın %75'i
Yatay Sıkıştır
Normal Dikey
Ekranın %25'i
Yatay Sıkıştır
Normal Dikey
Manzara Ekranın %75'i
Normal Yatay
Normal Dikey
Ekranın %25'i
Yatay Sıkıştır
Normal Dikey
Manzara Ekranın %50'sini
Yatay Sıkıştır
Normal Dikey
Ekranın %50'sini
Yatay Sıkıştır
Normal Dikey

Örnek uygulamada, iPad'de yatay modda tam ekran çalıştırılırsa hem listeyi hem de ayrıntı görünümünü aynı anda sunar:

Liste ve aynı anda sunulan ayrıntı görünümü

Aynı uygulama Slayt Üzerinde Slayt panelinde çalıştırılıyorsa, Küçük Yatay Boyut Sınıfı olarak düzenlenir ve yalnızca listeyi görüntüler:

Yalnızca cihaz yatay olduğunda gösterilen liste

Uygulamanızın bu gibi durumlarda doğru şekilde davrandığından emin olmak için Boyut Sınıfları ile birlikte Özellik Koleksiyonları'nı IUIContentContainer benimsemeli ve ve IUITraitEnvironment arabirimlerine uymalısınız. Daha fazla bilgi için Bkz. Apple'ın UITraitCollection Sınıf Başvurusu ve Birleşik Görsel Taslaklarına Giriş kılavuzu.

Buna ek olarak, artık uygulamanın görünür alanını tanımlamak için cihazların ekran sınırlarına güvenemezsiniz, bunun yerine uygulamanızın pencere sınırlarını kullanmanız gerekir. Pencere sınırları tamamen kullanıcının denetimi altında olduğundan, bunları program aracılığıyla ayarlayamaz veya kullanıcının bu sınırları değiştirmesini önleyemezsiniz.

Son olarak, uygulamanızın bir dizi .png görüntü dosyası kullanmak yerine Başlatma Ekranını sunmak için bir görsel taslak dosyası kullanması ve dört arabirim yönünün de (Dikey, Baş Aşağı Dikey, Yatay Sol ve Yatay Sağ) Slayt Üzerinde panelinde veya Bölünmüş Görünüm modunda çalıştırılmasının dikkate alınmasını desteklemesi gerekir.

Özel Donanım Klavye Kısayolları

iPad üzerinde çalışan iOS 9'da Apple, donanım klavyeleri için genişletilmiş desteğe sahiptir. iPad'ler her zaman Bluetooth aracılığıyla temel harici klavye desteğine sahiptir ve bazı klavye üreticileri sabit kablolu iOS'a özgü tuşlar içeren klavyeler oluşturmuştur.

Artık iOS 9 ile uygulamalar kendi özel klavye kısayollarını oluşturabilir. Ayrıca, özel olarak yazılmış bir uygulama olmadan Command-C (kopyalama), Command-X (kesme), Command-V (yapıştırma) ve Command-Shift-H (home) gibi bazı temel klavye kısayolları kullanılabilir.

Command-Tab , kullanıcının Mac OS'a çok benzer şekilde klavyeden uygulamalar arasında hızla geçiş yapmasını sağlayan bir uygulama değiştirici getirir:

Uygulama değiştirici

Bir iOS 9 uygulaması klavye kısayolları içeriyorsa, kullanıcı bunları bir açılır pencerede görüntülemek için Komut, Seçenek veya Denetim tuşlarını basılı tutabilir:

Bir uygulamanın klavye kısayollarını gösteren ekran görüntüsü.

Özel Klavye Kısayollarını Tanımlama

Uygulamamızdaki bir Görünüm veya Görünüm Denetleyicisine aşağıdaki kodu eklersek, bu görünüm veya denetleyici görünür olduğunda, özel bir klavye kısayolu kullanılabilir:

#region Custom Keyboard Shortcut
public override bool CanBecomeFirstResponder {
    get { return true; }
}

public override UIKeyCommand[] KeyCommands {
    get {

        var keyCommand = UIKeyCommand.Create (new NSString("n"), UIKeyModifierFlags.Command, new Selector ("NewEntry"), new NSString("New Entry"));
        return new UIKeyCommand[]{ keyCommand };
    }
}

[Export("NewEntry")]
public void NewEntry() {

    // Add a new entry
    ...

}
#endregion

İlk olarak özelliği geçersiz kılar CanBecomeFirstResponder ve Görünüm veya Görünüm Denetleyicisi'nin klavye girişi alabilmesi için geri döneriz true .

Ardından, özelliğini geçersiz kılar KeyCommands ve Command-N tuş vuruşu için yeni UIKeyCommand bir oluştururuz. Tuş vuruşu etkinleştirildiğinde, istenen eylemi gerçekleştirmek için yöntemini (komutu kullanarak Export iOS 9'da kullanıma sunduğumuz) çağırırızNewEntry.

Bu uygulamayı donanım klavyesi takılı bir iPad'de çalıştırırsak ve kullanıcı Command-N yazıp bu listeye yeni bir giriş eklenir. Kullanıcı Komut tuşunu basılı tutarsa kısayol listesi görüntülenir:

Bir uygulamanın Yeni Giriş kısayolunu gösteren ekran görüntüsü.

Kaynak Yönetimi Ile İlgili Dikkat Edilmesi Gerekenler

iOS 8'in tasarım kılavuzlarını ve en iyi uygulamalarını kullanan uygulamalar için bile verimli kaynak yönetimi sorun olabilir. iOS 9'da uygulamalar artık özel bellek, CPU veya diğer sistem kaynaklarını kullanmaz.

Sonuç olarak, sistem kaynaklarını etkili bir şekilde kullanmak için Xamarin.iOS uygulamanızda ince ayarlamalar yapmalı veya düşük bellek durumlarında sonlandırmayla karşı karşıyadır. İkinci bir uygulama, fazladan kaynak gerektiren bir Slayt Üzerinde panelinde veya Resim penceresinde bir Resim'de çalıştırılmaya devam olabileceğinden veya yenileme hızının saniyede 60 karenin altına düşmesine neden olabileceğinden, birden çok görevi geri çeviren uygulamalar için de aynı şekilde geçerlidir.

Aşağıdaki kullanıcı eylemlerini ve bunların etkilerini göz önünde bulundurun:

  • Slayt Üzerinde Panele Metin Girme - Uygulamanızın metin girişi olmasa bile sistem klavyesi artık kullanıcı arabirimi üzerinden görüntülenebilir. Sonuç olarak, uygulamanın klavye görüntüleme bildirimlerine (klavyeyi gösterme ve gizleme gibi) yanıt vermesi gerekebilir.
  • Slayt Üzerinde Slayt panelinde İkinci Bir Uygulama Çalıştırma - Yeni uygulama artık ön planda çalışıyor ve bellek ve CPU döngüleri gibi sistem kaynakları için mevcut uygulamayla rekabet ediyor.
  • PIP Penceresinde Video Yürütme - Bu pencere yalnızca uygulamanızın arabiriminin bir bölümünü kapsamaz, aynı zamanda videoyu başlatan uygulama arka planda çalışmaya ve CPU ve bellek kaynaklarını kullanmaya devam eder.

Uygulamanızın kaynakları verimli bir şekilde kullandığından emin olmak için aşağıdakileri yapmalısınız:

  • Aletli Uygulamanın Profilini Oluşturma - Bellek sızıntılarını, aşırı CPU kullanımını ve uygulamanın ana iş parçacığını engellediği alanları denetleyin.
  • Durum Geçişleri Yöntemlerine Yanıt Verme - AppDelegate.cs dosya geçersiz kılmanızda ve uygulamanın arka planda girmesi veya geri dönmesi gibi durum değişikliği yöntemlerine yanıt verin. Görüntüler, veriler veya görünümler ve görünüm denetleyicisi gibi sorgulanmamış varlıkları serbest bırakın.
  • Yoğun Bellek Kullanan Uygulamalarla Yan Yana Test Etme - Haritalar gibi yoğun bellek kullanan bir uygulamayla (Uydu görünümü modunda) fiziksel iOS donanımında hem Dışarı Kaydır hem de Bölünmüş Görünüm'ü kullanarak uygulamanızı çalıştırın ve her iki uygulamanın da yanıt vermeye devam edip kilitlenmediğini test edin.

Kaynak yönetimi hakkında daha fazla bilgi için iOS Uygulamaları için Apple'ın Enerji Verimliliği Kılavuzu'na bakın.

Birden Çok Görevi Geri Çevirme

Apple, tüm iOS 9 uygulamalarının birden çok görevi desteklediğini önerse de, tam ekranın düzgün çalışmasını gerektiren oyunlar veya kamera uygulamaları gibi bir uygulamanın çok da özel nedenleri olabilir.

Xamarin.iOS uygulamanızın Bir Slayt Çıkışı panelinde veya Bölünmüş Görünüm modunda çalıştırılmasını geri çevirmesi için projenin Info.plist dosyasını düzenleyin ve Tam Ekran Gerekiyor'u işaretleyin:

Birden Çok Görevi Geri Çevirme

Önemli

Birden çok görevi devre dışı bırakma, uygulamanızın Slayt Dışarı veya Bölünmüş Görünüm'de çalıştırılmasını engellerken, başka bir uygulamanın Slayt Dışında çalıştırılmasını veya Resimdeki Resim videosunu uygulamanızla birlikte görüntülemesini engellemez.

PIP Video Kayıttan Yürütmeyi Devre Dışı Bırakma

Çoğu durumda uygulamanız, kullanıcının Resim içinde Resim kayan penceresinde görüntülediği video içeriğini oynatmasına izin vermelidir. Ancak, oyun kesme sahnesi videoları gibi bunun istenmeyebileceği durumlar olabilir.

PIP video kayıttan yürütmeyi geri çevirmek için uygulamanızda aşağıdakileri yapın:

  • Video görüntülemek için bir AVPlayerViewController kullanıyorsanız özelliğini olarak falseayarlayınAllowsPictureInPicturePlayback.
  • video görüntülemek için öğesini AVPlayerLayer kullanıyorsanız, örneğini AVPictureInPictureControlleroluşturma.
  • Video görüntülemek için bir WKWebView kullanıyorsanız özelliğini olarak falseayarlayınAllowsPictureInPictureMediaPlayback.

Özet

Bu makalede, bir Xamarin.iOS uygulamasının iOS 9'un iPad'ler için yeni çoklu görev oluşturma özelliğinde düzgün şekilde çalıştığından ve davrandığından emin olmak için gereken adımlar ele alınmıştır. Buna ek olarak, uygun olmayan uygulamalar için çoklu görevlerden vazgeçmeyi de kapsıyor.