iOS 11'de WebKit ve Safari değişiklikleri
iOS 11, WebKit ve SafariServices değişikliklerini içeren Safari web tarayıcısının (Safari 11.0) yeni bir sürümünü kullanıma sunar. Bu kılavuzda bu değişiklikler incelanmaktadır.
SFSafariViewController
, web içeriğini görüntüleme veya uygulamanızdaki kullanıcıların kimliğini doğrulama seçeneği olarak iOS 9'da kullanıma sunulmuştur. Özellikleri hakkında daha fazla bilgiyi Web Görünümleri kılavuzunda bulabilirsiniz.
iOS 11, Safari Görünüm Denetleyicisi'ne stil güncelleştirmeleri getirerek kullanıcılarınıza bir uygulama ile web arasında daha sorunsuz bir deneyim sunar. Örneğin, adres çubuğunun kaldırılması artık Safari Görünüm Denetleyicisi'ne mini tarayıcı yerine uygulama içi tarayıcı hissi verir. Ayrıca ve PreferredControlTintColor
özelliklerini ayarlayarak renk düzenini uygulamanızın renk düzenine uyacak şekilde preferredBarTintColor
özelleştirebilirsiniz:
sfViewController.PreferredControlTintColor = UIColor.White;
sfViewController.PreferredBarTintColor = UIColor.Purple;
Aşağıdaki kod parçacığı, aşağıdaki görüntüde gösterildiği gibi çubukları mor ve beyaz olarak işler:
Safari Görünüm Denetleyicisi'nde sunulan Kapat düğmesi, özelliği Done
, Close
veya Cancel
olarak ayarlanarak DismissButtonStyle
da değiştirilebilir:
sfViewController.DismissButtonStyle = SFSafariViewControllerDismissButtonStyle.Close;
Bu değer sunulurken SFSafariViewController
değiştirilebilir.
Safari Görünüm Denetleyicisi'nin içinde görüntülenen içeriğe bağlı olarak, kullanıcı kaydırdıkça menü çubuklarının daraltılmadığından emin olmak gerekebilir. Bu, yeni BarCollapsedEnabled
özelliği false
olarak ayarlanarak etkinleştirilir:
var config = new SFSafariViewControllerConfiguration();
config.BarCollapsingEnabled = false;
var sfViewController = new SFSafariViewController(url, config);
Apple, iOS 11'deki Safari Görünüm Denetleyicisi'nde gizlilikle ilgili güncelleştirmeler de yaptı. Artık tanımlama bilgileri ve yerel depolama gibi gözatma verileri, Safari görünüm denetleyicisinin tüm örnekleri yerine yalnızca uygulama bazında mevcuttur. Bu, kullanıcı gözatma etkinliğini uygulamanızda gizli tutar.
iOS 11'de URL'ler için sürükleyip bırakma desteği ve için window.open()
destek gibi ek özellikler de eklendi SFSafariViewController
. Bu yeni özellikler hakkında daha fazla bilgiyi Apple'ın SFSafariViewController belgelerinde bulabilirsiniz.
WKWebView
, iOS 8'de WebKit'in bir parçası olarak, kullanıcınıza web içeriği görüntülemenin bir aracı olarak tanıtıldı. 'den SFSafariViewController
çok daha özelleştirilebilir olduğundan, kendi gezintinizi ve kullanıcı arabiriminizi oluşturmanıza olanak tanır.
Apple, iOS 11 ile ilgili WKWebView
üç ana geliştirme getirmiştir:
- Tanımlama bilgilerini yönetme olanağı
- İçerik filtrelemesi
- Özel kaynak yükleme
Tanımlama bilgisi yönetimi, tanımlama bilgilerini ekleyip silmenize, bir WKWebView'da depolanan tüm tanımlama bilgilerini almanıza ve tanımlama bilgisi deposunda değişiklikler olup olmadığını gözlemlemenize olanak tanıyan yeni WKHttpCookieStore
sınıf aracılığıyla gerçekleştirilir.
İçerik filtreleme, kullanıcınızın göreceği içerik türünü yönetmenize olanak tanıyarak güvenli, aile dostu ve gerekirse yalnızca belirli bir kullanıcı grubu tarafından kullanılabilir olduğundan emin olmanıza olanak tanır. Bu, JSON'da tetikleyici ve eylem çiftleri sağlayarak yeni WKContentRuleList
sınıf aracılığıyla uygulanır. Bu tetikleyiciler ve eylemler hakkında daha fazla bilgiyi Apple'ın İçerik Engelleme Kuralları kılavuzunda bulabilirsiniz.
iOS 11 artık web içeriğiniz için özel kaynak yükleme özelliğiyle özelleştirmenize WKWebView
olanak tanır. Bu, Web Kit'e IWKUrlSchemeHandler
yerel olmayan URL Düzenlerini işlemenizi sağlayan arabirim aracılığıyla uygulanır. Bu arabirimin uygulanması gereken bir başlatma ve durdurma yöntemi vardır:
public class MyHandler : NSObject, IWKUrlSchemeHandler {
[Export("webView:startURLSchemeTask:")]
public void StartUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask){
// Implement a IWKUrlSchemeTask here
var response = new NSUrlResponse(urlSchemeTask.Request.Url, "text/html", ContentLength, null);
urlSchemeTask.DidReceiveResponse(response);
urlSchemeTask.DidReceiveData(someData);
urlSchemeTask.DidFinish();
}
[Export("webView:stopURLSchemeTask:")]
public void StopUrlSchemeTask(WKWebView webView, IWKUrlSchemeTask urlSchemeTask){
throw new NotImplementedException();
}
}
İşleyici uygulandıktan sonra, özelliğini üzerinde WKWebViewConfiguration
ayarlamak SetUrlSchemeHandler
için bunu kullanın. Ardından, özel düzeni kullanan bir şeyin URL'sini yükleyin:
var config = new WKWebViewConfiguration();
config.SetUrlSchemeHandler(new MyHandler(), "xamarin-asset");
webView = new WKWebView (View.Frame, config);
webView.LoadRequest (new NSUrlRequest("xamarin-asset://xamarin.com"));