Xamarin.ios의 웹 보기Web Views in Xamarin.iOS

IOS Apple의 수명 동안 앱 개발자가 앱에서 웹 보기 기능을 통합 하는 다양 한 방법을 출시 했습니다.Over the lifetime of iOS Apple has released a number of ways for app developers to incorporate web view functionality in their apps. 대부분의 사용자는 iOS 장치에서 기본 제공 Safari 웹 브라우저를 활용 하므로 다른 앱의 웹 보기 기능이이 환경과 일치 하는 것으로 간주 됩니다.Most users utilize the built-in Safari web browser on their iOS device, and therefore expect that web-view functionality from other apps is consistent with this experience. 동일 하 게 작동 하는 것으로 간주 되 고 성능이 동일 하 고 기능이 동일 하 게 됩니다.They expect the same gestures to work, the performance to be on par, and the functionality the same.

이 문서에서는 Apple에서 제공 하는 세 가지 웹 보기, UIWebView, WKWebview, SFSafariViewController, 유사성 및 차이점, 사용 방법 등을 살펴봅니다.In this article, we will explore each of the three Web Views provided by Apple: UIWebView, WKWebview, and SFSafariViewController, their similarities and differences, and how they can be used.

iOS 11에는 WKWebViewSFSafariViewController에 대 한 새로운 변경 사항이 도입 되었습니다.iOS 11 introduced new changes to both WKWebView and SFSafariViewController. 이러한 항목에 대 한 자세한 내용은 iOS 11의 웹 변경 가이드 가이드를 참조 하세요.For more information on these, see the Web changes in iOS 11 guide guide.

UIWebViewUIWebView

UIWebView 앱에서 웹 콘텐츠를 제공 하는 Apple의 레거시 방법입니다.UIWebView is Apple's legacy way of providing web content in your app. IOS 2.0에 출시 되었으며 8.0부터 사용 되지 않습니다.It was released in iOS 2.0, and has been deprecated as of 8.0.

8.0 이전의 iOS 버전을 지원 하려는 경우 UIWebView를 사용 해야 합니다.If you plan to support iOS versions earlier than 8.0, you will have to use UIWebView. UIWebView는 다른 방법 보다 성능에 최적화 되지 않으므로 사용자의 iOS 버전을 확인 하는 것이 좋습니다.Due to the fact that UIWebView is less optimized for performance than the alternatives, it is recommended that you should check the user's iOS version. 8.0 이상이 면 아래 설명 된 옵션 중 하나를 사용 하 여 더 나은 사용자 환경을 만들 수 있습니다.If it 8.0 or above, using either of the options explain below will create a better user experience.

Xamarin.ios 앱에 UIWebView 보기를 추가 하려면 다음 코드를 사용 합니다.To add a UIWebView to your Xamarin.iOS app, use the following code:

webView = new UIWebView (View.Bounds);
View.AddSubview(webView);

var url = "https://xamarin.com"; // NOTE: https secure request
webView.LoadRequest(new NSUrlRequest(new NSUrl(url)));

그러면 다음과 같은 웹 보기가 생성 됩니다.This produces the following web view:

UIWebView사용에 대 한 자세한 내용은 다음 조리법을 참조 하세요.For more information on using UIWebView, refer to the following recipes:

WKWebViewWKWebView

앱 개발자가 모바일 Safari와 유사한 웹 검색 인터페이스를 구현할 수 있도록 iOS 8에서 도입 된 WKWebView.WKWebView was introduced in iOS 8 allowing app developers to implement a web browsing interface similar to that of mobile Safari. 이는 부분적으로 모바일 Safari에서 사용 하는 것과 동일한 엔진인 Nitro Javascript 엔진을 사용 하는 WKWebView입니다.This is due, in part, to the fact that WKWebView uses the Nitro Javascript engine, the same engine used by mobile Safari. 매우 향상 된 성능, 사용자에 게 친숙 한 제스처 및 웹 페이지와 앱 간의 상호 작용 용이성으로 인해 항상 uiwebview 보기에서 사용 해야 합니다. WKWebViewWKWebView should always be used over UIWebView were possible due to the increased performance,built in user-friendly gestures, and the ease of interaction between the web page and your app.

WKWebView는 UIWebView 보기와 거의 동일한 방식으로 앱에 추가할 수 있지만, 개발자는 UI/UX 및 기능을 훨씬 더 많이 제어할 수 있습니다.WKWebView can be added to your app in an almost identical way to UIWebView, however as the developer you have much more control over the UI/UX and functionality. 웹 뷰 개체를 만들고 표시 하면 요청 된 페이지가 표시 됩니다. 그러나 보기가 표시 되는 방법, 사용자가 탐색 하는 방법 및 사용자가 보기를 종료 하는 방법을 제어할 수 있습니다.Creating and displaying the web view object will display the requested page, however you can control how the view is presented, how the user can navigate, and how the user exits the view.

아래 코드를 사용 하 여 Xamarin.ios 앱에서 WKWebView를 시작할 수 있습니다.The code below can be used to launch a WKWebView in your Xamarin.iOS app:

    WKWebView webView = new WKWebView(View.Frame, new WKWebViewConfiguration());
    View.AddSubview(webView);

    var url = new NSUrl("https://xamarin.com");
    var request = new NSUrlRequest(url);
    webView.LoadRequest(request);

그러면 다음과 같은 웹 보기가 생성 됩니다.This produces the following web view:

WKWebView는 WebKit 네임 스페이스에 있으므로이 using 지시문을 클래스의 맨 위에 추가 해야 합니다.It is important to note that WKWebView is in the WebKit namespace, so you will have to add this using directive to the top of your class.

