序言
1、iOS开发中移动端和h5交互处理已经是很常用的手段,在前面的交互处理2中我们已经详细的讲过用代理拦截的方式处理h5的响应事件,这里不做更多的说明;我们今天介绍另外一种方法:WKScriptMessageHandler协议实现。
实现原理
1、JS与iOS约定好jsToOc方法,用作JS在调用iOS时的方法;
2、iOS使用WKUserContentController的-addScriptMessageHandler:name:方法监听name为jsToOc的消息;
3、JS通过window.webkit.messageHandlers.jsToOc.postMessage()的方式对jsToOc方法发送消息;
4、iOS在-userContentController:didReceiveScriptMessage:方法中读取name为jsToOc的消息数据message.body。
注册方法
说明
这里需要注意以下几点说明:
1、[userContentController addScriptMessageHandler:self name:@"jsToOc"]会引起循环引用问题。一般来说,在合适的时机removeScriptMessageHandler可以解决此问题。比如:- (void)viewDidDisappear:(BOOL)animated;
2、也可以用另外一种方式解决比如:
//自定义的WKScriptMessageHandler 是为了解决内存不释放的问题
WeakWebViewScriptMessageDelegate *weakScriptMessageDelegate = [[WeakWebViewScriptMessageDelegate alloc] initWithDelegate:self];
然后在dealloc里面移除方法并释放对象;
3、需要适配到iOS9一下系统版本,则应该设置WKWebViewConfiguration中的config.applicationNameForUserAgent为ChinaDailyForiPad;
网友评论