因为最近项目需要跨平台,在网上找到这个demo拿来用。
首先简单说一下跨平台。
由于现在很多产品都是有安卓版跟ios版,就意味着同一样东西要出两套,由两组人去完成,不仅增加了开发成本,也大大加剧了维护成本。聪明的coder想出了跨平台的思路,用html写页面,分别用webview(ios),(安卓)来加载,对某些html无法调用的硬件,通过双方的交互来实现方法的互调和传值。这个过程就是跨平台。
下面来说一下WebViewJavascriptBridge在ios端怎么样使用。
首先确保一份已经配好功能的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."];
暂时总结了这么些。下面有demo大家可以自己看看。有什么不懂的欢迎留言。
相关推荐
使用WebViewJavascriptBridge 实现iOS与h5交互.没什么可说的,demo里面的东西直接拿过去用就可以
ios软件设计说明书
iOS NSData 详细使用说明文档。
学习如何使用WebViewJavascriptBridge,配有详细的使用教程,讲基本实现原理及如何在JS端、iOS端接入 WebViewJavascriptBridge是支持到iOS6之前的版本的,用于支持native的iOS与javascript交互。如果需要支持到iOS6...
iOS UISwitch 详细使用说明文档
本篇讲讲WebViewJavascriptBridge的基本原理及详细讲讲如何去使用,包括iOS端的使用和JS端的使用。 经过多番百度、Google,发现WebViewJavascriptBridge的资源讲解不是翻译官方文档就是直接说官方提供的demo。但是...
和IOS marcuswestin/WebViewJavascriptBridge 一样的使用方法,可共用一套JS代码。 同时也在此之上做了加强,参考了Cordova源码的模块管理,方便把各种不同的原生功能封装成独立的模块并统一管理。具体请看下面的 ...
重要通知 由于DSBridge(笔者开发的一个更强大的跨平台JavaScript Bridge... and It is a mirror of marcuswestin/WebViewJavascriptBridge (object-c) and Lision/WKWebViewJavascriptBridge(swift) which supports IOS
iOS UIScrollView 详细使用说明
IOS-使用ijkplayer简单demo.zip
iOS UITouch 文档详细使用说明
这里集合了iOS 10 UserNotifications 的使用,通知打开图片,视频等
在IOS中实现Toast功能,可横屏,适合iPad中使用
本demo是ApplePay的使用详细说明,后续会增加新的内容。喜欢的欢迎github star一个,具体用法请前往github,有问题可以联系我。 github: https://github.com/shenguanhua/GHApplePay csdn博客地址:...
location驱动ios12.4 ios12.3 ios12.2 ios12.1 ios12.0 ios11.0 ios11.4
一个蓝牙手环的Demo,详细说明如何使用ios的蓝牙库来进行蓝牙的开发。
iOS UIColor 详细的使用文档说明
iOS SDK API使用说明.docx
IOS布局控件使用自定义UITableViewCell 欢迎界面后台获取功能等项目设计IOS源码合集: ios三级展开列表TQMultistageTableView_10802 ios个性化每个tableMHNibTableViewCell ios分页的滚动视图 IOS可扩展底部TablBar ...