美文网首页
iOS与H5混合开发

iOS与H5混合开发

作者: percivals | 来源:发表于2020-01-17 14:33 被阅读0次

    iOS编程中,H5混合开发一般会视同UIWebView或者WKWebview完成网页加载,针对这两者,有以下几种交互方式

    1.WebViewJavascriptBridge 库(适用于UIWebView及WKWebview)

    下载第三方库,并完成集成

    与H5协商方法名,并定义数据交互规则

    _bridge = [WebViewJavascriptBridge bridgeForWebView:self.wkWebView];
    
        [_bridge setWebViewDelegate:self];
        
        //"iOSBridge"为协商确定的方法名
        [_bridge registerHandler:@"iOSBridge" handler:^(id data, WVJBResponseCallback responseCallback) {
        
        }];
    

    2.在webview代理方法中监听url,进行字段分析获取想要的数据 (适用于UIWebView及WKWebview)

    WKWebview中

    - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
    

    对webView.URL.absoluteString进行解析

    此方法较为简单,适用场景不广,用于可直接通过网址信息字段判断处理逻辑的地方

    3.webview自带交互方法

    WKWebview中,通过注册监听完成交互

    //1.注册
    [self.wkWebView.configuration.userContentController addScriptMessageHandler:self name:@"back"];
    
    //2.监听处理
    - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
    {
        if ([message.name isEqualToString:@"back"]) {
            NSDictionary * messageDict = (NSDictionary *)message.body;
        }
    }
    
    //3.释放
    [self.wkWebView.configuration.userContentController removeScriptMessageHandlerForName:@"back"];
    

    UIWebview中,通过jsContext完成交互

    //获取JS代码的执行环境/上下文/作用域
        self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    //! 在context注册iOSDelegate对象为self
        self.jsContext[@"mesc"] = self;//注意循环引用问题
        self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {
            context.exception = exceptionValue;
            NSLog(@"异常信息:%@", exceptionValue);
        };
        self.jsContext[@"console"][@"log"] = ^(JSValue * msg) {
            NSLog(@"H5  log : %@", msg);
        };
    

    相关文章

      网友评论

          本文标题:iOS与H5混合开发

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