তারা শেষ পর্যন্ত বাগ সমাধান! এখন আমরা ব্যবহার করতে পারি -[WKWebView loadFileURL:allowingReadAccessToURL:]
। স্পষ্টতই ডাব্লুডাব্লুডিসি 2015 ভিডিও 504 তে সাফারি ভিউ কন্ট্রোলারের পরিচয় করিয়ে ফিক্সটির মূল্য কয়েক সেকেন্ড ছিল
আইওএস 8 ~ আইওএস 10 এর জন্য (সুইফ্ট 3)
ড্যান ফাবুলিশের উত্তর যেমনটি জানিয়েছে যে এটি ডাব্লুউইউবিউ ভিউয়ের একটি বাগ যা সম্ভবত খুব শীঘ্রই কোনও সময় সমাধান করা যাচ্ছে না এবং তিনি যেমন বলেছিলেন যে সেখানে একটি কাজ আছে :)
আমি কেবল উত্তর দিচ্ছি কারণ আমি এখানে কাজটি দেখাতে চেয়েছিলাম। আইএমও কোডটি https://github.com/shazron/WKWebViewFIleUrlTest এ দেখানো হয়েছে সম্পর্কিত নয় এমন বেশিরভাগ লোকেরা সম্ভবত আগ্রহী নয়।
কাজের চারপাশে কোডের 20 টি লাইন, ত্রুটি পরিচালনা এবং মন্তব্যগুলি অন্তর্ভুক্ত রয়েছে, কোনও সার্ভারের প্রয়োজন নেই :)
func fileURLForBuggyWKWebView8(fileURL: URL) throws -> URL {
// Some safety checks
if !fileURL.isFileURL {
throw NSError(
domain: "BuggyWKWebViewDomain",
code: 1001,
userInfo: [NSLocalizedDescriptionKey: NSLocalizedString("URL must be a file URL.", comment:"")])
}
try! fileURL.checkResourceIsReachable()
// Create "/temp/www" directory
let fm = FileManager.default
let tmpDirURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("www")
try! fm.createDirectory(at: tmpDirURL, withIntermediateDirectories: true, attributes: nil)
// Now copy given file to the temp directory
let dstURL = tmpDirURL.appendingPathComponent(fileURL.lastPathComponent)
let _ = try? fm.removeItem(at: dstURL)
try! fm.copyItem(at: fileURL, to: dstURL)
// Files in "/temp/www" load flawlesly :)
return dstURL
}
এবং হিসাবে ব্যবহার করা যেতে পারে:
override func viewDidLoad() {
super.viewDidLoad()
var fileURL = URL(fileURLWithPath: Bundle.main.path(forResource:"file", ofType: "pdf")!)
if #available(iOS 9.0, *) {
// iOS9 and above. One year later things are OK.
webView.loadFileURL(fileURL, allowingReadAccessTo: fileURL)
} else {
// iOS8. Things can (sometimes) be workaround-ed
// Brave people can do just this
// fileURL = try! pathForBuggyWKWebView8(fileURL: fileURL)
// webView.load(URLRequest(url: fileURL))
do {
fileURL = try fileURLForBuggyWKWebView8(fileURL: fileURL)
webView.load(URLRequest(url: fileURL))
} catch let error as NSError {
print("Error: " + error.debugDescription)
}
}
}