WKWebView загрузить HTML из каталога документов не работает на устройстве

Итак, я скачал папку с HTML-файлом.

структура папок

Я пытался открыть его в WKWebView.

let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = documentsUrl.appendingPathComponent("\(model.sourceFileId)/index.html") 
self.webView.loadFileURL(url, allowingReadAccessTo: url)

Отлично работает на симуляторе

скриншот из симулятора

но не на устройстве

скриншот с устройства

Похоже, он просто не может открыть файлы CSS и изображений. Но почему? Как я могу это исправить?

1 ответ

Скопируйте файлы в NSTemporaryDirectory() и откройте файл URL, и он работает. Я написал свой код в стиле Objective-C.

NSString *basePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"dirName"];
NSString *indexHtmlPath = [basePath stringByAppendingPathComponent:@"index.html"];
NSString *htmlString = [NSString stringWithContentsOfFile:indexHtmlPath encoding:NSUTF8StringEncoding error:nil];
NSURL *baseURL = [NSURL fileURLWithPath:basePath];
[self.wkWebView loadHTMLString:htmlString baseURL:baseURL];

Быстрая версия использования временного каталога для сохранения и открытия документов.

            let docData = data as NSData
            let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory())
            let tmpURL = tempDirectory.appendingPathComponent(response?.suggestedFilename ?? "fileName.pdf")
            do {
                try data.write(to: self.tmpURL! )
            } catch {
                self.showError()
                return
            }
            if FileManager.default.fileExists(atPath: self.tmpURL!.path){
                DispatchQueue.main.async {
                    self.webView.loadFileURL(self.tmpURL!, allowingReadAccessTo: self.tmpURL!)
                }
            }
            else{
                self.showError()
            }
Другие вопросы по тегам