티스토리 뷰

iOS

iOS ) UIWebView와 WKWebView의 차이

Zedd0202 2017. 12. 9. 23:09
반응형

태초에 UIWebView라는 것이 있었습니다. 

그런데 iOS 8에서 WKWebView가 나타납니다. 

둘다 앱 안에 WebView를 보여주는 역할을 하죠. 


그리고.. 현재 UIWebView는 deprecate되었습니다.(Xcode 9 기준)

이 둘이 무슨차이일까요? 


1. 앱 내부에 HTML 데이터 / 콘텐츠를 표시해야하므로 WKWebView가 개발되었습니다.

UIWebView가 iOS 2.0에 도입된 반면, WKWebView는 iOS 8.0에 도입되었죠.


2. UIWebView는 UIKit의 일부이며, WKWebView는 WebKit이라는 프레임워크를 import해야합니다.

(현재 WKWebView도 스토리보드에서 하나의 인터페이스 요소로, 추가할 수 있습니다. )


3. 페이지 크기 조정 - 이 기능은 UIWebView에서 사용할 수 있지만, WKWebView에서는 사용할 수 없습니다.


4. WKWebView는 UIWebView와 비교하여 더 높고 효율적인 성능을 제공합니다.


5. WKWebView에는 IndexedDB 및 ObjectStore ArrayBuffer와 같은 UIWebView보다 몇 가지 추가 지원 기능이 있습니다.


5.1 . IndexedDB는 인덱스를 사용하여 데이터를 관리하는 데 사용되는 데이터베이스입니다. 인덱싱은 인덱스 및 저장된 데이터의 특정 도움말을 사용하여 데이터를 쉽게 식별하는 데 도움이됩니다. SQL 데이터베이스 및 객체 지향 데이터베이스와 같습니다. 객체는 키를 사용하여 저장하고 검색 할 수 있습니다.


6. WKWebView는 약 8500 개의 개체를 렌더링하지만 UIWebView는 약 3500 개의 개체를 렌더링하며 WKWebView의 성능은 UIWebView와 비교하여 두 배입니다.


7. WKWebView는 25% CPU를 사용하여 같은 수의 입자(particles)를 렌더링하지만 UIWebView는 동일한 작업에 대해 90% CPU를 사용합니다.


8. WKWebView는 로컬 파일을 로드 할 수 없지만, UIWebView에서는 사용할 수 있습니다.

-> WKWebView에서도 로컬파일을 로드 할 수 있는 것 같네요. 여러 라이브러리가 있습니당!



9. UIWebView는 한 번 로드되고, 데이터는 쿠키에 저장되므로 다음 번 로딩 시간은 이전 시간에 비해 적어지지만 WKWebView에서는 쿠키가 저장되지 않으므로 항상 로딩 시간이 동일합니다.


10. WKWebView는 프로세스를 벗어나 실행됩니다. 즉, 메모리가 앱과 별도로 스레드됨을 의미합니다. 할당량을 초과하면 앱을 중단하지 않고 충돌합니다 (이로 인해 앱이 알림을 받고 페이지를 다시로드하려고 시도 함).


대조적으로, UIWebView는 프로세스 내에서 실행됩니다. 즉, 사용하는 메모리가 앱 사용공간(footprint)의 일부로 간주되며, iOS에서 할당하려는 값을 초과하면 앱 자체가 운영 체제에 의해 손상됩니다. 이러한 상황이 발생하기 전에 iOS로부터 알림을받는 경우도 있지만, 충돌을 막기 위해 신속하게 반환되지 않거나 전혀 반환되지 않는 경우가 있습니다.


11. WKWebView - 더 빠른 자바 스크립트 엔진인 Nitro 사용.


12. WKWebView  - JavaScript를 비동기 적으로 처리 : JavaScript와 네이티브 코드 간의 통신은 WKWebView에서 비동기 적으로 처리됩니다. 즉, 일반적으로 더 빠르게 실행됩니다.


13. 서버 인증 문제를 지원하지 않는 UIWebView와는 달리 WKWebView는 지원을 합니다. 실질적으로 이것은 WKWebView를 사용할 때 암호로 보호 된 웹 사이트의 사이트 자격 증명을 입력 할 수 있음을 의미합니다.

14. 오류가있는 자체 서명 보안 인증서 및 인증서 인증 지원 :  WKWebView를 사용하면 '계속'/ '취소'팝업을 통해 보안 인증서의 오류 (예 : 자체 서명 된 인증서 또는 만료 된 인증서 사용)를 건너 뛸 수 있습니다. 





대단해보이는 WKWebView에도 issue는 존재합니다.


1. iOS 9 이상 필요

WKWebView integration은 iOS 9 이상을 실행하는 디바이스에서만 사용할 수 있습니다. WKWebView는 iOS 8에서 처음 소개되었지만 로컬에 저장된 파일에 액세스 할 수없는 등 엄청난 한계가 있었습니다.

2. 로컬로 저장된 파일에 대한 AJAX 요청을 지원하지 않습니다.

WKWebView는 브라우저 엔진의 크로스 원본 리소스 공유 규칙을 위반하므로 file : // URI에 대한 XHR 요청을 허용하지 않습니다. 이 유형의 요청을 사용하는 프로젝트는 서버에서 원격으로 호스팅되거나 기존 UIWebView 탐색 엔진을 사용해야합니다.


3. '쿠키 허용'설정을 지원하지 않습니다.

WKWebView 탐색 엔진을 사용할 때 '쿠키 허용'설정이 적용되지 않습니다.


4. '고급 캐시 설정'(Advanced Cache Settings)을 지원하지 않습니다.

'캐시 원본(Cache Source)'및 '오직 서버 Redirection 이벤트에 대한 것만 브라우저에 알림'은 WKWebView 탐색 엔진을 사용할 때 적용되지 않습니다.


5. 앱 종료시 HTML5 로컬 스토리지가 지워짐

앱이 종료되고 다시 실행되면 HTML5 로컬 저장소가 지워집니다.


출처 : http://docs.kioskproapp.com/article/840-wkwebview-supported-features-known-issues





반응형