UIWebView转WKWebView,与前端交互的问题
主要WKWebView的前端调用方法为:window.webkit.messageHandlers.方法名.postMessage(); 之前前端写法一般是:window.方法名();
主要思路就是在调用JS方法的时候,替换成wk可以识别的交互方法,避免前端修改代码。以下为转换方法:
//转换方法
function calliOSFunction(namespace, functionName, args, callback) {
if (!window.webkit.messageHandlers[namespace]) return;
var wrap = {
"method": functionName,
"params": args
};
window.webkit.messageHandlers[namespace].postMessage(JSON.stringify(wrap));
}
//例子
var jsCallNative = {}
jsCallNative.toLogin = function () {
calliOSFunction("jsCallNative","toLogin");
}
window["jsCallNative"] = jsCallNative;
后续补充:
审核过后还有包含的未删除的UIWebView,但未在工程中
通过以下命令:
grep -r UIWebView .
查找项目中还含有的UIWebView