最近一个项目需要和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哈哈~