美文网首页
IOS 使用 WebViewJavascriptBridge 进

IOS 使用 WebViewJavascriptBridge 进

作者: 丶逐渐 | 来源:发表于2017-11-22 16:05 被阅读12次

最近一个项目需要和H5进行交互,所以学习了下WebViewJavascriptBridge,只是简单使用,欢迎批评

另附上参考的大大们博客的网址写的很详细:

【http://blog.csdn.net/sinat_28585351/article/details/53522067】欢迎参考

1、WebViewJavascriptBridge是一个第三方,自己可以去GitHub下载,也可以使用CocoaPods,个人推荐CocoaPods,方便快捷,付上GitHub下载地址:https://github.com/marcuswestin/WebViewJavascriptBridge

2、有几点坑需要注意下,

需要后台配置些东西,安卓和iOS一定要区分开,

以下这两段这段代码是固定的,必须要放到js中 纠结了好半天😖

-------------Android使用------------

function setupWebViewJavascriptBridge(callback) {

if (window.WebViewJavascriptBridge) {

callback(WebViewJavascriptBridge)

} else {

document.addEventListener(

'WebViewJavascriptBridgeReady'

, function() {

callback(WebViewJavascriptBridge)

},

false

);

}

------------iOS使用--------------

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)

}

3、在需要使用WebViewJavascriptBridge的类文件中引入头文件WebViewJavascriptBridge.h

添加两个属性:

@property (nonatomic,strong)UIWebView *webView;

@property (nonatomic,strong)JSContext *context;

遵守UIWebViewDelegate协议

4、初始化webView

webView = [[UIWebView alloc] initWithFrame:cell.bounds];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"访问的网址"]];

webView.scalesPageToFit = YES;

[webView loadRequest:request];

webView.delegate = self;

webView.scrollView.bounces = NO;

webView.scrollView.showsHorizontalScrollIndicator = NO;

webView.scrollView.scrollEnabled = NO;

[cell addSubview:webView];

5、//设置能够进行桥接

[WebViewJavascriptBridge enableLogging];

_bridge = [WebViewJavascriptBridge bridgeForWebView:webView];

[_bridge setWebViewDelegate:self];

[_bridge registerHandler:@"你和后台商量好的方法名称" handler:^(id data, WVJBResponseCallback responseCallback) {

// data 后台传过来的参数,例如用户名、密码等

NSLog(@"testObjcCallback called: %@", data);

//具体的事件的实现比如跳转登录啥的

// responseCallback 给后台的回复

responseCallback(@"Response from testObjcCallback");

}];

到此结束,因为不需要和后台交互所以就没有写,有更多需求的童鞋可以去自己搞一搞O(∩_∩)O哈哈~

相关文章

网友评论

      本文标题:IOS 使用 WebViewJavascriptBridge 进

      本文链接:https://www.haomeiwen.com/subject/evxovxtx.html