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 메서드를 사용하여 호출할 수 있습니다.