gpt4 book ai didi

javascript - 当特定屏幕以 html 显示时,从 WKWebView 获取通知到 Swift

转载 作者:可可西里 更新时间:2023-10-31 23:46:20 24 4
gpt4 key购买 nike

我有一个 sample html

我正在使用 WKWebView 来显示此 html。我想要的是,当用户完成游戏时,即出现“高分”屏幕时,我们也会在代码中收到通知(即 swift),这样我们就可以忽略该 View 并获得最高分。

这样做的可能方法是什么?

我做了以下但它没有提供任何功能

func showHtml5()
{
var wkWebView = WKWebView()
let frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)

let contentController = WKUserContentController()
contentController.add(self, name: "onVisibilityChanged")

let config = WKWebViewConfiguration()
config.userContentController = contentController

wkWebView = WKWebView(frame: frame, configuration: config)
wkWebView.navigationDelegate = self as? WKNavigationDelegate


if let url = URL(string: "https://previews.envatousercontent.com/files/240466341/index.html") {
wkWebView.load(URLRequest(url: url))
}

self.destination.view.addSubview(wkWebView)

}

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("message is :\(message)")

if(message.name == " onVisibilityChanged") {
print("FROM JAVASCRIPT")
}
}

最佳答案

您没有完全设置您的通信。 swift 设置看起来不错,但是没有调用您的监听器函数,因为您没有发送任何消息。为了从 web View 接收消息,您需要将消息发布到该特定消息处理程序。因此,如果您注册了一个名为 onVisibilityChanged 的消息处理程序,则需要从您的 javascript 向该处理程序发送一条消息。

在你的 javascript eventListener 中这样做:

function onVisibilityChanged() {
if (document.hidden || document.mozHidden || document.webkitHidden || document.msHidden) {
cr_setSuspended(true);
} else {
cr_setSuspended(false);
}

var message = {
"whatever": "you want to send"
}

window.webkit.messageHandlers.onVisibilityChanged.postMessage(message);
};

然后像这样阅读您的消息:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
guard let body = message.body as? [String:Any] else {
return
}

print("message from the other side >> \(body["whatever"])")
}

关于javascript - 当特定屏幕以 html 显示时,从 WKWebView 获取通知到 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com