투케이2K

115. (ios/swift) [재등록] 웹뷰 (wkwebview) 캐시 초기화 방법 본문

IOS

115. (ios/swift) [재등록] 웹뷰 (wkwebview) 캐시 초기화 방법

투케이2K 2022. 2. 3. 21:24

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

        // -----------------------------------------
        
        // [전체 방문 데이터 지우기]
        /*WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), completionHandler: {
            (records) -> Void in
            for record in records{
                WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {})
                print("")
                print("===============================")
                print("[A_Main >> init_WebView() :: 웹뷰 초기 설정 값 정의 실시 및 웹뷰 로드 수행]")
                print("type :: removeData")
                print("로직 :: 사전 전체 방문 데이터 삭제됨")
                print("===============================")
                print("")
            }
        })*/
        
        // -----------------------------------------
        
        // [원하는 데이터만 골라서 삭제]
        let websiteDataTypes = NSSet(array:
                                            [WKWebsiteDataTypeDiskCache, // 디스크 캐시
                                             WKWebsiteDataTypeMemoryCache, // 메모리 캐시
                                             WKWebsiteDataTypeCookies, // 웹 쿠키,
                                             
                                             WKWebsiteDataTypeOfflineWebApplicationCache, // 앱 캐시
                                             WKWebsiteDataTypeWebSQLDatabases, // 웹 SQL 데이터 베이스
                                             WKWebsiteDataTypeIndexedDBDatabases // 데이터 베이스 정보
                                             
                                             //WKWebsiteDataTypeLocalStorage // 로컬 스토리지
                                             //WKWebsiteDataTypeSessionStorage // 세션 스토리지
                                            ])
        let date = NSDate(timeIntervalSince1970: 0)
        WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes as! Set, modifiedSince: date as Date, completionHandler:{
            print("")
            print("===============================")
            print("[A_Main >> init_WebView() :: 웹뷰 초기 설정 값 정의 실시 및 웹뷰 로드 수행]")
            print("type :: removeData")
            print("로 직 :: 사전 캐시 및 세션 데이터 삭제 수행됨")
            print("===============================")
            print("")
        })
        
        // -----------------------------------------
        
        // [설치된 날짜 가져오는 코드]
        let urlToDocumentsFolder: URL? = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last
        let installDate = try? FileManager.default.attributesOfItem(atPath: (urlToDocumentsFolder?.path)!)[.creationDate] as! Date
        
        // [설치된 날짜부터 지금까지의 cookie all clear]
        URLSession.shared.configuration.httpCookieStorage?.removeCookies(since: installDate!)
        print("")
        print("===============================")
        print("[A_Main >> init_WebView() :: 웹뷰 초기 설정 값 정의 실시 및 웹뷰 로드 수행]")
        print("type :: URLSession removeCookies")
        print("앱 설치 일자 :: ", installDate ?? "")
        print("로 직 :: 사전 캐시 및 세션 데이터 삭제 수행됨")
        print("===============================")
        print("")
        
        // -----------------------------------------
        
        // [웹 보기에 대한 쿠키, 디스크 및 메모리 캐시, 기타 유형의 데이터를 관리하는 개체]
        self.javascriptConfig.websiteDataStore = WKWebsiteDataStore.default()
        
        // -----------------------------------------

        // [웹뷰 초기 설정 및 init 수행 실시]

        // -----------------------------------------

 

반응형
Comments