참고 : WWDC 2013   615 - Integrating JavaScript into Native Apps


Web Javascript 에서 ios 호출하는 방법 (iOS 7.0 이상)

@objc protocol ScriptProtocol : JSExport  {
    func toMoveScene(url:String)
    func toLoading(show:String)
}

@objc class MyScript: NSObject {
    var webView: UIWebView
    init(webView: UIWebView) {
        self.webView = webView
    }
}

extension MyScript: ScriptProtocol {
    func toMoveScene(url:String) {
        print("url : \(url)")
    }
    
    func toLoading(show:String){
        print("show : \(show) ")
    }
}


WebViewDelegate 에서 다음과 같이 사용 하면 Web뷰에서 myScript.toLoading("show"); 사용할때 

MyScript.oLoading() 함수가 호출된다.

func webViewDidFinishLoad(webView: UIWebView){
        let key = "documentView.webView.mainFrame.javaScriptContext"
        let webViewContext: AnyObject? = webView.valueForKeyPath(key)
        
        if let context:JSContext = webViewContext as? JSContext {
            context.setObject(MyScript(webView: self), forKeyedSubscript: "myScript")
            context.evaluateScript("function toMoveScene(url) {toMoveScene(url);}" +
                "function toLoading(show) {toLoading(show);}")
        }
}


저작자 표시 비영리 변경 금지
Posted by 준치짱


티스토리 툴바