iOS 交互h5 - WKWebView
发布日期:2021-10-22 18:11:12 浏览次数:7 分类:技术文章

本文共 2907 字,大约阅读时间需要 9 分钟。

 

       众所周知,UIWebView存在内存问题,也就是当加载一个UIWebView时,内存会一直上升趋势无法得到释放。这样在使用UIWebView进行h5交互开发时会有很大的问题。

因而苹果增加了一个新的类WKWebView,WKWebView速度更快、占用内存低。当然也有一些问题,比如说在缓存问题上会有很多的坑,不想UIWebView一样很容易进行缓存。

下面简单研究一下WKWebView交互h5的方式。()

 


 

初始化WKWebView,并添加JS端需要调用的OC端的方法名

 

self.wkWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height/2) configuration:config];    [self.view addSubview:self.wkWebView];            NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];    NSURL *baseURL = [[NSBundle mainBundle] bundleURL];    [self.wkWebView loadHTMLString:[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil] baseURL:baseURL];        WKUserContentController *userCC = config.userContentController;    //JS调用OC 添加处理脚本    [userCC addScriptMessageHandler:self name:@"showMobile"];    [userCC addScriptMessageHandler:self name:@"showName"];    [userCC addScriptMessageHandler:self name:@"showSendMsg"];

 

OC端调用JS端方法:

 

if (!self.wkWebView.loading) {        if (sender.tag == 123) {            [self.wkWebView evaluateJavaScript:@"alertMobile()" completionHandler:^(id _Nullable response, NSError * _Nullable error) {                //TODO                NSLog(@"%@ %@",response,error);            }];        }                if (sender.tag == 234) {            [self.wkWebView evaluateJavaScript:@"alertName('小红')" completionHandler:nil];        }                if (sender.tag == 345) {            [self.wkWebView evaluateJavaScript:@"alertSendMsg('18870707070','周末爬山真是件愉快的事情')" completionHandler:nil];        }    } else {        NSLog(@"the view is currently loading content");    }

 

OC端供JS端调用的方法:

 

#pragma mark - WKScriptMessageHandler- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {    NSLog(@"%@",NSStringFromSelector(_cmd));    NSLog(@"%@",message.body);    if ([message.name isEqualToString:@"showMobile"]) {        [self showMsg:@"我是下面的小红 手机号是:18870707070"];    }        if ([message.name isEqualToString:@"showName"]) {        NSString *info = [NSString stringWithFormat:@"你好 %@, 很高兴见到你",message.body];        [self showMsg:info];    }        if ([message.name isEqualToString:@"showSendMsg"]) {        NSArray *array = message.body;        NSString *info = [NSString stringWithFormat:@"这是我的手机号: %@, %@ !!",array.firstObject,array.lastObject];        [self showMsg:info];    }}

 

网页端代码:

    
小黄

 

转载于:https://www.cnblogs.com/sunjianfei/p/7055241.html

转载地址:https://blog.csdn.net/weixin_30402343/article/details/94804461 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Ubuntu12.04 亮度调节和保存
下一篇:cookie与session 组件

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月07日 00时31分53秒