iOS/WebKit


서버에서 받은 쿠키를 이용하여 웹뷰에 넣어서 사용한다고 작업 내용이 전달되었다. 일단 서버에서 HTTP통신으로 헤더(HttpResponse)로 쿠키를 가져왔다.// HttpResponse에서 쿠키로 변경func convertHTTPResponseToCookies(httpResponseHeaders: [AnyHashable: Any]) -> [HTTPCookie] { var cookies: [HTTPCookie] = [] if let headers = httpResponseHeaders as? [String: String] { for (key, value) in headers { if key.lowercased() == "Set-cookie" { ..


오류다른 ViewController에서 동시에 한 개의 webView를 사용하고 있던 중 아래 오류가 발생하였다.Completion handler passed to [webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once원인webView에서 decideHandler나 completionHandler의 호출은 한 번 밖에 되지 않는다.해결CompletionHandlerWrapper Class를 선언하여 webView에 적용class CompletionHandlerWrapper { private var completionHandler: ((Element) -> Void)? private let defaultVa..


Swift에서 WKHTTPCookieStore를 사용하여 쿠키를 관리할 수 있다.WKHTTPCookieStore(Class) : 특정 웹뷰와 관련된 HTTP Cookie를 관리하는 개체웹페이지의 초기 쿠키를 지정하고 웹 콘텐츠의 쿠키를 관리할 때 사용예를 들어 사용자가 로그아웃을 할 때 현재 세션에 대한 쿠키를 WKHTTPCookieStore을 이용하여 쿠키를 삭제할 수 있음 쿠키 관리// 저장된 모든 쿠키를 비동기로 가져와 지정된 completionHandler에 전달func getAllCookies(([HTTPCookie]) -> Void){}// WKHTTPCookieStore에 쿠키를 추가func setCookie(HTTPCookie, completionHandler: (() -> Void)?){..


WKScriptMessageHandler(Protocol) 웹페이지에서 실행되는 JavaScript 코드로부터 메시지를 수신하기 위한 인터페이스웹 뷰 안에서 JavaScript message를 앱에서 응답하는 방법특히 MessageHandler를 타겟으로 메시지를 전송하면 WebKit에서는 userContentController(_:didReceive:) 함수를 호출JavaScript에서 MessageHandler를 호출하려면 아래 함수를 호출window.webkit.messageHandlers..postMessage()WKMessageHandler에서 의 값을 지정 userContentController(_:didReceive:)웹페이지가 script message를 전송했을 때func userCont..


WKWebView (class) : 브라우저와 같은 대화형 웹 콘텐츠를 표시하는 객체웹 콘텐츠를 앱의 UI에 원활하게 통합하는 데 사용하는 플랫폼 (Native View)웹 브라우저의 기능을 앱 내에 통합하는 것을 가능하게 함웹 페이지의 로딩, 탐색, 스크롤과 같은 기능을 제공이 웹 뷰는 HTML, CSS, JavaScript 콘텐츠도 Native View에서 사용 가능합니다.WebViewConfiguration을 사용하여 URL Scheme를 처리기를 설정하고, Cookie를 관리, 웹 콘텐츠의 대한 기본 설정을 사용자 정의import UIKitimport WebKitclass ViewController: UIViewController, WKUIDelegate { var webView: W..