투케이2K

140. (ios/swift) wkwebview 웹뷰 evaluateJavaScript 자바스크립트 데이터 전달 방식 사용해 쿠키 (cookie) 설정 방법 본문

IOS

140. (ios/swift) wkwebview 웹뷰 evaluateJavaScript 자바스크립트 데이터 전달 방식 사용해 쿠키 (cookie) 설정 방법

투케이2K 2022. 3. 31. 12:13

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

 

                        // [자바스크립트 사용해 쿠키를 셋팅 하기 위해 형식 정의 실시]
                        var cookies = "document.cookie='"
                        cookies += "JSESSIONID=6245179bad665fcda080087c;domain=m.test.ac.kr;path=/;"
                        cookies += "'"
                        print("")
                        print("===============================")
                        print("[A_ChildWebview >> observeValue() :: 웹뷰 로드 상태 확인]")
                        print("쿠키값 자바스크립트 셋팅 :: ", cookies)
                        print("===============================")
                        print("")
                        
                        



                        // MARK: [자바스크립트에 쿠키 셋팅 실시 >> evaluateJavaScript]
                        self.main_webview!.evaluateJavaScript("\(cookies)") { (success, error) in
                            if error != nil {
                                print("")
                                print("===============================")
                                print("[A_ChildWebview >> observeValue() :: 웹뷰 로드 상태 확인]")
                                print("설 명 :: ", "[IOS >> 자바스크립트] 전달받은 쿠키값 자바스크립트 셋팅")
                                print("cookies :: ", cookies)
                                print("전송 결과 [error] :: ", error)
                                print("===============================")
                                print("")
                            }
                            else {
                                print("")
                                print("===============================")
                                print("[A_ChildWebview >> observeValue() :: 웹뷰 로드 상태 확인]")
                                print("설 명 :: ", "[IOS >> 자바스크립트] 전달받은 쿠키값 자바스크립트 셋팅")
                                print("cookies :: ", cookies)
                                print("전송 결과 [success] :: ", "OK")
                                print("===============================")
                                print("")
                                
                                
                                // MARK: [자바스크립트에 저장된 쿠키 확인 실시]
                                if #available(iOS 11.0, *) {
                                    
                                    // [웹뷰에 저장된 쿠키 값 확인 실시]
                                    self.main_webview!.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in   
                                        print("")
                                        print("===============================")
                                        print("[A_ChildWebview >> observeValue() :: 웹뷰 로드 상태 확인]")
                                        print("-------------------------------")
                                        print("설 명 :: ", "[셋팅 후] 자바스크립트에 저장된 [개별] 쿠키값 확인 실시")
                                        print("-------------------------------")
                                        print("cookie [개수] :: ", cookies.count)
                                        print("-------------------------------")
                                        print("cookie [쿠키] :: ", cookies)
                                        print("===============================")
                                        print("")
                                    }
                                    

                                    // [웹뷰 리로드 무한 루프 방지 위해 저장된 플래그값 확인]
                                    let load_flag = S_Preference().getString(_sKey: S_FinalData.CHILD_LOAD_FLAG)

                                    if load_flag != nil
                                        && load_flag.count>0
                                        && load_flag.trim().equals(_string: "") == false { // [널 아닌 경우]
                                        
                                        
                                        // [웹뷰 정상 표시 실시]
                                        self.main_webview!.isHidden = false
                                    }
                                    else { // [널인 경우]

                                        // [웹뷰 로드 플래그값 지정 실시]
                                        S_Preference().setString(_sKey: S_FinalData.CHILD_LOAD_FLAG, _sValue: "TRUE")
                                        
                                        
                                        // [쿠키 생성 후 쿠키 정보가 반영된 웹페이지를 불러 올 수 있도록 새로 고침을 해줍니다]
                                        self.main_webview!.reload()
                                        
                                    }
                                }
                                else {
                                    print("")
                                    print("===============================")
                                    print("[A_ChildWebview >> observeValue() :: 웹뷰 로드 상태 확인]")
                                    print("설 명 :: ", "[셋팅 후] 저장된 쿠키값 확인 실시")
                                    print("error [에러] :: iOS 11.0 미만 디바이스")
                                    print("===============================")
                                    print("")
                                }
                            }
                        }

 


반응형
Comments