您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 文山分类信息网,免费分类信息发布

iOS与JS交互详解

2025/6/12 2:02:38发布6次查看
这次给大家带来ios与js交互的三个需要注意点的点,ios与js交互的注意事项有哪些,下面给大家举三个经典案列,我们一起来看一下。
1使用cocoapods导入webviewjavascriptbridge
这里我们使用最新版本
pod 'webviewjavascriptbridge', '~> 5.0.5'
导入工程的shell命令这里我就不多说了。
2. 编写oc代码(先写oc代码还是js代码都可)
引入头文件#import webviewjavascriptbridge.h
创建两个属性
@property (nonatomic, strong) uiwebview * webview;@property webviewjavascriptbridge* bridge; 初始化webview和webviewjavascriptbridge self.webview = [[uiwebview alloc] initwithframe:self.view.bounds]; [self.view addsubview:self.webview]; /**开启日志*/ [webviewjavascriptbridge enablelogging]; /**初始化-webviewjavascriptbridge*/ self.bridge = [webviewjavascriptbridge bridgeforwebview:self.webview]; [self.bridge setwebviewdelegate:self];
3. js调用oc代码
notice:我们在写这里的调用代码之前,我们一定要知道前端js函数里一定要知道函数名称。这个很重要。
这里我们假设前端有个函数名称是callviewload他要调用oc的代码给返回来的数据最列表处理。
看看oc的代码如何处理js发来的请求
[self.bridge registerhandler:@"callviewload" handler:^(id data, wvjbresponsecallback responsecallback) { nslog(@"前端发送的数据 %@", data); if (responsecallback) { // respons给前端的数据
responsecallback(@{@"uname": @"洲洲哥的技术博客",@"urls":@"http://www.jianshu.com/users/1338683b18e0/latest_articles"});
}
}];
来说说这里的参数说明
handler的回调中有data、responsecallback两个参数
这其中的data是前端js函数给后端传送的数据:比如在登陆的时候,就要把账户信息和用户密码传入后端,给后端处理。这里的data就是存放着两个数据的
responsecallback是我们要给前端js函数返回的数据内容,前端给我们传入了用户名和密码,我们调用接口之后返回登陆结果给前端就是要用他了。但是以字典形式返回。
到这里我们的js调用oc,oc端的代码已经说完了。
前端js代码的写法
html的代码写法
<html> <head> <title>oc和js互动web</title> <script> /*这段代码是固定的,必须要放到js中*/ function setupwebviewjavascriptbridge(callback) { if (window.webviewjavascriptbridge) { return callback(webviewjavascriptbridge); } if (window.wvjbcallbacks) { return window.wvjbcallbacks.push(callback); } window.wvjbcallbacks = [callback]; var wvjbiframe = document.createelement('iframe'); wvjbiframe.style.display = 'none'; wvjbiframe.src = 'wvjbscheme://bridge_loaded'; document.documentelement.appendchild(wvjbiframe); settimeout(function() { document.documentelement.removechild(wvjbiframe) }, 0) } /**与oc交互的所有js方法都要放在此处注册,才能调用通过js调用oc或者让oc调用这里的js*/ setupwebviewjavascriptbridge(function(bridge) { /**oc调用js代码不含参数*/ bridge.registerhandler('userlogin', function() { alert('userlogin') }) /**oc调用js代码含参数*/ bridge.registerhandler('userlogininfo', function(data, responsecallback) { responsecallback({'userid': '123456', 'names': 'zhouzhougedeboke'}) }) // **********************************js调用oc bridge.callhandler('callviewload', {'blogurl': 'http://www.henishuo.com'}, function(responsecallback){ alert(responsecallback.uname) }) }) </script> </head> <body> <button style = "background: yellow; height: 50px; width: 100px;">js/oc互动</button> </body> </html>
我们这里主要看html代码中的callviewload函数。这个就是他调用oc函数证明。这里的callhandler的里的参数可以看看
第一个参数callviewload :函数名
{'blogurl': 'http://www.henishuo.com'}:表示给oc代码传入的数据
function(responsecallback) : 接受成功返回的js函数这里可以在后端成功返回之后在这里我们可以监听到。和oc的block类似。
这个函数的说明:js给objc提供公开的api,objc端通过注册,就可以在js端调用此api时,得到回调。objc端可以在处理完成后,反馈给js,这样写就是在载入页面完成时就先调用。
notice:这里只说了js调用oc代码的声明。间间单单的介绍了一个方法的使用。但是我们也看到了再写前端js函数的时候,有那么一大坨代码是必须要写的。不然是不会产生联合效果的。
相信看了这些案例你已经掌握了方法,更多精彩请关注其它相关文章!
相关阅读:
es6 module语法加载 import export.
image与view标签上下有空隙的解决方法
为什么slot都是用在子组件
实现瀑布流布局的俩种方法
以上就是ios与js交互详解的详细内容。
文山分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product