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()
}