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.
iOS Apple'ın ömrü boyunca, uygulama geliştiricilerinin uygulamalarına web görünümü işlevselliği eklemesi için çeşitli yollar yayımladı. Kullanıcıların çoğu iOS cihazında yerleşik Safari web tarayıcısını kullanır ve bu nedenle diğer uygulamalardan web görünümü işlevinin bu deneyimle tutarlı olmasını bekler. Aynı hareketlerin çalışmasını, performansın eşit olmasını ve işlevselliğin aynı olmasını beklerler.
iOS 11 hem hem de WKWebViewSFSafariViewControllerüzerinde yeni değişiklikler yaptı. Bunlar hakkında daha fazla bilgi için iOS 11'de Web değişiklikleri kılavuzuna bakın.
WKWebView
WKWebView iOS 8'de tanıtıldı ve uygulama geliştiricilerinin mobil Safari'dekine benzer bir web tarama arabirimi uygulamasına izin verdi. Bunun nedeni, kısmen mobil Safari tarafından kullanılan aynı motor olan WKWebView Nitro Javascript altyapısının kullanılmasıdır. WKWebView yüksek performans, yerleşik kullanıcı dostu hareketler ve web sayfası ile uygulamanız arasındaki etkileşim kolaylığı nedeniyle mümkün olduğunda her zaman UIWebView üzerinden kullanılmalıdır.
WKWebView uygulamanıza UIWebView'a neredeyse aynı şekilde eklenebilir, ancak geliştirici olarak UI/UX ve işlevsellik üzerinde çok daha fazla denetime sahip olursunuz. Web görünümü nesnesinin oluşturulması ve görüntülenmesi istenen sayfayı görüntüler, ancak görünümün nasıl sunulduğunu, kullanıcının nasıl gezinebileceğini ve kullanıcının görünümden nasıl çıktığını denetleyebilirsiniz.
Aşağıdaki kod, Xamarin.iOS uygulamanızda bir WKWebView başlatmak için kullanılabilir:
WKWebView webView = new WKWebView(View.Frame, new WKWebViewConfiguration());
View.AddSubview(webView);
var url = new NSUrl("https://learn.microsoft.com");
var request = new NSUrlRequest(url);
webView.LoadRequest(request);
Ad alanında WebKit olduğuna WKWebView dikkat etmek önemlidir, bu nedenle bunu kullanarak sınıfınızın en üstüne eklemeniz gerekir.
WKWebView Xamarin.Mac uygulamalarında da kullanılabilir ve platformlar arası bir Mac/iOS uygulaması oluşturuyorsanız bunu kullanmanız gerekir.
JavaScript Uyarılarını İşle tarifi, Javascript ile WKWebView kullanma hakkında da bilgi sağlar.
SFSafariViewController
SFSafariViewController uygulamanızdan web içeriği sağlamanın en son yoludur ve iOS 9 ve sonraki sürümlerde kullanılabilir. veya WKWebView'nin SFSafariViewController aksineUIWebView, bir Görünüm Denetleyicisidir ve bu nedenle diğer görünümlerle kullanılamaz. Herhangi bir Görünüm Denetleyicisini sunacağınız SFSafariViewController şekilde yeni bir Görünüm Denetleyicisi olarak sunmalısınız.
SFSafariViewController temelde uygulamanıza eklenebilen bir 'mini safari'dir. WKWebView gibi aynı Nitro Javascript Altyapısını kullanır, ancak AutoFill, Reader gibi bir dizi ek Safari özelliği ve tanımlama bilgilerini ve verileri mobil Safari ile paylaşma olanağı sağlar. Kullanıcı ile SFSafariViewController arasındaki etkileşim, uygulamanız tarafından erişilemez. Uygulamanız varsayılan Safari özelliklerinin hiçbirine erişemez.
Ayrıca, varsayılan olarak kullanıcının uygulamanıza kolayca geri dönmesine ve ileri ve geri gezinti düğmelerine olanak tanıyarak kullanıcınızın bir web sayfaları yığınında gezinmesini sağlayan bir Bitti düğmesi uygular. Buna ek olarak, kullanıcıya beklenen web sayfasında oldukları için rahat olmalarını sağlayan bir adres çubuğu da sağlar. Adres çubuğu kullanıcının URL'yi değiştirmesine izin vermez.
Bu uygulamalar değiştirilemez, bu nedenle SFSafariViewController uygulamanız herhangi bir özelleştirme olmadan bir web sayfası sunmak istiyorsa varsayılan tarayıcı olarak kullanmak için idealdir.
Aşağıdaki kod, Xamarin.iOS uygulamanızda bir SFSafariViewController başlatmak için kullanılabilir:
var sfViewController = new SFSafariViewController(url);
PresentViewController(sfViewController, true, null);
Bu, aşağıdaki web görünümünü oluşturur:
Safari
Aşağıdaki kodu kullanarak mobil Safari uygulamasını uygulamanızın içinden de açabilirsiniz:
var url = new NSUrl("https://learn.microsoft.com");
UIApplication.SharedApplication.OpenUrl(url);
Bu, aşağıdaki web görünümünü oluşturur:
Kullanıcıları uygulamanızdan Safari'ye uzaklaştırmak genellikle her zaman önlenmelidir. Kullanıcıların çoğu uygulamanızın dışında gezinmeyi beklemez, bu nedenle uygulamanızdan uzaklaşırsanız, kullanıcılar bunu hiçbir zaman döndürmeyebilir ve temelde etkileşimi öldürür.
iOS 9 geliştirmeleri, kullanıcının Safari sayfasının sol üst köşesinde sağlanan bir geri düğmesi aracılığıyla uygulamanıza kolayca geri dönmesini sağlar.
Uygulama Aktarım Güvenliği
App Transport Security veya ATS , tüm internet iletişimlerinin güvenli bağlantı en iyi yöntemlerine uygun olduğundan emin olmak için iOS 9'da Apple tarafından tanıtıldı.
ATS hakkında daha fazla bilgi ve uygulamanızda uygulama hakkında daha fazla bilgi için App Transport Security kılavuzuna bakın.
UIWebView kullanımdan kaldırma
UIWebView , Apple'ın uygulamanızda web içeriği sağlamanın eski yoludur. iOS 2.0'da kullanıma sunuldu ve 8.0 itibarıyla kullanım dışı bırakıldı.
Önemli
UIWebView kullanım dışı bırakıldı. Bu denetimi kullanan yeni uygulamalar Nisan 2020 itibarıyla App Store'a kabul edilmeyecektir ve bu denetimi kullanan uygulama güncelleştirmeleri Aralık 2020'ye kadar kabul edilmeyecektir.
Apple'ın UIWebView belgelerinde bunun yerine uygulamaların kullanılması WKWebView gerekir.
Xamarin.Forms kullanırken kullanımdan kaldırma uyarısı (ITMS-90809) ile ilgili UIWebView kaynaklar arıyorsanız lütfen Xamarin.Forms WebView belgelerine bakın.
Son altı ay içinde (veya bu şekilde) iOS uygulamaları gönderen geliştiriciler App Store'dan kullanım dışı bırakıldıklarıyla ilgili UIWebView bir uyarı almış olabilir.
API'lerin kullanımdan kaldırılması yaygın bir durumdur. Xamarin.iOS, geliştiricilere bu API'lere sinyal vermek (ve kullanılabilir olduğunda değiştirme önermek) için özel öznitelikler kullanır. Bu sefer farklı olan ve çok daha az yaygın olan şey, kullanımdan kaldırma işleminin Apple'ın App Store tarafından gönderim zamanında zorunlu kılınmasıdır.
Ne yazık ki türün kaldırılması UIWebViewXamarin.iOS.dll ikili hataya neden olan bir değişikliktir. Bu değişiklik, desteklenmeyen ve hatta artık yeniden derlenebilen (örneğin, kapalı kaynak) dahil olmak üzere mevcut 3. taraf kitaplıklarını bozar. Bu yalnızca geliştiriciler için ek sorunlar oluşturur. Bu nedenle, türü henüz kaldırmıyor.
Xamarin.iOS 13.16'dan başlayarak'dan UIWebViewgeçiş yapmaya yardımcı olacak yeni algılama ve araçlar kullanılabilir.
Detection
Yakın zamanda Apple App Store'a bir iOS uygulaması göndermediyseniz, bu durumun uygulamalarınız için geçerli olup olmadığını merak ediyor olabilirsiniz.
Bunu öğrenmek için projenizin Ek mtouch bağımsız değişkenlerine ekleyebilirsiniz--warn-on-type-ref=UIKit.UIWebView. Bu, uygulamanızın içinde (ve tüm bağımlılıkları) kullanım dışı bırakılan UIWebView başvurular konusunda uyarır. Yönetilen bağlayıcı yürütülmeden önce ve sonra türleri bildirmek için farklı uyarılar kullanılır.
Diğerleri gibi uyarılar kullanılarak -warnaserror:hataya dönüştürülebilir. Doğrulamalarınızdan sonra yeni bir bağımlılığın UIWebView eklenmediğinden emin olmak istiyorsanız bu yararlı olabilir. Örneğin:
-warnaserror:1502, önceden bağlantılı derlemelerde herhangi bir başvuru bulunursa hataları bildirir.-warnaserror:1503, bağlantılı derlemelerin sonlarında herhangi bir başvuru bulunursa hataları bildirir.
Ayrıca, bağlantı öncesi/sonrası sonuçları yararlı değilse uyarıları da susturabilirsiniz. Örneğin:
-nowarn:1502, önceden bağlı derlemelerde herhangi bir başvuru bulunursa uyarı bildirmez.-nowarn:1503, bağlantılı derlemeler sonrasında herhangi bir başvuru bulunursa uyarı bildirmez.
Kaldırma
Her uygulama benzersizdir. Uygulamanızdan kaldırma UIWebView işlemi, nasıl ve nerede kullanıldığına bağlı olarak farklı adımlar gerektirebilir. En yaygın senaryolar şunlardır:
- Uygulamanızın
UIWebViewiçinde kullanımı yoktur. Her şey yolunda. AppStore'a gönderirken uyarı almamalısınız. Sizden başka hiçbir şey gerekmez. - Uygulamasının
UIWebViewdoğrudan kullanımı. örneğin, kullanımınızıUIWebViewkaldırarak başlayın, daha yeniWKWebView(iOS 8) veyaSFSafariViewController(iOS 9) türleriyle değiştirin. Bu işlem tamamlandıktan sonra yönetilen bağlayıcı için herhangi bir başvuruUIWebViewgörmemeli ve son uygulama ikili dosyasının hiçbir izlemesi olmayacaktır. - Dolaylı kullanım.
UIWebView, uygulamanız tarafından kullanılan yönetilen veya yerel bazı üçüncü taraf kitaplıklarında bulunabilir. Bu durum daha yeni bir sürümde çözülmüş olabileceğinden, dış bağımlılıklarınızı en son sürümlerine güncelleştirerek başlayın. Aksi takdirde kitaplıkların bakımcılarına başvurun ve güncelleştirme planlarını sorun.
Alternatif olarak, aşağıdaki yaklaşımları deneyebilirsiniz:
- Xamarin.Forms kullanıyorsanız bu blog gönderisini okuyun.
- Başvurulmazsa kaldırılabilmesi için yönetilen bağlayıcıyı (projenin tamamında veya en azından kullanarak
UIWebViewbağımlılıkta) etkinleştirin. Bu, sorunu çözer ancak kod bağlayıcınızı güvenli hale getirmek için ek çalışma gerektirebilir. - Yönetilen bağlayıcı ayarlarını değiştiremiyorsanız aşağıdaki özel durumlara bakın.
Uygulamalar bağlayıcıyı kullanamaz (veya ayarlarını değiştiremez)
Bazı nedenlerden dolayı yönetilen bağlayıcıyı kullanmıyorsanız (örneğin, Bağlama) UIWebView simge Apple'a gönderdiğiniz ikili uygulamada kalır ve reddedilebilir.
Projenizin Ek mtouch bağımsız değişkenlerine ekleme --optimize=force-rejected-types-removal yapmak zor bir çözümdür. Bu, uygulamadan izlemelerini UIWebView kaldırır. Ancak, türüne başvuran herhangi bir kod düzgün çalışmaz (özel durumlar veya kilitlenmeler bekler). Bu yaklaşım yalnızca kodun çalışma zamanında ulaşılabilir olmadığından eminseniz (statik analiz aracılığıyla ulaşılsa bile) kullanılmalıdır.
iOS 7.x (veya öncesi) desteği
UIWebView v2.0'dan beri iOS'un bir parçasıdır. En yaygın değiştirmeler (iOS 8) ve SFSafariViewController (iOS 9) 'dır WKWebView . Uygulamanız hala eski iOS sürümlerini destekliyorsa aşağıdaki seçenekleri göz önünde bulundurmanız gerekir:
- iOS 8'i en düşük hedef sürümünüz (derleme zamanı kararı) yapın.
- Yalnızca uygulama iOS 8+ üzerinde çalışıyorsa kullanın
WKWebView(çalışma zamanı kararı).
Apple'a gönderilmeyen uygulamalar
Uygulamanız Apple'a gönderilmediyse, gelecekteki iOS sürümlerinde kaldırılabildiği için kullanım dışı API'den uzaklaşmayı planlamanız gerekir. Ancak, bu geçişi kendi zaman çizelgenizi kullanarak yapabilirsiniz.

