一、什么是MessageHandler
MessageHandler是WKWebView用来处理原生与JS交互的消息处理机制。也即是说:JS要想调用iOS原生的方法,可以采用MessageHandler。
二、怎么注入js的方法
WKWebView在创建的时候有一个属性:WKWebViewConfiguration,这个configuration有个WKUserContentController类型的属性:userContentController。在userContentController中我们是通过:addScriptMessageHandler:name方法来注入js的方法的。
- (void)addScriptMessageHandler:(id<WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;
参数:scriptMessageHandler是userContentController的代理对象;
参数:name是js方法名。
可以多次调用此方法或者说注入多个MessageHandle来注入多个js的方法。
三、js如何调用OC的方法
WKWebView通过实现WKScriptMessageHandler代理协议来调用OC的方法。此协议只有一个代理方法。
- (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message
API文档是这么说的:
<