Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Xamarin.iOS uygulamalarında iOS 9 ile çalışmaya yönelik çeşitli sorun giderme ipuçları sağlanır.
iOS 8 Simülatörleri nerede?
Xcode 7 (veya üzeri) yüklediyseniz, tüm iOS 8 simülatörlerini varsayılan olarak iOS 9 simülatörleriyle otomatik olarak değiştirir. Yine de iOS 8'de test etmeniz gerekiyorsa Xcode'u başlatabilir, ardından iOS 8 simülatörlerini indirip yükleyebilirsiniz.
Xcode'da Xcode menüsünü ve ardından Tercihler... öğesini seçin.>İndirmeler:
iOS 8 simülatörlerini yeniden yüklemek için Şimdi Denetle ve Yükle düğmesini seçin.
Sol/Sağ Öznitelik Hatalarıyla Düzen Kısıtlaması
iOS 8'de (ve önceki) görsel taslaklardaki kullanıcı arabirimi öğeleri, aynı düzende hem Sağ hem De Sol Özniteliklerin (NSLayoutAttributeRight & NSLayoutAttributeLeft) ve Baştaki ve Sondaki Özniteliklerin (NSLayoutAttributeLeading & NSLayoutAttributeTrailing) bir karışımını kullanabilir.
Aynı Görsel Taslak iOS 9'da çalıştırılırsa aşağıdaki formda bir özel durumla sonuçlanır:
Yakalanmayan 'NSInvalidArgumentException' özel durumu nedeniyle uygulama sonlandırılıyor, neden: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Baştaki/sondaki öznitelik ile sağ/sol öznitelik arasında kısıtlama yapılamaz. Hem hem de hiçbiri için baştaki/sondakini kullanın.'
iOS 9, düzenleri Sağ & Sol veya Baştaki ve Sondaki öznitelikleri kullanacak şekilde zorlar, ancak ikisini birden kullanmaz. Bu sorunu düzeltmek için tüm düzen kısıtlamalarını Görsel Taslak dosyanızda ayarlanan öznitelik kümesini kullanacak şekilde değiştirin.
Daha fazla bilgi için bkz . iOS 9 kısıtlama hatası Stack Overflow tartışması.
HATA ITMS-90535: Beklenmeyen CFBundleExecutable Anahtarı
iOS 9'a geçtikten sonra, bir uygulamadan iOS 8 (veya daha önceki) sürümlerinde derlenen ve çalıştırılan üçüncü taraf bileşenleri (özellikle mevcut Google Haritalar bileşenimiz) kullanır. Yeni derlemeyi iTunes Connect'e göndermeye çalışırken şu biçimde bir hata alabilirsiniz:
HATA ITMS-90535: Beklenmeyen CFBundleExecutable Anahtarı. 'Payload/app-name.app/component.bundle' içindeki paket bir paket yürütülebilir dosyası içermiyor...
Bu sorun genellikle projede adlandırılmış paketin bulunmasıyla (hata iletisinin önerdiği gibi) anahtarı kaldırarak paketteki paketi düzenleyerek Info.plist CFBundleExecutable çözülebilir. Anahtar CFBundlePackageType da olarak ayarlanmalıdır BNDL .
Bu değişiklikleri yaptıktan sonra temiz bir işlem yapın ve projenin tamamını yeniden oluşturun. Bu değişiklikleri yaptıktan sonra sorunsuz bir şekilde iTunes Connect'e gönderebilirsiniz.
Daha fazla bilgi için lütfen bu Stack Overflow tartışmasını inceleyin.
CFNetwork SSLHandshake başarısız oldu (-9824) Hatası
Doğrudan veya iOS 9'daki bir web görünümünden İnternet'e bağlanmaya çalışırken şu biçimde bir hata alabilirsiniz:
2015-09-04 14:38:05.757 FormsWebViewiOS[2553:30362] CFNetwork SSLHandshake failed (-9824)
2015-09-04 14:38:05.758 FormsWebViewiOS[2553:30363] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
Veya formda:
2015-09-04 14:39:17.881 FormsWebViewiOS[2568:30974] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
Temporary exceptions can be configured via your app's Info.plist file.
iOS9'da, Uygulama Aktarım Güvenliği (ATS) İnternet kaynakları (uygulamanın arka uç sunucusu gibi) ile uygulamanız arasında güvenli bağlantıları zorlar. Buna ek olarak, ATS protokol kullanılarak iletişimin ve üst düzey API iletişiminin HTTPS tls sürüm 1.2 kullanılarak iletme gizliliği ile şifrelenmesini gerektirir.
ATS, iOS 9 ve OS X 10.11 (El Capitan) için oluşturulan uygulamalarda varsayılan olarak etkinleştirildiğinden , CFURLNSURLSession veya kullanan NSURLConnectiontüm bağlantılar ATS güvenlik gereksinimlerine tabi olacaktır. Bağlantılarınız bu gereksinimleri karşılamıyorsa bir özel durumla başarısız olur.
Bu sorunun nasıl çözüldüğü hakkında bilgi için App Transport Security kılavuzumuzun ATS'yi Geri Çevirme bölümüne bakın.
Mevcut uygulamalarım iOS 9'da çalışmıyor
Mevcut uygulamalarınızı iOS 9'da çalışacak şekilde yeniden oluşturma ve yeniden dağıtma yönergeleri için iOS 9 uyumluluk bilgilerimize bakın.
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'den Görünüm Yüklenirken UIView Coder ile Başlatılamıyor
Neden: initWithCoder: Bir Interface Builder Xib dosyasından görünüm yüklenirken oluşturucu çağrılır. Bu oluşturucu dışarı aktarılmazsa yönetilmeyen kod yönetilen sürümünü çağıramaz. Daha önce (örneğin, iOS 8'de) IntPtr oluşturucu görünümleri 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 cach 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).
Güvenilmeyen Kurumsal Geliştirici
Xamarin.iOS uygulamanızın iOS 9 sürümünü gerçek iOS donanımında çalıştırmaya çalışırken, geliştirici hesabınıza cihazda güvenilmediğini belirten bir ileti alabilirsiniz. Örneğin:
Bu sorunu çözmek için aşağıdakileri yapın:
Geliştirme Mac'inde Xcode'ı (en son beta sürümü) başlatın.
Cihazlar Penceresini açmak için Pencere menüsünden Cihazlar'ı seçin:
CİhAZLAR yan panelinin altında cihazınızı seçin, sağ tıklayın ve Sağlama Profillerini Göster...:
Şu anda cihazda bulunan her sağlama profilini seçin ve silmek için düğmeyi - seçin:
Xcode menüsünde Tercihler... ve Hesaplar'ı seçin:
Ayrıntıları Görüntüle... düğmesine tıklayın ve ardından Tümünü indir düğmesini seçin:
Listenin güncelleştirilmesi tamamlandığında Bitti düğmesini seçin ve Tercihler penceresini kapatın.
iOS cihazından test etmeye çalıştığınız Xamarin.iOS uygulamasının mevcut sürümünü kaldırın.
Mac için Visual Studio dönün, temiz bir derleme yapın ve uygulamayı cihazda yeniden çalıştırmayı deneyin.
Xcode tarafından yüklenen yeni sağlama profilleri görülmeden önce Mac için Visual Studio durdurmanız ve yeniden başlatmanız gerekebilir. Yeni sağlama profillerini seçmek için Xamarin.iOS uygulamanızın iOS Paket İmzalama seçeneklerini de ayarlamanız gerekebilir.
Başlatma Ekranı Sorunları
iOS 9 artık Başlatma Ekranı gereksinimlerini zorunlu kıldı, böylece aynı başlatma görüntüsü artık farklı arabirim yönlendirmelerini destekleyecek şekilde yeniden kullanılamaz. Daha fazla bilgi için bkz. Apple'ın UILanchImage Başvurusu .
İsteğe bağlı olarak, bir dizi .png görüntü dosyası kullanmak yerine uygulamanızın Başlatma Ekranını sunmak için görsel taslak dosyası kullanabilirsiniz. Bu artık Apple'ın Başlatma Ekranlarını sunmanın tercih edilen yoludur. Daha fazla bilgi için Birleşik Görsel Taslaklara Giriş kılavuzumuza bakın.
Son olarak, uygulamanızın Başlatma Ekranı için bir görsel taslak dosyası kullanması ve slayt üzerinde panelde veya Bölünmüş Görünüm modunda çalıştırılması için dört arabirim yönlendirmesini (Dikey, Baş Aşağı Dikey, Yatay Sol ve Yatay Sağ) desteklemesi gerekir. iOS 9'un yeni çoklu görev özellikleri hakkında daha fazla bilgi edinmek için lütfen iPad için çoklu görev yapma kılavuzumuza bakın.
NSInternalInconsistencyException Özel Durumu
iOS 9 için mevcut bir Xamarin.iOS uygulamasını derleyip çalıştırırken şu biçimde bir hata alabilirsiniz:
Objective-C özel durum oluştu. Ad: NSInternalInconsistencyException Nedeni: Uygulama pencerelerinin, uygulama başlatmanın sonunda bir kök görünüm denetleyicisi olması beklenir
Uygulama Windows'un uygulama başlatma işleminin sonunda kök görünüm denetleyicisine sahip olması beklendiğinden ve mevcut uygulamanız olmadığından bu hata oluşuyor.
Bu sorun için en az iki olası geçici çözüm vardır:
- Uygulamayı, Kullanıcı Arabirimini tanımlamak için dosyalar yerine
xibgörsel taslak dosyasını kullanacak şekilde güncelleştirin. Bu, uygulamanızın boyutuna ve görsel taslakları düzenlerken Xcode'un Arabirim Oluşturucusu'nu kullanma bilgilerine bağlı olarak düzeltmek için çok zaman gerektirir. Daha fazla bilgi için Birleşik Görsel Taslaklara Giriş belgelerimize bakın. RootViewControllerUygulamanızın kullanıcı arabirimindekiFinishedLaunchingBir Görünüm Denetleyicisi'ni işaret etmek için sınıftaki yöntemindeAppDelegateapp Window özelliğini ayarlayın.
Görünümleri Başlatma ve Denetleyicileri Görüntüleme Zamanları
Xamarin.iOS ile, yönetilen kodda bir şey kullanıma sunulduğunda çağrılan ancak iOS tasarımını bozan oluşturucuların içinde Görünümler veya Görünüm Denetleyicilerinin başlatılması mümkündür.
Genel olarak, ne zaman çağrılacağı konusunda emin olmadığınız için oluşturucudan kodu geri Objective-C çağırabilecek hiçbir şey başlatmamalısınız. Bu, bu başlatmanın yapılması gereken daha iyi bir yer (diğer .ctor) veya geçersiz kılma çağrısı (hiçbir olay olmadığı gibi Objective-C ) olduğu anlamına da gelir.






