总结项目开发中JS与OC方法互相调用技术
实现JS与OC方法互相调用,主要通过UIWebView控件和第三方库WebViewJavascriptBridge技术。(WebViewJavascriptBridge源码见附件)
一:js 调用OC中的方法
1:将WebViewJavascriptBridge.rar下载解压,并将WebViewJavascriptBridge文件夹拖入工程中(如下图)
2:ViewController.h 引入WebViewJavascriptBridge.h头文件
3:ViewController.m 引入头文件并且注册给js调用的方法
4:js文件调用OC注册的方法
//webview 和javascript 连接桥 这段是调用oc方法的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);
}
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注册的方法
setupWebViewJavascriptBridge(function (bridge){
bridge.callHandler('oc注册的方法名',function(data,responseCallback){
//console.log("data为调用oc方法返回的json数据");
});
});
bridge.callHandler('oc注册的方法名',function(data,responseCallback){
//console.log("data为调用oc方法返回的json数据");
});
});
二:OC调用JS中注册的方法(待补充.....)
参考:
iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
资源附件: