美文网首页工作生活iOS
iOS端加载本地Web资源方案

iOS端加载本地Web资源方案

作者: 代码侯 | 来源:发表于2019-07-02 14:49 被阅读0次

实现思路:

在iOS端启动一个本地HTTP服务器,将Web资源路径设置为服务器的根目录,使用webview访问本地服务器即可。

具体步骤:

需要的资源:
1.iOS端通过cocoapods集成CVCocoaHTTPServeriOS。
2.将静态打包后的资源文件拖入项iOS目中,添加时选择Create floder references方式

添加后的样式

以上,所有资源已备齐,接下来是关键代码。
关键代码:
1.启动服务器

#import <CVCocoaHTTPServeriOS/CVCocoaHTTPServeriOS-umbrella.h>

- (void)startServer{
    HTTPServer *server = [[HTTPServer alloc] init];
    [server setType:@"_http.tcp"];
    NSString * localPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"webpack"];
    [server setDocumentRoot:localPath];
    NSError *error;
    NSString *portStr;
    if ([server start:&error]) {
        UInt16 port = [self.localHttpServer listeningPort];
        portStr = [NSNumber numberWithInt:port].stringValue;
        NSLog(@"服务器启动成功-->端口号:%@",portStr);
    } else {
        NSLog(@"服务器启动出错-->%@",error);
    }
}

2.webview加载本地web资源

- (void)setWebview{
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
    self.webView.UIDelegate = self;
    self.webView.navigationDelegate = self;
    [self.view addSubview:self.webView];
}

- (void)loadLocalHttpServer{
    NSString *str = [NSString stringWithFormat:@"http://localhost:%@", port];
    NSURL *url = [NSURL URLWithString:str];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
}

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
     NSLog(@"加载完成");
}

Demo地址

https://github.com/alectian/loadLocalWebResource

相关文章

  • iOS端加载本地Web资源方案

    实现思路: 在iOS端启动一个本地HTTP服务器,将Web资源路径设置为服务器的根目录,使用webview访问本地...

  • Flutter WebView加载本地html的问题

    目前项目中使用webview_flutter0.3.9,安卓端加载本地html没有问题,ios端无法加载本地htm...

  • 本地资源加载方案

    replugin资源加载方案 基本原理: 通过调用PackageManager中getPackageArchive...

  • 2019-03-22

    iOS WKWebView 远端h5优先加载本地资源 前言:UIWebView调用远端h5页面,优先加载本地图片、...

  • Flutter开发-加载本地资源(图片)

    Assests Flutter加载本地资源文件需要将本地资源放入assets中,assets在iOS中就是一个fo...

  • h5缓存技术研究

    拦截原理 开发步骤 先使用本地的资源 不走加载 , 大量阅读业界秒开方案 做笔记 核心点记录 ios 和安卓出de...

  • Mac开发 - NSBundle 加载资源文件

    熟悉iOS开发的都知道加载资源直接就可以通过pathForResource:加载资源文件, 但是在Mac端加载出来...

  • iOS加载本地html文件

    iOS读取本地html文件首先创建一个web然后将html文件加载到创建的web中,代码如下:

  • WKWebView一些坑点收录

    iOS12.2及以上,同一个webView先加载直联页面,再加载本地页面时页面会白屏。解决方案:加载本地页面前先加...

  • flutter学习笔记(二)

    本地访问-MethodChannel 本地访问是指跨平台的解决方案,有访问本地android或者ios资源的能力,...

网友评论

    本文标题:iOS端加载本地Web资源方案

    本文链接:https://www.haomeiwen.com/subject/jdezcctx.html