问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

wkwebviewjavascriptbridge 在oc端怎么用

发布网友 发布时间:2022-05-02 00:59

我来回答

2个回答

热心网友 时间:2022-04-21 08:25

首先确保一份已经配好功能的html文件。(html还在学习阶段,暂时就不卖弄了。。。)
1.初始化一个webview(viewdidload)
UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];

2.将此webview与WebViewJavascriptBridge关联(viewdidload)
if (_bridge) { return; }

[WebViewJavascriptBridge enableLogging];

_bridge = [WebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"ObjC received message from JS: %@", data);

responseCallback(@"Response for message from ObjC");
}];

ps:此时webview就与js搭上桥了。下面就是方法的互调和参数的互传。
(1) js调oc方法(可以通过data给oc方法传值,使用responseCallback将值再返回给js)
[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"testObjcCallback called: %@", data);
responseCallback(@"Response from testObjcCallback");
}];

这里注意testObjcCallback这个方法的标示。html那边的命名要跟ios这边相同,才能调到这个方法。当然这个名字可以两边商量着自定义。简单明确即可。
(2)oc调js方法(通过data可以传值,通过 response可以接受js那边的返回值 )
id data = @{ @"greetingFromObjC": @"Hi there, JS!" };
[_bridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
NSLog(@"testJavascriptHandler responded: %@", response);
}];

注意这里的 testJavascriptHandler也是个方法标示。
(3)oc给js传值(通过 response接受返回值 )
[_bridge send:@"A string sent from ObjC to JS" responseCallback:^(id response) {
NSLog(@"sendMessage got response: %@", response);
}];

(4)oc给js传值(无返回值)
[_bridge send:@"A string sent from ObjC after Webview has loaded."];
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机玻璃硬度是多少合适 ips屏幕硬度怎么样 手机硬度是什么意思? 2024年拼多多春节发货时间规定是什么?过年还要48小时发货吗? e元素e8100无线鼠标怎么使用 E元素X-8100靠谱吗?可以用几年? E元素X-8100现在有几种配色,哪一种配色好呢? E元素X-8100用的是什么色的轴,适合玩游戏吗? 浙c是哪个城市 浙c是哪里 榻榻米软包怎么安装 wkwebview的configuration 怎么存储 如何整合uiwebview和wkwebview ios开发怎么在wkwebview上添加内容 如何使用wkwebview来替代uiwebview 都是什么保险啊,都包括什么? 盈余公积与资本公积的分配比例和利润比例是多少 ios wkwebview要不要清理缓存 什么是保险?定义、分类与保险合同 wkwebview使用时包含什么头文件 什么是保险保险的作用是什么保险有哪些基本业务 ios wkwebview 是否有缓存 谁见过血玉?血玉是怎么样形成的?它有着什么样的奇异功能? WKWebView的缓存问题以及如何正确清理缓存 iOS 怎么使用WKWebView加载PDF 去黑边 车贷36期还了33期想提前还款可以吗? ios wkwebview加载不了library里的文件 什么是保险?保险是什么? 电力自动化系统集成 智能照明控制系统怎么接电灯 办理房产证的流程是怎么样的? 120开头 身份证是哪儿 天津 身份证的各区号 天津塘沽区的身份证号开头是多少 海淀区的身份证号码区段码多少 uiwebview和wkwebview的区别 122开头的身份证是哪个省的? 120622是哪的身份证? 身份证开头12是哪个省的? 幽门螺杆茵吃什么好 邮政储蓄银行晚上转帐有时间限制吗 昨天晚上11点向邮政储蓄银行转账怎么到现在还没有到账? 为什么晚上邮政网银不可以转账 邮政网银晚上跨行转账是从早上多少点开始晚上多少点结束 中国邮政银行晚上能不能转账 邮政晚上跨行转账可以及时到账吗 3593220231邮箱号全名邮箱号地址怎么写 我昨天晚上九点在邮政储蓄银行转账给别人,什么能到账 我买快10万的劳力士用支付宝绑定的银行卡能支付吗?不知道有限额吗? 注册163网易邮箱的姓名和昵称可不可以乱写呢?还是必须要填写自己真实的名字啊?一步步的怎么样填写, 邮储银行网银晚上10点之后跨行转账多长时间能到账