투케이2K

5. (TWOK/LOGIC) [IOS] WkWebview 웹뷰 COOKIE 쿠키 공유 방법 정리 [2] [로딩 속도 개선] 본문

투케이2K 로직정리

5. (TWOK/LOGIC) [IOS] WkWebview 웹뷰 COOKIE 쿠키 공유 방법 정리 [2] [로딩 속도 개선]

투케이2K 2022. 5. 4. 10:50

[로직 정리]

정리 로직 : MOBILE (IOS)

상태 : [IOS] WkWebview 웹뷰 COOKIE 쿠키 공유

 

[설 명]

[IOS]

1. 웹뷰 웹뷰 초기 설정 셋팅 수행 실시 및 로드 하기 (전) 웹뷰 헤더 쪽에 쿠키 삽입 , 웹뷰 로드 수행 실시
  - 쿠키 추가 셋팅 위함 : 웹뷰 WKWebViewConfiguration.websiteDataStore 설정을 >> WKWebsiteDataStore.nonPersistent() 로 설정
  - 헤더 쪽 쿠키 삽입 실시 : URLRequest.addValue("데이터", forHTTPHeaderField: "Cookie")
  - 웹뷰 로드 실시 : webview.load(request)





2. WKUserContentController 부분 자바스크립트 통신 브릿지 추가 부분에서 addUserScript 를 사용해서 쿠키 String 값 설정 실시

        // -----------------------------------------
        // MARK: [자바스크립트 통신 브릿지 경로 추가]
        self.javascriptController.add(self, name: "setCopyData") // [로그 데이터 복사 브릿지 경로]
        // -----------------------------------------
        // MARK: [쿠키 값 널 여부 체크 실시 >> 웹뷰 로드 시 사전 쿠키 값 설정 실시]
        if C_Util().stringNotNull(str: self.cookieString) == true {
            
            var cookies = "document.cookie='"
            cookies += self.cookieString // [형태 : JSESSIONID=6271da11ad66ebe633666666;domain=m.test.ac.kr;path=/;]
            cookies += "'"
            
            let cookieScript = WKUserScript(source: cookies, injectionTime: .atDocumentStart, forMainFrameOnly: false)
            self.javascriptController.addUserScript(cookieScript) // [쿠키 스트링 추가]

            print("")
            print("===============================")
            print("[A_ChildWebview >> addJavaScriptBridge() :: 자바스크립트 통신 브릿지 추가]")
            print("cookieString [원본] :: \(self.cookieString)")
            print("cookies [포맷] :: \(cookies)")
            print("로 직 :: 웹뷰 쿠키 값 사전 설정 실시")
            print("===============================")
            print("")
        }
        // -----------------------------------------





3. decidePolicyFor 실시간 웹뷰 주소 변경 상태 체크 부분에서 allow 처리 및 정상적으로 쿠키를 가지고 페이지 이동 처리가 되는지 확인
  - 웹뷰 저장된 쿠키 목록 확인 : webview.configuration.websiteDataStore.httpCookieStore.getAllCookies

반응형
Comments