iOS:WKWebView(19-01-25更)
程序员文章站
2022-04-11 20:13:06
以前用得不多,先开一篇,以后有遇到再补充。 1、JS 调用 OC 1-1)、添加 和 JS 约定的消息名 1-2)、得到 JS 消息 1-3)、移除 补充:这步最为重要,如果不移除,将得不到释放,比如H5的音乐在退出该VC(dealloc) 还会一直响。 附:JS代码 ......
以前用得不多,先开一篇,以后有遇到再补充。
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
});
}
}