引子:最近项目赶时间,有些界面由H5替代。
-
2019年下半年开始提交审核如果包含UIWebView,Apple review会发送一封邮件告诉你,UIWebView过时了
-
方案1 开源框架WebViewJavaScriptBridge
- 很多文章都在推荐使用github star也很高
- 方法使用也简单
-
方案2 使用原生的WKScriptMessageHandler
最后我使用了方案二
- swift段
/// 注册
override func viewWillAppear(_ animated: Bool) {
viewWeb.configuration.userContentController.add(self, name: "iOS_isLogin")
}
/// 移除
override func viewWillDisappear(_ animated: Bool) {
viewWeb.configuration.userContentController.removeScriptMessageHandler(forName: "iOS_isLogin")
}
/// 接收消息处理
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
let key = message.name
if key.elementsEqual("iOS_jumpLogin") {
//如果有需要回调 调用js方法
let js_isLogin = String(format: "get_iOS_isLogin('%d')", JTUserManager.shared.isLogin())
viewWeb.evaluateJavaScript(js_isLogin) { (_, _) in
}
}
}
js段
//调用oc方法
window.webkit.messageHandlers.iOS_isLogin.postMessage("iOS_isLogin");
// 是否登陆 回调get_iOS_isLogin
function iOS_isLogin() {
loadURL("iOS_isLogin");
}
// 回调get_iOS_isLogin
function get_iOS_isLogin(params) {
return document.getElementById("returnValue").innerHTML = params;
}
网友评论