Я пытаюсь вызвать нативную функцию в swift из wkwebview. Это то, что я сделал до сих пор:
Swift Part
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
contentController.add(self, name: "backHomePage")
config.userContentController = contentController
self.webView = WKWebView(frame: self.containerView.bounds, configuration: config)
webView.navigationDelegate = self
self.containerView.addSubview(self.webView)
if let url = URL(string: assessmentLink) {
webView.load(URLRequest(url: url))
}
}
И
extension WebFormVC: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("javascript sending \(message.name), body: \(message.body)")
}
}
Javascript
function backHomePage(message) {
window.webkit.messageHandlers.backHomePage.postMessage(message);
}
где сообщение может быть любой строкой, например: "success"
В настоящее время я не получаю обратный вызов в userContentController didReceive
метод
ОБНОВЛЕНИЕ
Я также пытался отправить данные в качестве значения ключа, например window.webkit.messageHandlers.backHomePage.postMessage({"message" :"Javascript to swift!"});
, но он все еще не работал.