iOS 11의 웹 변경 내용Web Changes in iOS 11

iOS 11 WebKit 및 SafariServices 변경 내용을 포함 하는 Safari 웹 브라우저-Safari 11.0 –의 새 버전을 소개 합니다.iOS 11 introduces a new version of the Safari web browser – Safari 11.0 – which includes changes to WebKit and SafariServices. 이 가이드에서는 이러한 변경 내용을 살펴봅니다.This guide explores these changes.

SafariServicesSafariServices

SFSafariViewController 웹 콘텐츠를 표시 하거나 앱에서 사용자 인증 옵션으로 iOS 9에서에서 도입 되었습니다.SFSafariViewController was introduced in iOS 9 as an option for displaying web content or authenticating users from your app. 해당 기능에 대 한 자세한 정보를 찾을 수 있습니다 합니다 웹 보기 가이드입니다.More information on its features can be found in the Web Views guide.

iOS 11을 사용자가 앱 및 웹 간에 더 원활한 환경을 제공 Safari 보기 컨트롤러에 스타일 업데이트 도입 되었습니다.iOS 11 has introduced style updates to the Safari View Controller, giving your users a more seamless experience between an app and the web. 예를 들어 주소 표시줄 지금 제공 Safari 뷰 컨트롤러의 최소 브라우저가 아닌 앱에서 브라우저를 사용 한다는 느낌의 제거 합니다.For example, the removal of the address bar now gives the Safari View Controller the feel of an in-app browser, rather than a mini-browser. 설정 하 여 앱의 색 구성표를 사용 하 여 맞게 색 구성표를 사용자 지정할 수도 있습니다는 preferredBarTintColorPreferredControlTintColor 속성:You can also customize the color scheme to fit in with the color scheme of your app by setting the preferredBarTintColor and PreferredControlTintColor properties:

sfViewController.PreferredControlTintColor = UIColor.White;
sfViewController.PreferredBarTintColor = UIColor.Purple;

다음 코드 조각은 다음 이미지에 표시 된 대로 자주색 및 흰색에서 해당 막대를 렌더링 합니다.The following code snippet renders the bars in purple and white, as displayed in the following image:

자주색 녹색과 흰색으로 렌더링 하는 필요한 SFSafariViewController 막대

Safari 뷰 컨트롤러 나오는 해제 단추를 설정 하 여 변경할 수도 있습니다는 DismissButtonStyle 속성을 Done하십시오 Close, 또는 Cancel:The Dismiss button presented in the Safari View Controller can also be changed by setting the DismissButtonStyle property to either Done, Close, or Cancel:

sfViewController.DismissButtonStyle = SFSafariViewControllerDismissButtonStyle.Close;

변경 단추 텍스트를 해제 합니다.

이 값을 변경할 수 있지만 SFSafariViewController 표시 됩니다.This value can be changed while SFSafariViewController is presented.

Safari 뷰 컨트롤러 내에서 표시 되는 내용에 따라 메뉴 모음까지 스크롤하면으로 축소 하지는 확인 해야 할 수도 있습니다.Depending on the content that is displayed inside a Safari View Controller, it might be necessary to ensure that the menu bars don't collapse as the user scrolls. 새 설정 하 여 활성화 됩니다 BarCollapsedEnabled 속성을 false:This is enabled by setting the new BarCollapsedEnabled property to false:

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

var sfViewController = new SFSafariViewController(url, config);

사용 하지 않도록 설정 축소 막대

Apple는 iOS 11에서에서 Safari 뷰 컨트롤러의 개인 정보를 업데이트도 했습니다.Apple has also made updates to privacy in the Safari View Controller in iOS 11. 이제 앱 별 기준으로 아닌 Safari 뷰 컨트롤러의 모든 인스턴스 간에 존재 쿠키 및 로컬 저장소와 같은 데이터를 검색 합니다.Now, browsing data such as cookies and local storage only exist on a per-app basis, rather than across all instances of Safari view controller. 이렇게 하면 사용자 검색 작업 앱 내의 개인 있습니다.This keeps user browsing activity private within your app.

