ios의 웹뷰에서 쿠키를 세팅해주고 싶었습니다.
ios에서는 안드로이드 같이 cookie만 관리해주는 도구를 찾지 못했습니다.
그래서 찾은 방법은
웹뷰가 실행될때 js script를 실행시켜주자 였습니다.
브라우저에서 setCookie(key, value)를 통해 특정 도메인에 원하는 쿠키 값을 세팅해줄수 있습니다.
이걸 웹뷰가 실행될때 실행시켜주자는 생각이였습니다.
var webView: WKWebView!
override func viewDidLoad() {
~~~~~
let config = WKWebViewConfiguration()
let atDocumentStartScript = WKUserScript(source: "alert('start')", injectionTime: .atDocumentStart, forMainFrameOnly: true)
let atDocumentEndScript = WKUserScript(source: "alert('end')", injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let contentController = WKUserContentController()
contentController.addUserScript(atDocumentStartScript)
contentController.addUserScript(atDocumentEndScript)
webView = WKWebView(frame: [frame], configuration: config)
webView.loadUrl(url)
~~~~~
}
source에 실행하고자 하는 script문을 넣으면 되고
injectionTime는 script injection 시점을 의미한다
.atDocumentStart는 document element가 생성되고 나서 script를 inject해주고(다른 content들은 로딩되지 않은 상태)
.atDocumentEnd는 document element가 로딩이 완료되고 나서 script를 inject해준다(document element는 loading이 끝났지만 다른 subresource들은 로딩되지 않은 상태)
아래 사진들은 1번부터 atDocumentStart, atDocumentEnd, 전부 실행되고 나서의 상태이다.
이제 우리는 원하는 시점에 원하는 스크립트를 실행시킬수 있다!
출처 : https://developer.apple.com/documentation/webkit/wkuserscript/1537750-init
'네이티브 > Ios' 카테고리의 다른 글
Ios splash image 띄우기 (Renewal) (2) | 2022.03.01 |
---|---|
Ios 웹뷰 alert, confirm 띄우기 (0) | 2022.01.23 |
Ios 웹뷰 디버깅 (0) | 2022.01.19 |
Ios Apple Native Login (0) | 2021.12.05 |
Ios App Memory Check (0) | 2021.12.05 |