본문 바로가기
IOS

Web -> IOS 네이티브 실행 (IOS용 안드로이드 브릿지) WKScriptMessageHandler

by 일용직 코딩노동자 2020. 5. 22.
728x90
반응형

안드로이드 할때 안드로이드 브릿지라는 기능을 이용하여 Web -> 안드로이드 함수 실행

 

하는 기능을 해보신 분들이 계실겁니다.

 

오늘은 IOS에서 어떻게 그 기능이 동작하는지 알아볼게요.

 

사전에 WebView를 셋팅할때 필요한 작업이 하나있어요.

 

let userContentController = WKUserContentController()
userContentController.add(self, name: "TEST")

우선 이러한 셋팅을 먼저 해주었습니다.   TEST라는 이름에 주의하여 봐주세요.

 

extension ViewController: WKScriptMessageHandler{

}

extestion으로 WKScriptMessageHandler 프로토콜을 받는녀석을 하나 분리해줄게요.

 

이 안에 

 

extension ViewController: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        
    }
}

이런식으로 함수하나를 정의해줄게요.

 

그럼 안드로이드에서는 함수명을 작성해주었지만 여기선 message.name <-- 이녀석을 기준으로합니다.

 

그럼 if문으로 분리해줍니다. (물론 switch case도 쓰셔도됩니다.)

 

extension ViewController: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "TEST" {
              //작업할 내용
              print("실행내용 : ",message.body)
            }
        }
    }
}

 

자 이런식으로 구분지어서 사용하는데요 웹에서 사용하는 방법이 있어야 할거에요.

 

webkit.messageHandlers.TEST.postMessage("Test 입니다.");

보시면 TEST가 보이시나요 저게 message.name입니다.

 

그리고 Test 입니다. 라는 값을 받아야하는데요.

 

그것은 message.body로 받아집니다. 타입은 Any타입으로 받아집니다.

 

그 뒤에 else if를 붙여서 계속 작성하시면 되겠습니다.

 

하실때 위에서 하신 add작업 잊지마시구요.

 

728x90
반응형

댓글