İngilizce dilinde oku

Aracılığıyla paylaş


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.

SafariServices

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:

SFSafariViewController bars rendered in purple and white

Safari Görünüm Denetleyicisi'nde sunulan Kapat düğmesi, özelliği Done, Closeveya Cancelolarak ayarlanarak DismissButtonStyle da değiştirilebilir:

sfViewController.DismissButtonStyle = SFSafariViewControllerDismissButtonStyle.Close;

Dismiss button text changed

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 falseolarak ayarlanarak etkinleştirilir:

var config = new SFSafariViewControllerConfiguration();
config.BarCollapsingEnabled = false;

var sfViewController = new SFSafariViewController(url, config);

Bar collapsing disabled

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.

Webkit

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 WKWebViewConfigurationayarlamak 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"));