Intereting Posts
सार्वभौमिक गेम में स्काससाइट नोड की स्थिति कुंजीपटल में किए गए बटन का टेक्स्ट बदलना जब आईओएस पर मेरा ऐप समाप्त हो जाता है तो NSUserDefaults को सहेजने का सही तरीका क्या है I एनीमेशन आरेखण UICollectionViewTransitionLayout के साथ कस्टम UICollectionViewLayoutAttributes गुणों को प्रक्षेपित करने के लिए कैसे करें ग्रैंड सेंट्रल डिस्पैच का उपयोग करना, मैं कैसे जांच सकता हूं कि पहले से ही एक ब्लॉक चल रहा है? सामग्री के आधार पर गतिशील UITableView सेल ऊँचाई उद्देश्य-सी – एनएसओबाइज एक्सेल, बनाम == तुलना? डेवलपर प्रोग्राम, आईओएस 5.1 के बिना डिवाइस पर आईओएस एप स्थापित करें स्केल आकार के अनुसार स्केल टेक्स्ट लेबल एक शब्दकोष का उपयोग करते हुए एकाधिक अन्य वर्णों द्वारा NSString में एकाधिक वर्णों को बदलना कैसे UIScrollView या UITableView का उपयोग कर GridView को डिज़ाइन और बनाएं कैसे jailbroken डिवाइस पर GSEvent के साथ बहु स्पर्श को अनुकरण करने के लिए? WKWebView में एप्लिकेशन कैशे सक्षम करें आईओएस विकास: आईपैड मोड में एक सार्वभौमिक ऐप चलाने से मैं आईपैड को कैसे रोक सकता हूं?

WKWebView स्थानीय दस्तावेज़ फ़ोल्डर से संसाधन लोड करता है I

मेरे स्विफ्ट आईओएस एप में, मैं रिमोट सर्वर से कुछ डायनामिक एचटीएमएल पेज डाउनलोड करना चाहता हूं, डॉक्यूमेंट डायरेक्टरी में सेव करना चाहता हूं, और इन पेजों को डॉक्युमेंट डायरेक्टरी से प्रदर्शित करना चाहता हूं।

मैं पृष्ठ को लोड करने के लिए इसका उपयोग कर रहा था

var appWebView:WKWebView? ... appWebView!.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: htmlPath))) 

इम्यूलेटर पर सब कुछ काम करता है, लेकिन जब मैं असली फोन पर चले गए, यह सिर्फ एक खाली पृष्ठ दिखाया मैं फिर सफारी का उपयोग कर ऐप से कनेक्ट करता हूं, और पाया कि उसने "संसाधन लोड करने में विफल" के बारे में शिकायत की

तब मैंने पहली बार htmlPath पर पृष्ठ की सामग्री को पढ़ने का htmlPath , फिर उपयोग करें

 appWebView!.loadHTMLString() 

पृष्ठ को लोड करने के लिए यह तब काम करता है जब html पृष्ठ सरल होता है। लेकिन अगर HTML संदर्भ कुछ और, अर्थात दस्तावेज निर्देशिका में एक जावास्क्रिप्ट भी है (एक पूर्ण पथ के साथ <script src="file:////var/mobile/Containers/Data/Application/762035C9-2BF2-4CDD-B5B1-574A0E2B0728/Documents/xxxxx.js"> ), यह लोड करने में विफल हो जाएगा।

किसी को भी पता है कि यह क्यों होता है, और इसे कैसे हल करें?

और जानकारी:

  • XCode संस्करण: 7.3.1
  • परिनियोजन लक्ष्य: 8.1 (मैंने 9.3 का उपयोग करने की कोशिश की, इससे भी मदद नहीं मिली)

Solutions Collecting From Web of "WKWebView स्थानीय दस्तावेज़ फ़ोल्डर से संसाधन लोड करता है I"

यह मेरा एक प्रोजेक्ट (आईओएस 10, स्विफ्ट 3) में स्थानीय फाइलों को लोड करने के लिए उपयोग किए जाने का एक सरलीकृत संस्करण है। मैंने अपने कोड को अपडेट किया है (7.5.2017) आईओएस 10.3.1 और आईफोन 7+ पर परीक्षण के बाद, जैसा कि रघुराम और फॉक्स 5150 द्वारा टिप्पणी में अनुरोध किया गया है

मैंने एक पूरी तरह से नई परियोजना बनाई है और यह फ़ोल्डर संरचना है: यहां छवि विवरण दर्ज करें

WebView.loadFileURL के साथ संस्करण 1 ()

ViewController.swift

 import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { override func viewDidLoad() { super.viewDidLoad() let webView = WKWebView() let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") let htmlUrl = URL(fileURLWithPath: htmlPath!, isDirectory: false) webView.loadFileURL(htmlUrl, allowingReadAccessTo: htmlUrl) webView.navigationDelegate = self view = webView } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 

WebView.loadHTMLString के साथ संस्करण 2 ()

ViewController.swift

 import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { override func viewDidLoad() { super.viewDidLoad() let webView = WKWebView() let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") let folderPath = Bundle.main.bundlePath let baseUrl = URL(fileURLWithPath: folderPath, isDirectory: true) do { let htmlString = try NSString(contentsOfFile: htmlPath!, encoding: String.Encoding.utf8.rawValue) webView.loadHTMLString(htmlString as String, baseURL: baseUrl) } catch { // catch error } webView.navigationDelegate = self view = webView } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 

गोटोचा की तलाश है:

  • सुनिश्चित करें कि आपकी स्थानीय एचटीएमएल / जेएस / सीएसएस फाइल परियोजना में हैं – लक्ष्य -> ​​निर्माण चरण -> कॉपी बंडल संसाधन
  • सुनिश्चित करें कि आपकी एचटीएमएल फाइल सापेक्ष पथ जैसे css/styles.css संदर्भित नहीं करती है क्योंकि आईओएस आपकी फ़ाइल संरचना को समतल कर देगा और styles.css समान स्तर पर होगी, ताकि index.html लिखकर <link rel="stylesheet" type="text/css" href="styles.css"> इसके बजाय <link rel="stylesheet" type="text/css" href="styles.css">

2 संस्करणों को देखते हुए और प्राप्त किया गया यहां परियोजना से मेरी एचटीएमएल / सीएसएस फाइलें हैं:

वेब / index.html

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Offline WebKit</title> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <h1 id="webkit-h1">Offline WebKit!</h1> </body> </html> 

वेब / सीएसएस / styles.css

 #webkit-h1 { font-size: 80px; color: lightblue; } 

अगर कोई GitHub नमूना प्रोजेक्ट चाहता है, तो मुझे टिप्पणी अनुभाग में बताएं और मैं इसे अपलोड कर दूंगा।

इस समाधान ने मुझे मदद की:

 [configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"]; 

यह अच्छी तरह से काम करता है (स्विफ्ट 3, Xcode 8):

 import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func loadView() { webView = WKWebView() webView.navigationDelegate = self view = webView } override func viewDidLoad() { super.viewDidLoad() if let url = Bundle.main.url(forResource: "file", withExtension: "txt") { do { let contents = try String(contentsOfFile: url.path) webView.loadHTMLString(contents, baseURL: url.deletingLastPathComponent()) } catch { print("Could not load the HTML string.") } } } }