[Swift]JavaScript

JavaScript -> 네이티브 함수 호출

지난 포스팅에서는 코틀린에서 자바스크립트와 통신하는 방법에 대해 알아보았습니다.

이 게시물에서는 Swafit에서 JavaScript와 통신하는 방법을 살펴보겠습니다.

기초적인 웹뷰 태도는 나가다 js통신을 위해 필요한 설정만 지적 나는 계속한다.

우리는 javaScript 사이에서 통신할 것입니다. <-> ViewDidLoad()에서 네이티브를 설정합니다.

override func viewDidLoad() {
        super.viewDidLoad()
        
        webView.configuration.userContentController.add(self, name: "a")
        webView.configuration.userContentController.add(self, name: "b")
        webView.configuration.userContentController.add(self, name: "c")
        webView.configuration.userContentController.add(self, name: "d")
        webView.configuration.userContentController.add(self, name: "e")
        webView.configuration.userContentController.add(self, name: "f")
        webView.configuration.userContentController.add(self, name: "g")
        webView.configuration.userContentController.add(self, name: "h")
        webView.configuration.userContentController.add(self, name: "i")

구성은 WkWebView를 초기화하기 위한 속성 집합입니다.

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage){
        print(message.name, message.body)
        
        switch message.name {
            
        case "a":
            a(phoneNum: message.body as! String)
            
        case "b":
            b(phoneNum: message.body as! String)
            
            //contents 외 카드뉴스
        case "a":
            b(url: message.body as! String)
            
        default:
            break
        }
    }

그리고

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage){

스크립트 단계에서 오는 메시지를 가로채기 위해 위의 기능을 사용할 것입니다.

위의 함수는 스크립트 계층에서 메시지가 전송되었음을 웹 페이지의 핸들러에 알립니다.

위 함수의 매개 변수를 고려하십시오.

userContentController

메시지를 전달하는 사용자 콘텐츠 컨트롤러

소식

메시지의 세부 정보를 포함하는 개체입니다.

여기까지가 네이티브 소스 설정과 서버에서 앱 기능을 호출하는 방법입니다.

window.webkit.messageHandlers.a.postMessage();

당신은 그것을 부를 수 있습니다.

반대로 Native에서 javascript 함수를 호출하려면

기본 -> JavaScript 함수 호출

let requestString = "javascript:a()"
                
self.webView.evaluateJavaScript(requestString, completionHandler: nil)

WkwebView에 내장된 evaluateJavaScript 메서드를 사용하여 호출할 수 있습니다.