본문 바로가기

Programming/iOS

[iOS] WKWebView 시작하기

반응형
ios9 부터 기존 UIWebView 보다 향상된 성능을 제공하는 WKWebView를 지원합니다.

UIWebView로는 하이브리드 앱과 연동하는데 있어서, 많은 제약사항이 있어, WKWebView를 진행 중인 프로젝트에 적용해 보았습니다.

아래는 WKWebView에 장점과 문제점입니다. 참고해주세요.

*참고 링크
http://docs.kioskproapp.com/article/840-wkwebview-supported-features-known-issues

* 장점
- 앱의 기본 프로세스 외부에서 실행됩니다.
- 더 빠른 자바 스크립트 엔진 인 Nitro 사용합니다.
- JavaScript를 비동기 적으로 처리합니다.
- 특정 터치 지연을 제거합니다.
- 서버 측 인증 과제 지원합니다.
- 오류가있는 자체 서명 보안 인증서 및 인증서 인증 지원합니다.

* 문제점
- iOS 9 이상 필요 합니다.
- 로컬로 저장된 파일에 대한 AJAX 요청을 지원하지 않습니다.
- '쿠키 허용'설정을 지원하지 않습니다.
- '고급 캐시 설정'을 지원하지 않습니다.
- 앱 종료시 HTML5 로컬 스토리지가 지워짐
- WebKit 요청 로깅을 지원하지 않습니다.
- 예상대로 스크린 샷을 캡처하지 못할 수 있습니다.

=============================================================================

1. WKWebView는 #import <WebKit/WebKit.h> 를 따로 임포트 해줘야합니다.
2. WKWebView 생성과 호출이 UIWebView와 유사하지만, 델리게이트 부분에서 많은 차이가 있습니다.


self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height]; // 생성

self.webView.navigationDelegate = self; // 네비게이션 델리케이드

self.webView.UIDelegate = self; // UI 델리케이트

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.ifriendspet.com"]]]; // URL 로드

3. WKWebKit 프레임워크와 프로토콜은 다음과 같습니다.


* WKWebKit framework
- WKBackForwardList - 웹뷰에서 방문했던 웹 페이지 리스트
- WKBackFowardListItem - 웹뷰 back-forward 리스트에 각 웹 페이지
- WKFrameInfo - 웹 페이지에서 frame에 관한 정보를 포함
- WKNavigation - 웹 페이지 로딩 과정을 추적하는 정보를 포함
- WKNavigationAction - 웹 페이지 navigation을 유발하는 Action에 관한 정보를 포함
- WKNavigationRespoonse - navigation 응답 값을 포함
- WKPreferences - 웹뷰의 설정값을 캡슐화
- WKProcessPool - 웹 컨텐츠 프로세스들의 pool
- WKUserController - 자바스크립트로 메시지를 보내거나 웹뷰에 user script를 삽입
- WKScriptMessage - 웹 페이지로 보낼 메시지의 정보를 포함
- WKUserScript - 웹 페이지에 삽입할 스크립트
- WKWebViewConfiguration - 웹 뷰를 초기화할 property 들의 collection
- WKWindowFeatures - 새로운 웹 뷰를 요청할 때, 윈도우에 포함할 값들

*Protocols
- WKNavigationDelegate - main/sub frame load 정책과 main frame navigation 과정을 추적하는 메소드를 제공
- WKScriptMessageHandler - 웹페이지에 동작하는 자바스크립트 메시지를 받는 메소드 제공
- WKUIDelegate - 웹 페이지 상에서 native UI를 표현하는 메소드를 제공


다음에는 WKWebKit 주요 프로토콜에 대한 사용법에 대해서 작성해보도록 하겠습니다.