Objective-C与JS交互 —— WebViewJavascriptBridge

WebViewJavascriptBridge同时支持UIWeView和WKWebView,无论是JS调用OC还是OC调用JS,都可以正常传值和返回值;而且在页面加载时只要JS代码被运行就可以进行交互,是现在处理交互的主流做法。

  • 1.初始化webViewBridge
    _webViewBridge = [WKWebViewJavascriptBridge bridgeForWebView:self.webView];
    [_webViewBridge setWebViewDelegate:self];
  • 2.注册Native方法
#pragma mark – Private Methods

- (void)registLocationFunction {
    [_webViewBridge registerHandler:@"getLocation" handler:^(id data, WVJBResponseCallback responseCallback) {
        // 获取位置信息
        ···
        
        NSString *locationStr = @"广东省深圳市南山区高新南一道TCL大厦";
        // 将结果返回给js
        responseCallback(locationStr);
    }];
}
  • 3.JS调用OC
 function locationClick() {
                WebViewJavascriptBridge.callHandler('getLocation',null,function(response) {
                    alert(response);
                    document.getElementById("returnValue").value = response;
                });
            }
  • 4.OC调用JS
    [_webViewBridge callHandler:@"testJSFunction" data:@"一个字符串" responseCallback:^(id responseData) {
        NSLog(@"调用完JS后的回调:%@",responseData);
    }];
  • 5.JS响应OC调用
     setupWebViewJavascriptBridge(function(bridge) {
                 bridge.registerHandler('testJSFunction', function(data, responseCallback) {
                    alert('JS方法被调用:'+data);
                    responseCallback('js执行过了');
                 })
            })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:iOS 开发中,h5 和原生实现通信有多种方式, JSBridge 就是最常用的一种,各 JSBridge ...
    ShannonChenCHN阅读 8,563评论 11 63
  • 前言 Web 页面中的 JS 与 iOS Native 如何交互是每个 iOS 猿必须掌握的技能。而说到 Nati...
    幽城88阅读 2,230评论 1 8
  • 最近整理了一下原生与H5之间的交互方式,简单的做个总结。OC端与JS的交互,大致有这几种:拦截协议、JavaScr...
    谈Xx阅读 31,181评论 41 75
  • 最近买了新的蓝牙耳机,写一下使用感受。我是个爱用耳机的人,上班或者在家里都喜欢带着耳机听东西,看视频。之前用有线的...
    wingwing1989阅读 247评论 2 0
  • 我从听过认真的雪就一直喜欢这个认真的歌手。 身边有很多朋友只是听说,薛之谦销声匿迹10年,在各行各业里辗转,狼狈谋...
    笺处阅读 586评论 0 1