투케이2K

2. (TWOK/LOGIC) [모바일] 웹뷰 (webview) 사용 시 쿠키 (cookie) 설정 방법 본문

투케이2K 로직정리

2. (TWOK/LOGIC) [모바일] 웹뷰 (webview) 사용 시 쿠키 (cookie) 설정 방법

투케이2K 2022. 2. 14. 08:16

[로직 정리]

정리 로직 : 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)

 


 
반응형
Comments