Notice
Recent Posts
Recent Comments
Link
투케이2K
2. (TWOK/LOGIC) [모바일] 웹뷰 (webview) 사용 시 쿠키 (cookie) 설정 방법 본문
[로직 정리]
정리 로직 : MOBILE (ANDROID / IOS)
상태 : [모바일] 웹뷰 (webview) 로드 시 쿠키 사용해 웹뷰 로드 수행 실시
[설 명]
[Android]
1. 초기 웹뷰 로드를 수행하기 전 이전에 저장된 쿠키 및 세션 데이터가 있으면 초기화 수행 실시
- webview.clearCache
- webview.clearHistory
- CookieManager.removeSessionCookies
- CookieManager.removeAllCookies
2. 웹뷰 초기 설정 셋팅 수행 실시 및 로드 하기 (전) 쿠키 매니저를 사용해 쿠키 삽입 실시
- CookieManager.setCookie
3. 웹뷰 로드 수행 실시
- webview.loadUrl
4. 실시간 웹뷰 로드 완료 상태 확인 부분에서 웹뷰가 로드 완료 다 된 경우 저장한 쿠키가 정상적으로 포함 되었는지 확인
- onProgressChanged (실시간 웹뷰 로드 상태 감지) 에서 progress 로딩 상태가 100 인 경우
- 쿠키 포함 여부 확인 : CookieManager.hasCookies() == true
- 웹뷰 로드 주소를 사용해 저장된 쿠키 목록 확인 : CookieManager.getCookie(webview.getUrl()))
[IOS]
1. 초기 웹뷰 로드를 수행하기 전 이전에 저장된 쿠키 및 세션 데이터가 있으면 초기화 수행 실시
- WKWebsiteDataStore.default().removeData
- URLSession.shared.configuration.httpCookieStorage?.removeCookies
- self.webview.configuration.websiteDataStore.httpCookieStore.delete(cookie, completionHandler: {})
2. 웹뷰 초기 설정 셋팅 수행 실시 및 로드 하기 (전) 웹뷰 헤더 쪽에 쿠키 삽입 수행 실시
- WKWebViewConfiguration 쿠키 삽입 설정 지정 : self.config.websiteDataStore = WKWebsiteDataStore.nonPersistent() // [쿠키 추가 셋팅 위함]
- URLRequest.addValue("데이터", forHTTPHeaderField: "Cookie")
- 웹뷰 로드 수행 실시 : webview.load(request)
3. 웹뷰 로드 완료 상태 100 프로가 되면 다시 webview.evaluateJavaScript 를 사용해 쿠키 직접 삽입 실시 및 저장된 목록 확인
- 실시간 웹뷰 로드 완료 상태 확인 : override func observeValue
- webview.evaluateJavaScript("\(cookies)") // cookies 값은 문자열 형태로 >> document.cookie='쿠키 스트링 데이터'
- webview.evaluateJavaScript 자바스크립트 데이터 전송 성공 및 실패 상태에서 성공한 경우 웹뷰에 저장된 쿠키 목록 확인
- 웹뷰 저장된 쿠키 목록 확인 : webview.configuration.websiteDataStore.httpCookieStore.getAllCookies
- 개별 쿠키 값을 var sharedCookies: Array<HTTPCookie>? 배열에 저장 실시
4. 웹뷰 실시간 주소 변경 상태 감지 부분에서 새로운 주소가 로드가 될 경우 다시 웹뷰에 쿠키 설정 실시
- 실시간 웹뷰 로드 주소 변경 상태 감지 : decidePolicyFor navigationAction: WKNavigationAction
- 개별 쿠키 값을 사전에 var sharedCookies: Array<HTTPCookie>? 배열에 저장 실시 (3)
- for 문을 사용해서 sharedCookies 배열에 저장된 쿠키를 재설정 수행 실시 : self.webview!.configuration.websiteDataStore.httpCookieStore.setCookie(self.sharedCookies![i], completionHandler: nil)
- 웹뷰 실시간 주소 변경 상태 로직 허용 지정 : decisionHandler(.allow)
반응형
'투케이2K 로직정리' 카테고리의 다른 글
6. (TWOK/LOGIC) [Android] Webview 웹뷰 로딩 완료 상태 감지 및 로딩 화면 닫기 처리 (0) | 2022.07.18 |
---|---|
5. (TWOK/LOGIC) [IOS] WkWebview 웹뷰 COOKIE 쿠키 공유 방법 정리 [2] [로딩 속도 개선] (0) | 2022.05.04 |
4. (TWOK/LOGIC) [IOS] WkWebview 웹뷰 COOKIE 쿠키 공유 방법 정리 (0) | 2022.03.18 |
3. (TWOK/LOGIC) [모바일] 프로세스 생명주기 상태 관리 (create , destroy) (0) | 2022.02.14 |
1. (TWOK/LOGIC) [모바일] 내부 window open 상태 감지 및 새로운 웹뷰 작업 로직 수행 방법 (0) | 2021.12.31 |
Comments