WKWebView与本地文件
我正在用本地文件testingWKWebView,该文件在模拟器中工作,但在设备中不起作用
@interface EDPresentationViewController ()<WKNavigationDelegate,WKScriptMessageHandler> @property(nonatomic,strong)WKWebView *webView; @property(nonatomic,strong)EDPresentationController *presentationController; @end @implementation EDPresentationViewController -(void)viewDidLoad { [super viewDidLoad]; self.presentationController = [[EDPresentationController alloc]init]; WKWebViewConfiguration *webConfiguration = [[WKWebViewConfiguration alloc]init]; self.webView = [[WKWebView alloc]initWithFrame:self.view.frame configuration:webConfiguration]; NSURL *presentationFolder = [self.presentationController url]; NSURLRequest *request = [NSURLRequest requestWithURL:presentationFolder]; [self.webView loadRequest:request]; }
我授予从以下url:
NSURL *presentationFolder = [self.presentationController url];
是好的,因为我testing了与UIWebview相同的代码,并工作!
我总是得到相同的错误:
Could not create a sandbox extension for '/'
这不是工作,我想这将在迅速的Objective-C中工作
iOS Webkit不能在设备上工作,但是可以在模拟器上运行
任何想法将不胜感激,谢谢
更新2-12-2014
我发现这可能是iOS 8.1中的一个bug,它可能在8.2中被修复
https://devforums.apple.com/thread/247777?start=25&tstart=0
我已经testing将文件移动到临时文件夹,我没有得到任何错误,但webView只是空的。
我用UIWebViewtesting了相同的代码(临时文件夹),并且工作正常!
另外,我试过这个:
https://stackoverflow.com/a/26054170/426180
正如我可以发现,这是有效的,因为CSS和JavaScript被embedded在HTML中。
尝试XWebView有一个非常小的embedded式http服务器。 它比GCDWebServer小得多。 loadFileURL:allowsReadAccessToURL方法是通过扩展添加的,所以你不知道服务器。
这工作就像一个魅力…
@interface ViewController () <WKScriptMessageHandler, WKNavigationDelegate>
…
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; WKUserContentController *controller = [[WKUserContentController alloc] init]; configuration.userContentController = controller; [configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"]; self.webView = [[WKWebView alloc] initWithFrame:[UIScreen mainScreen].bounds configuration:configuration]; self.webView.navigationDelegate = self; // Also if you'd have bouncing problem self.webView.scrollView.bounces = false; self.webView.scrollView.alwaysBounceVertical = false; [self.view addSubview:self.webView]; NSString* productURL = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"htmlapp/home.html"]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:productURL]]; [self.webView loadRequest:request];