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

2019-07-08  本文已影响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

}

//最后, 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>

上一篇 下一篇

猜你喜欢

热点阅读