美文网首页
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