해당 글에서 코드 부분은 파란색으로 표기 됩니다.
해당 글에서 중요 부분은 붉은색으로 표기 됩니다.
iOS WKWebView를 이용하여 세션을 유지하려면 여러가지로 설정을 해주어야 한다.
이 부분을 간단하게 구성을 해보고자 WKCustomWebView 모듈을 Cocopods에 업로드 하였다.
여기서는 해당 라이브러리 사용법에 대해서 안내한다.
앱 종료 후에도 세션 유지 or ViewController 간 또는 WKWebView 간의 세션 유지를 위해서라면 도움이 될듯 하다.
[자체 제작한 WKCustomWebView 사용방법]
1. 라이브러리 연동 방법
pod 'WKCustomWebView'
2. WKCustomWebView를 사용할 화면에서 Lazy 객체 생성 및 초기화
// InappAlert Class import
import WKCustomWebView
// WKCustomWebView 변수 간편 생성 or 상세 설정 생성으로 객체 생성
// (간편 생성 방법)
// - frame : WKCustomWebView를 그릴 Frame 지정
lazy var wkWebView: WKCustomWebView = {
let webView: WKCustomWebView = WKCustomWebView(frame: CGRect.init(x: 0, y: 0, width: self.mainView.frame.size.width, height: self.mainView.frame.size.height))
return webView
}()
// (상세 설정 생성 방법)
// - frame : WKCustomWebView를 그릴 Frame 지정
// - userDefault : 앱에서 사용할 UserDefault 객체 전달 (쿠키 정보 저장을 위해 사용)
// - uDCookie : 앱에서 사용할 UserDefault에 저장할 키 이름
// - saveCookieName : Cookie중 저장할 쿠키 문자열 (포함검색)
// - deleteCookieName : Cookie 중 삭제할 쿠기 문자열 (포함검색)
lazy var wkWebView: WKCustomWebView = {
let webView: WKCustomWebView = WKCustomWebView(frame: CGRect.init(x: 0, y: 0, width: self.mainView.frame.size.width, height: self.mainView.frame.size.height), userDefault: <UserDefault 객체>, uDCookie: "쿠키 저장 키이름", saveCookieName: "저장할 쿠키 문자열", deleteCookieName: "삭제할 쿠키 문자열")
return webView
}()
// userDefault or uDcookie or saveCookieName or deleteCookieName 의 값은 필수 값이 아니므로 설정을 하지 않아도 된다.
// - userDefault와 uDcookie의 경우 값을 지정하지 않으면 기본 설정 값을 사용한다.
// - saveCookieName의 값을 지정하지 않을경우 모든 쿠키를 저장, 값을 지정할 경우 해당 값에 포함되는 쿠키만 저장한다.
// - deleteCookieName의 값을 지정하지 않을경우 유효기간이 만료 된 쿠키만 삭제, 값을 지정할 경우 추가로 지정된 이름이 포함된 쿠키도 삭제한다.
3. WKWebView 딜리게이트 사용이 필요할 경우 WKCustomWebView에서 설정 방법
// 딜리게이트 이용시 기존 WKWebView의 딜리게이트를 넣어주어야 한다.
// - WKNavigationDelegate, WKUIDelegate
class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
// ... 생략 ...
// WKWebView의 WKUIDelegate 이용시
self.wkWebView.uiDelegate = self
// WKWebView의 WKNavigationDelegate를 이용하려면 아래 구문으로 선언해 주어야 한다.
self.wkWebView.wkNavigationDelegate = self
// WKNavigationDelegate 안 navigationAction 함수 대신 아래 함수 사용
self.wkWebView.onDecidePolicyForNavigationAction = { (webView, navigationAction, decisionHandler) in
decisionHandler(.allow)
}
// WKNavigationDelegate 안 navigationResponse 함수 대신 아래 함수 사용
self.wkWebView.onDecidePolicyForNavigationResponse = { (webView, navigationResponse, decisionHandler) in
decisionHandler(.allow)
}
}
4. WKCustomWebView 창간 이동시 세션 유지
// A ViewController <-> B ViewController 간 세션 유지를 위해서 B에서 A로 돌아갈때 창이 종료되는 시점에서 애라 함수 호출
// 세션 업데이트만 원할 경우
self.wkWebView.WKCustomWebViewSC()
// 세션 업데이트 후 웹뷰를 리로드 할 경우
self.wkWebView.WKCustomWebViewSCandRload()
'개발' 카테고리의 다른 글
iOS Widget Extension에서 URL 이미지 로딩 방법!? (0) | 2020.11.19 |
---|---|
iOS Widget Extension 각 항목별 터치 이벤트 구성하기 (0) | 2020.11.19 |
iOS Project에 연동한 Cocoapods (Podfile) 연동을 해제하는 방법! (0) | 2020.11.19 |
iOS Widget 구성을 위한 Widget Extension 기본부분 살펴보기 (0) | 2020.11.16 |
SwiftUI 알아보기 :) Button (0) | 2020.11.11 |