如何收听来自 Swift 的 JavaScript 回调?
How to Listen to JavaScript CallBack from Swift?
我正在我的 iOS 应用程序中实施 MPGS webView 以在 WKWebView
上付款
后端开发人员在 myHandler 对象上向我发送 javascript 回调。
我应该收到带有许多成功或失败回调的处理程序或取消(当用户单击 web 视图中的取消按钮时触发),在 JS 中它看起来像这样:
window.webkit.MyHandler.postMessage('cancel');
window.MyHandler.cancelCallback();
我使用以下方法接收回调:
override func viewDidLoad() {
super.viewDidLoad()
let contentController = WKUserContentController()
contentController.add(self, name: "MyHandler")
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
configuration.preferences = WKPreferences()
configuration.preferences.javaScriptEnabled = true
let url = URL(string: NetworkManager.mpgsBaseUrl + "/" + (MPGSWebView.url ?? ""))!
let urlRequest = URLRequest(url: url)
wkWebView = WKWebView(frame: .zero,configuration: configuration)
wkWebView.navigationDelegate = self
wkWebView.uiDelegate = self
wkWebView.load(urlRequest)
delegate = self.checkOutViewController
view = wkWebView
}
WKWebview
已加载,但当我完成或取消 WKScriptMessageHandler
从未执行的委托中的 webview 打印语句时,我没有收到任何事件:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message.name,"fff",message)
}
如果有人知道如何接收这些事件,我将不胜感激。最好的问候
你可以试试(缺少.messageHandlers.
)
window.webkit.messageHandlers.MyHandler.postMessage("cancel");
我正在我的 iOS 应用程序中实施 MPGS webView 以在 WKWebView
上付款
后端开发人员在 myHandler 对象上向我发送 javascript 回调。
我应该收到带有许多成功或失败回调的处理程序或取消(当用户单击 web 视图中的取消按钮时触发),在 JS 中它看起来像这样:
window.webkit.MyHandler.postMessage('cancel');
window.MyHandler.cancelCallback();
我使用以下方法接收回调:
override func viewDidLoad() {
super.viewDidLoad()
let contentController = WKUserContentController()
contentController.add(self, name: "MyHandler")
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
configuration.preferences = WKPreferences()
configuration.preferences.javaScriptEnabled = true
let url = URL(string: NetworkManager.mpgsBaseUrl + "/" + (MPGSWebView.url ?? ""))!
let urlRequest = URLRequest(url: url)
wkWebView = WKWebView(frame: .zero,configuration: configuration)
wkWebView.navigationDelegate = self
wkWebView.uiDelegate = self
wkWebView.load(urlRequest)
delegate = self.checkOutViewController
view = wkWebView
}
WKWebview
已加载,但当我完成或取消 WKScriptMessageHandler
从未执行的委托中的 webview 打印语句时,我没有收到任何事件:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message.name,"fff",message)
}
如果有人知道如何接收这些事件,我将不胜感激。最好的问候
你可以试试(缺少.messageHandlers.
)
window.webkit.messageHandlers.MyHandler.postMessage("cancel");