티스토리 뷰

- 상황 : html파일들이 압축되어있는 파일(zip)을 document 디렉토리에 풀고, WKWebView로 로드하였으나,

리소스를 불러오지 못하는 상황.

 

 <파일 정보>  (다음 파일이 있다고 가정한다.)

  •  web.zip ( main.html, main.files )

A. Xcode에 압축 파일 추가.  ( Build Phases -> Copy Bundle Resources )

B. 코드에서 Document 디렉토리에 압축풀기 ( Zip 라이브러리 사용 : https://github.com/marmelroy/Zip )

    * Document 디렉토리는 IOS에서 제공하는 사용자가 사용할 수 있는 디렉토리. 빌드되는 앱마다 하나씩 가지고 있음.

import Zip // https://github.com/marmelroy/Zip 라이브러리 사용

...

do {
    let filePath = Bundle.main.url(forResource: "web", withExtension: "zip")

    // 이 부분 수행이 끝나면 {AppDirectory}/Document 아래에 web 디렉토리로 압축이 풀린다.
    let _ = try Zip.quickUnzipFile(filePath!) 
}
catch {
	// 압축풀기 실패!
}

C. WKWebView에 호출 ( FileManager 사용 )

import WebKit

...

@IBOutlet weak var webView : WKWebView!

override func viewDidLoad() {
	let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
    do {
    	// web디렉토리 URL을 가져오고 
    	let webURL = documentURL?.appendingPathComponent("web")
        
        // 디렉토리 내의 파일 목록을 출력해본다.
        print("web directory Files : \(try FileManager.default.contentsOfDirectory(atPath : webURL!.path))")
        
        // main.html파일 URL을 가져온 뒤
        let htmlFileURL = webURL?.appendingPathComponent("main.html")
        
        // webView에서 로드해준다. 
        // 이 부분에서 allowingReadAccessTo 파라미터에는 main.html의 부모 디렉토리 이상 레벨의 URL을 지정해준다.
        // 여기서는 최상위 레벨인 Document의 URL을 추가했다. webURL을 추가해도 무방하다.
        webView.loadFileURL(htmlFileURL!, allowingReadAccessTo: documentURL!) 
    }
    catch {
    	// 알 수 없는 오류 
    }

}

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함