추가 기능 등 Url에 대 한 지원을 끌어서에 대 한 지원 window.open() 에 추가 되었습니다 SFSafariViewController iOS 11의에서 합니다.Additional features such as drag and drop support for URLs and support for window.open() have also been added to SFSafariViewController in iOS 11. 이러한 새 기능에 대 한 자세한 정보를 찾을 수 있습니다 Apple 필요한 SFSafariViewController 설명서합니다.You can find more information about these new features in Apple's SFSafariViewController documentation.

WebKitWebKit

WKWebView 사용자에 게 웹 콘텐츠를 표시 하는 수단으로 ios 8 WebKit의 일부로 도입 되었습니다.WKWebView was introduced as part of WebKit in iOS 8 as a means of displaying web content to your user. 것 보다 훨씬 더 사용자 지정 가능한 SFSafariViewController, 탐색 및 사용자 인터페이스를 직접 만들 수 있습니다.It's much more customizable than SFSafariViewController, allowing you to create your own navigation and user interface.

Apple의 세 가지 주요 향상 했습니다 WKWebView iOS 11 사용 하 여:Apple has introduced three main improvements for WKWebView with iOS 11:

  • 쿠키를 관리 하는 기능The ability to manage cookies
  • 콘텐츠 필터링Content filtering
  • 사용자 지정 리소스를 로드 합니다.Custom resource loading.

쿠키 관리 새로운 이루어집니다 WKHttpCookieStore 클래스를 추가 및 삭제할 쿠키를 WKWebView에 저장 된 모든 쿠키를 얻으려면 하 고 변경 내용을 저장 하는 쿠키를 확인할 수 있습니다.Cookie management is done through the new WKHttpCookieStore class, which allows you to add and delete cookies, to get all the cookies stored in a WKWebView, and to observe the cookie store for changes.

콘텐츠 필터링을 사용 하면 사용자에 게 표시 되는 콘텐츠의 형식을 관리할 수 있습니다 것이 안전 하 고 제품군 잘 작동 되도록 할 수 있도록 하 고, 필요한 경우 사용자의 선택 그룹에만 사용할 수 있습니다.Content filtering allows you to manage the type of content that your user will see, allowing you to make sure it's secure, family friendly, and, if necessary, only available to a select group of users. 이 새로운 구현 WKContentRuleList 클래스, 트리거 및 작업 json에서의 쌍을 제공 합니다.This is implemented through the new WKContentRuleList class, by providing pairs of triggers and actions in JSON. 이러한 트리거 및 작업에 대 한 자세한 내용은 Apple에서 찾을 수 있습니다 콘텐츠 차단 규칙 가이드입니다.More information on these triggers and actions can be found in Apple's Content Blocking Rules guide.

이제 iOS 11은 사용자 지정할 수 있습니다 WKWebView 웹 콘텐츠에 대 한 로드 사용자 지정 리소스를 사용 하 여 합니다.iOS 11 now allows you to customize WKWebView with custom resource loading for your web content. 이 통해 구현 되는 IWKUrlSchemeHandler 인터페이스를 웹 키트 네이티브 되지 않는 URL 체계를 처리할 수 있습니다.This is implemented through the IWKUrlSchemeHandler interface, which lets you handle URL Schemes that are not native to Web Kit. 이 인터페이스에 start 및 stop 메서드를 구현 해야 합니다.This interface has a start and stop method that must be implemented:

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();
    }

}

처리기를 구현한 설정 하려면 사용 합니다 SetUrlSchemeHandler 속성에는 WKWebViewConfiguration합니다.Once the handler has been implemented, use it to set the SetUrlSchemeHandler property on the WKWebViewConfiguration. 그런 다음 사용자 지정 체계를 사용 하는 항목의 URL을 로드:Then, load the URL of something that uses the custom scheme:

var config = new WKWebViewConfiguration();
config.SetUrlSchemeHandler(new MyHandler(), "xamarin-asset");

webView = new WKWebView (View.Frame, config);
webView.LoadRequest (new NSUrlRequest("xamarin-asset://xamarin.com"));