iOS-Swift WKWebView 与H5交互

2020-03-19  本文已影响0人  梦醒了i77

引子:最近项目赶时间,有些界面由H5替代。

最后我使用了方案二

/// 注册
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;
}
上一篇下一篇

猜你喜欢

热点阅读