以前用得不多,先开一篇,以后有遇到再补充。
1、JS 调用 OC
1-1)、添加 和 JS 约定的消息名
[self.userContentController addScriptMessageHandler:self name:@"约定的消息名"];
1-2)、得到 JS 消息
#pragma mark - WKScriptMessageHandler - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { if ([message.name isEqualToString:@"约定的消息名"]) { NSLog(@"当前的消息为:%@", message.body[@"约定的key"]); } }
1-3)、移除
- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.userContentController removeScriptMessageHandlerForName:@"约定的消息名"]; }
补充:这步最为重要,如果不移除,将得不到释放,比如H5的音乐在退出该VC(dealloc) 还会一直响。
附:JS代码
function isAndroid(argument) { var u = navigator.userAgent; var flag = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 return flag; } function isIOS(argument) { var u = navigator.userAgent; var flag = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 return flag; } function share(要传的value) { if(isAndroid()){ } else if(isIOS()) { window.webkit.messageHandlers.约定的消息名.postMessage({ "要传的key": 要传的value }); } }
参与评论
手机查看
返回顶部