美文网首页
IOS里嵌套h5,h5返回app的操作

IOS里嵌套h5,h5返回app的操作

作者: 世玉茹花 | 来源:发表于2019-07-08 13:43 被阅读0次

    JS调用OC

    此时就要用到WKScriptMessageHandler了

    //首先.m中加入属性
    @property (nonatomic ,strong)WKUserContentController * userCC;

    //1 遵循WKScriptMessageHandler协议
    //2 初始化
    WKWebViewConfiguration * config = [[WKWebViewConfiguration alloc]init];

    self.wkWebViw = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:config];

    [self.wkWebViw loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.webPageUrl]]];

    [self.view addSubview:self.wkWebViw];

    self.userCC = config.userContentController;

    [self.userCC addScriptMessageHandler:self name:@"callOSX"];

    //此处相当于监听了JS中callFunction这个方法

    [self.userCC addScriptMessageHandler:self name:@"callFunction"];

    //当JS发出callFunction这个方法指令的时候, WKScriptMessageHandler的协议方法中我们就会收到这个消息

    pragma mark WKScriptMessageHandler delegate

    • (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
      {
      //这个回调里面, message.name代表方法名(‘本例为 callFunction’), message.body代表JS给我们传过来的参数

    }

    //最后, VC销毁的时候一定要把handler移除
    -(void)dealloc
    {
    [_userContentController removeScriptMessageHandlerForName:@"callFunction"];
    }

    //对应的JS代码

    <button onclick="buttonClick('温馨提示')">点我</button>

    <script>
    function buttonClick(string){
    //JS调用OC, 格式如下
    //(window.webkit.messageHandlers.Method_Name.postMessage(parameterToOC))
    window.webkit.messageHandlers.callFunction.postMessage(string)
    }
    </script>

    相关文章

      网友评论

          本文标题:IOS里嵌套h5,h5返回app的操作

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