iOS 加载本地Html+JS交互排坑指南
2019-01-25 本文已影响62人
圆脸黑猫警长
话不多说,直接上DSBridge进行js交互处理库,方便快捷。
pod 'dsBridge'即可,内置有个DWKWebView,继承于系统的WKWebView,所以使用没什么特别。
0.前置初始化设置(必须)
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
[config.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
DWKWebView *webView = [[DWKWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) configuration:config];
加载本地html会有很多权限限制(跨域问题),此处只是设置了文件读取权限(如果是启动的server则会认为是server内部的访问,则不跨域即不用设置),不设置则会有权限问题。其他更多设置自行去看
1.是否需要本地启用server?
这个是根据具体的业务需要定的。
如果需要,推荐使用GCDWebServer,本文不多深究此方法
如不需要,继续往下看。
2.如何加载本地HTML?
HTML来源可能有两种,一种是直接打包在项目中的,一种下载下来的。
2.1启server的方式
使用的URL前缀http://127.0.0.1:9998/ 后面跟文件路径,9998 为启动server时指定的端口
[webView loadRequest:[NSURLRequest requestWithURL:url]];
2.2普通方式
NSString *fullPath = @"AAA/BBB/CCC/index.html";
NSString *fullPathDic = @"AAA/BBB/CCC";
NSURL *url = [NSURL fileURLWithPath:fullPath];
NSURL *urlDic = [NSURL fileURLWithPath:fullPathDic];
[webView loadFileURL:url allowingReadAccessToURL:urlDic];
注意:这里的两个参数第一个是html,第二个是所在路径