目前很多项目都有oc原生于h5 js 交互功能,很多萌新可能会很迷茫无从下手,其实很简单,oc本身就有提供api。
首先我们来了解下 WKWebView 这个类。这篇文章是我看过的很详细介绍https://www.jianshu.com/p/833448c30d70大家可以去看看。这里就不啰嗦了。
直接上干货:
在使用wkwebview前要
#import <WebKit/WebKit.h>
@interface ViewController ()<WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler>
其次是要确定js中要交互的方法名之后在viewDidLoad方法中对该方法名做监听
/此处相当于监听了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给我们传过来的参数
NSLog(@"方法:%@ 账号密码:%@",message.name,message.body);
}
最后, VC销毁的时候一定要把handler移除
-(void)dealloc
{
[_userContentController removeScriptMessageHandlerForName:@"callFunction"];
}
下载链接demo 下载链接