WKWebView은 Xamarin.ios 앱 내에서 사용할 수도 있으므로 플랫폼 간 Mac/iOS 앱을 만드는 경우이를 사용 하는 것을 고려할 수 있습니다.WKWebView can also be used within Xamarin.Mac apps, and you therefore may want to consider using it if you are creating a cross-platform Mac/iOS app.

Javascript 경고 처리 조리법은 javascript와 함께 WKWebView를 사용 하는 방법에 대 한 정보도 제공 합니다.The Handle JavaScript Alerts recipe also provides information on using WKWebView with Javascript

SFSafariViewControllerSFSafariViewController

SFSafariViewController는 앱에서 웹 콘텐츠를 제공 하는 최신 방법이 며 iOS 9 이상에서 사용할 수 있습니다.SFSafariViewController is the latest way to provide web content from your app and is available in iOS 9 and later. UIWebView 또는 WKWebView와 달리 SFSafariViewController는 뷰 컨트롤러 이므로 다른 뷰와 함께 사용할 수 없습니다.Unlike UIWebView or WKWebView, SFSafariViewController is a View Controller and so cannot be used with other views. 뷰 컨트롤러를 표시 하는 것과 같은 방법으로 SFSafariViewController를 새 뷰 컨트롤러로 제공 해야 합니다.You should present SFSafariViewController as a new View Controller, in the same way you would present any View Controller.

SFSafariViewController은 기본적으로 앱에 포함할 수 있는 ' 미니 safari '입니다.SFSafariViewController is essentially a 'mini safari' that can be embedded into your app. WKWebView와 마찬가지로 동일한 Nitro Javascript 엔진을 사용 하지만 자동 채우기, 판독기 및 모바일 Safari와 쿠키 및 데이터를 공유 하는 기능과 같은 추가 Safari 기능을 제공 합니다.Like WKWebView it uses the same Nitro Javascript Engine, but also provides a range of additional Safari features such as AutoFill, Reader, and the ability to share cookies and data with mobile Safari. 사용자와 SFSafariViewController 간의 상호 작용은 앱에 액세스할 수 없습니다.Interaction between the user and the SFSafariViewController is not accessible to your app. 앱은 기본 Safari 기능에 액세스할 수 없습니다.Your app will not have access to any of the default Safari features.

또한 기본적으로 사용자가 앱으로 쉽게 돌아갈 수 있도록 하 고 사용자가 웹 페이지의 스택을 탐색할 수 있도록 하 여 사용자가 앱으로 쉽게 돌아가 탐색 단추를 전달 하는 데 사용할 수 있습니다.It also, by default, implements a Done button, allowing to user to easily return to your app, and forward and back navigation buttons, allowing your user to navigate through a stack of web pages. 또한 사용자에 게 예상 되는 웹 페이지에 있다는 점에 대 한 평화를 제공 하는 주소 표시줄을 제공 합니다.In addition, it also provides the user with an address bar giving them the peace of mind that they are on the expected web page. 주소 표시줄에서 사용자가 url을 변경할 수 없습니다.The address bar does not allow the user to change the url.

이러한 구현은 변경 될 수 없으므로 앱이 사용자 지정 없이 웹 페이지를 제공 하려는 경우에는 SFSafariViewController를 기본 브라우저로 사용 하는 것이 좋습니다.These implementations cannot be changed, so SFSafariViewController is ideal to use as the default browser if your app wants to present a webpage without any customization.

아래 코드를 사용 하 여 Xamarin.ios 앱에서 SFSafariViewController를 시작할 수 있습니다.The code below can be used to launch a SFSafariViewController in your Xamarin.iOS app:

var sfViewController = new SFSafariViewController(url);

PresentViewController(sfViewController, true, null);

그러면 다음과 같은 웹 보기가 생성 됩니다.This produces the following web view:

SafariSafari

아래 코드를 사용 하 여 앱 내에서 모바일 Safari 앱을 열 수도 있습니다.It is also possible to open the mobile Safari app from within your app, by using the code below:

var url = new NSUrl("https://xamarin.com");

UIApplication.SharedApplication.OpenUrl(url);

그러면 다음과 같은 웹 보기가 생성 됩니다.This produces the following web view:

사용자를 앱에서 Safari로 이동 하는 것은 일반적으로 항상 피해 야 합니다.Navigating users away from your app to Safari should generally always be avoided. 대부분의 사용자는 응용 프로그램 외부에서 탐색을 필요로 하지 않으므로 앱에서 벗어나면 사용자는이를 반환 하지 않을 수 있으며,이는 기본적으로 참여를 중단 합니다.Most users will not expect navigation outside of your application, so if you navigate away from your app, users may never return it, essentially killing engagement.

iOS 9의 향상 된 기능을 통해 사용자는 Safari 페이지의 왼쪽 위 모서리에 있는 뒤로 단추를 통해 쉽게 앱으로 돌아갈 수 있습니다.iOS 9 improvements allow the user to easily return to your app through a back button that is provided in the top left corner of the Safari page.

앱 전송 보안App Transport Security

앱 전송 보안 또는 ATS 는 모든 인터넷 통신이 보안 연결 모범 사례를 준수 하도록 iOS 9의 Apple에서 도입 되었습니다.App Transport Security, or ATS was introduced by Apple in iOS 9 to ensure that all internet communications conform to secure connection best practices.

앱에서 응용 프로그램을 구현 하는 방법을 비롯 하 여 ATS에 대 한 자세한 내용은 앱 전송 보안 가이드를 참조 하세요.For more information on ATS, including how to implement it in your app, refer to the App Transport Security guide.