Intereting Posts
मैं अपने आईओएस एप में एक फाइल कैसे आयात और पढ़ूंगा? कैसे मेरे ऐप से एक आउटगोइंग कॉल करते हैं? Xamarin.फॉर्म आईओएस UIKit.UIImage त्रुटि एक्सकोड 8 UIButtons बाधाओं के साथ प्रदर्शित नहीं XCode एप्लिकेशन लोडर – त्रुटि आईटीएमएस -9000 अमान्य प्रोविजनिंग प्रोफाइल एसएएस यूआरएल से नीलामी ब्लॉब स्टोरेज पर अपलोड करने से 404 का स्टेटस वापस आता है आईओएस UIWebView में JavaScript का मूल्यांकन करते समय "सिंटेक्स त्रुटि: अनपेक्षित EOF" मैं नेविगेशन पट्टी पर "जोड़ें" बटन कैसे बना सकता हूं? दृश्य स्टूडियो के लिए ज़ामारी सिम्युलेटर सूची नहीं दिखा रहा है आईओएस: com.apple.root.default-overcommit- प्राथमिकता IOS के लिए उद्देश्य-सी में क्षेत्र को स्नैप के साथ खींचें और ड्रॉप कैसे करें फ़ायरवॉल के पीछे एप्लिकेशन लोडर का उपयोग करके आईटियंस कनेक्ट करें आईओएस पर नया फोन नंबर प्री-भरे हुए व्हाट्सएप खोलें आईओएस: कंटेनर वीव का उपयोग कर गतिशील सामग्री के साथ UIScrollView (चरण दर चरण) NSFetchedResultsController के माध्यम से दूरी के अनुसार क्रमबद्ध कोर डेटा में स्थान?

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.") } } } }