Aracılığıyla paylaş


iOS 9 Uyumluluğu

IOS 9 özelliklerini uygulamanıza hemen eklemeyi planlamıyor olsanız bile, uygulamalarınızı Xamarin'in en son sürümüyle yeniden oluşturmanız gerekir.

Önemli

Bu sayfadaki bilgiler, App Store'da iOS 8 veya önceki sürümleri hedefleyen uygulamaları olan ve iOS 9 uyumluluğu için güncelleştirme göndermemiş olan müşterilere yöneliktir. Uygulama geliştirmeniz için en son sürümleri (Xcode 7 ve Xamarin.iOS 9) kullanıyorsanız lütfen iOS 9'a giriş adresini ziyaret edin.

İlk iOS 9 beta'ları görüntülendiğinde, eski uygulamaların iOS 9'da başlatılamadığını gösteren Xamarin'in eski sürümlerinde iki sorun olduğunu belirledik:

  • iOS 8 veya daha önceki sürümler için oluşturulan uygulamalar 32 bit cihazlarda başlatılamıyor (Birleşik API ile oluşturulan uygulamalar dahil).
  • P/Invoke tam yol ile başarısız oluyor belirtilmemiş.

Xamarin yüklemenizi en son Kararlı Kanal sürümüne güncelleştirin ve ardından uygulamalarınızı yeniden oluşturup yeniden dağıtarak bu iki sorunu düzeltin.

Uygulamanızı hemen iOS 9 özellikleriyle güncelleştirmeyi planlamasanız bile, Xamarin'in en son sürümüyle yeniden derlemenizi ve App Store'a yeniden göndermenizi öneririz.

Bu, müşterilerinizin yükseltmesi sonrasında uygulamanızın iOS 9'da çalışmasını sağlar. iOS 8'i desteklemeye devam edebilirsiniz. En son sürümle yeniden derlemek uygulama hedef sürümünü etkilemez.

iOS 9'da mevcut uygulamalarınızı test ederken daha fazla sorun yaşıyorsanız aşağıdaki Uyumluluğu Geliştirme bölümünü okuyun.

Visual Studio ile güncelleştirme

Visual Studio'nın en son Kararlı sürüme güncelleştirilmiş olup olmadığını açıkça denetlemeniz önerilir.

Bileşenler, Nuget'ler ve diğer kitaplıklar ne olacak?

Yukarıda belirtilen iki sorunu çözmek için kullandığınız bileşenlerin veya Nuget'lerin yeni sürümlerini beklemeniz gerekmez. Bu sorunlar, uygulamanızı Xamarin.iOS'un en son Kararlı sürümüyle yeniden oluşturarak düzeltilir.

Benzer şekilde, Bileşen satıcılarının ve NuGet yazarlarının yalnızca yukarıda belirtilen iki sorunu düzeltmek için yeni derlemeler göndermeleri gerekmez. Ancak, herhangi bir Bileşen veya NuGet Xib dosyalarını kullanıyorsa UICollectionView veya bu dosyalardan görünüm yüklerse, aşağıda belirtilen iOS 9 uyumluluk sorunlarını gidermek için bir güncelleştirme gerekebilir.

Kodunuzda Uyumluluğu Geliştirme

iOS 9'da hataya neden olan iOS'un eski sürümlerinde çalışan birkaç kod deseni örneği vardır. iOS 9'da test ederken ortaya çıkabilecek bazı olası sorunlar (ve çözümleri):

OLUŞTURUCUlarda UICollectionViewCell.ContentView null

Neden: iOS 9'dainitWithFrame:, UICollectionView belgelerinde belirtildiği gibi iOS 9'daki davranış değişiklikleri nedeniyle oluşturucu artık gereklidir. Belirtilen tanımlayıcı için bir sınıf kaydettiyseniz ve yeni bir hücre oluşturulması gerekiyorsa, hücre artık yöntemini çağırarak initWithFrame: başlatılır.

Düzeltme: Oluşturucuyu initWithFrame: şöyle ekleyin:

[Export ("initWithFrame:")]
public YourCellClassName (CGRect frame) : base (frame)
{
    Initialize (); // refactor initialize code into a method
}

İlgili örnekler: MotionGraph, TextKitDemo

Xib/Nib görünümünden görünüm yüklenirken UIView kodlayıcıyla başlatılamıyor

Neden:initWithCoder: Oluşturucu, Interface Builder Xib dosyasından bir görünüm yüklerken çağrılan öğedir. Bu oluşturucu dışarı aktarılmamışsa yönetilmeyen kod yönetilen sürümümüzü çağıramaz. Daha önce (örneğin, iOS 8'de) IntPtr oluşturucu görünümü başlatmak için çağrıldı.

Düzeltme: Oluşturucuyu initWithCoder: şu şekilde oluşturun ve dışarı aktarın:

[Export ("initWithCoder:")]
public YourClassName (NSCoder coder) : base (coder)
{
    Initialize (); // refactor initialize code into a method
}

İlgili örnek: Sohbet

Dyld İletisi: adı olan önbellek görüntüsü yok...

Günlükte aşağıdaki bilgilerle bir kilitlenmeyle karşılaşabilirsiniz:

Dyld Error Message:
Dyld Message: no cache image with name (/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore)

Neden: Bu, Apple'ın yerel bağlayıcısında özel bir çerçeveyi genel yaptıklarında (JavaScriptCore özel bir çerçeve olmadan önce iOS 7'de genel kullanıma açık hale getirildiğinde) ve uygulamanın dağıtım hedefi, çerçeve özel olduğunda bir iOS sürümüne yönelik olan bir hatadır. Bu durumda Apple'ın bağlayıcısı, genel sürüm yerine çerçevenin özel sürümüyle bağlantı oluşturur.

Düzeltme: Bu, iOS 9 için ele alınacaktır, ancak bu arada kendiniz uygulayabileceğiniz kolay bir geçici çözüm vardır: projenizde daha sonraki bir iOS sürümünü hedeflemeniz gerekir (bu durumda iOS 7'yi deneyebilirsiniz). Diğer çerçeveler de benzer sorunlar ortaya çıkabilir, örneğin WebKit çerçevesi iOS 8'de genel kullanıma açık hale getirildi (ve bu nedenle iOS 7'yi hedeflemek bu hataya neden olur; iOS 8'i uygulamanızda WebKit kullanmak için hedeflemeniz gerekir).