WebKit userContentController:didReceiveScriptMessage:没有被调用 iOS 13
WebKit userContentController:didReceiveScriptMessage: not getting called for iOS 13
我正在使用 WKWebView
在我的应用程序中显示网络内容,但我无法在 iOS 13 台设备上收到来自 JS
webkit
的消息。
在以前的 iOS 版本中,它按预期工作。
设置:
func setupWebView() {
let config: WKWebViewConfiguration = WKWebViewConfiguration()
config.userContentController.add(self, name: "mobileApp")
webView = WKWebView(frame: self.view.frame, configuration: config)
webView?.navigationDelegate = self
webView?.uiDelegate = self
webView?.scrollView.bounces = false
webView?.backgroundColor = UIColor.clear
self.view.addSubview(webView!)
self.webView?.load(URLRequest(url: URL(string: self.stringURL!)!))
}
WKScriptMessageHandler 委托:
func userContentController(_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage) {
let data = NSMutableDictionary(dictionary: message.body as! Dictionary)
//Method is not getting called
}
来自JavaScript 我是这样称呼它的:
webkit.messageHandlers.mobileApp.postMessage({ 'backToApp': '1' });
如果有人遇到过这个问题以及可能的解决方案,请告诉我。
经过大量搜索,我找到了 iOS 13 user agent
属性 中的解决方案,我们在 WEB
中使用它来检查它是否移动或不。
isMobile
检查失败,因为我们的消息处理程序没有被调用。
我们在 iOS 13 中做了很多重大更改,目前我们需要注意这些更改。
我正在使用 WKWebView
在我的应用程序中显示网络内容,但我无法在 iOS 13 台设备上收到来自 JS
webkit
的消息。
在以前的 iOS 版本中,它按预期工作。
设置:
func setupWebView() {
let config: WKWebViewConfiguration = WKWebViewConfiguration()
config.userContentController.add(self, name: "mobileApp")
webView = WKWebView(frame: self.view.frame, configuration: config)
webView?.navigationDelegate = self
webView?.uiDelegate = self
webView?.scrollView.bounces = false
webView?.backgroundColor = UIColor.clear
self.view.addSubview(webView!)
self.webView?.load(URLRequest(url: URL(string: self.stringURL!)!))
}
WKScriptMessageHandler 委托:
func userContentController(_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage) {
let data = NSMutableDictionary(dictionary: message.body as! Dictionary)
//Method is not getting called
}
来自JavaScript 我是这样称呼它的:
webkit.messageHandlers.mobileApp.postMessage({ 'backToApp': '1' });
如果有人遇到过这个问题以及可能的解决方案,请告诉我。
经过大量搜索,我找到了 iOS 13 user agent
属性 中的解决方案,我们在 WEB
中使用它来检查它是否移动或不。
isMobile
检查失败,因为我们的消息处理程序没有被调用。
我们在 iOS 13 中做了很多重大更改,目前我们需要注意这些更改。