IOS
Web -> IOS 네이티브 실행 (IOS용 안드로이드 브릿지) WKScriptMessageHandler
일용직 코딩노동자
2020. 5. 22. 10:19
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
반응형