iOS/swift
15. [iOS/Swift] 웹뷰(WKWebView)와 JavaScript 연동(간략) (Native <-> JavaScript)
drizzle0925
2021. 7. 6. 13:38
728x90
JavaScript -> Native 호출
1. Javascript에서 iOS에 호출할 함수를 작성합니다.
<script>
var message = "Hello World"
window.webkit.messageHandlers.callNativeFunction.postMessage(message);
</script>
2. ViewController.swift에서 호출될 함수를 작성합니다.
webView에 configuration 값을 추가해야 줘야합니다.
그리고 frame: 값은 제가 임의로 .main이라고 설정했습니다. 현재 웹뷰에서 받고있는 프레임 정보를 입력해야됩니다.
let contentController = WKUserContentController()
let configuration = WKWebViewConfiguration()
contentController.add(self, name: "callNativeFunction")
configuration.userContentController = contentController
webView = WKWebView(frame: .main, configuration: configuration)
3. ViewController: WKScriptMessageHandler{} 안에 userContentController를 추가합니다.
// JS -> Native CALL
@available (iOS 8.0, *)
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message)
if(message.name == "callNativeFunction"){
print("callNativeFunction 호출 \(message.body)")
}
switch를 이용한 분기 방법
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
switch message.name {
case "callNativeFunction":
print("callNativeFunction 호출 \(message.body)")
case "test2":
print("test2 호출 \(message.body)")
default:
break
}
}
주의
전달한 메시지가 없어도 아래 메소드를 체이닝해주어야 합니다.
postMessage(true)
Native -> JavaScript 호출
webView.evaluateJavaScript("함수명(매개변수)")
webView.evaluateJavaScript("outPutMessage('abc')")
728x90