欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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
                                                        });
    }
}