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
반응형
'IOS' 카테고리의 다른 글
IOS Alamofire를 이용하여 HTTP통신 및 콜백 받아보기 (안드로이드 retrofit2 유사예제) (2) | 2020.05.26 |
---|---|
IOS Json 파싱 및 인코딩 하기. SwiftyJSON 라이브러리 (0) | 2020.05.22 |
IOS 하이브리드 앱 진행 시 캐시 삭제 (0) | 2020.05.20 |
IOS 파이어베이스 Push 메세지 셋팅 ( FCM ) (5) | 2020.05.19 |
IOS 파이어베이스 첫 연동하기. (0) | 2020.05.18 |
댓글