gpt4 book ai didi

javascript - 如何使用 wkwebview 从 swift 返回 bool 值到 javascript 函数

转载 作者:IT王子 更新时间:2023-10-29 05:53:13 26 4
gpt4 key购买 nike

这是我在 android 中的功能:

@JavascriptInterface
public boolean GetMobileVersion() {

return true;
}

这是 JavaScript 中的调用函数:

$(window).load(function () {

IsCallByMobileApp = false;
try {
IsCallByMobileApp = app.GetMobileVersion();/*Is call by android app*/

} catch (e) {
IsCallByMobileApp = false;
}

}

在 iOS 中,我尝试使用 WKWebView 实现相同的方法,但它不起作用:

func userContentController(_ userContentController: WKUserContentController, 
didReceive message: WKScriptMessage) {

if(message.name == callbackhandler) {

webView.evaluateJavaScript("GetMobileVersion();") { (true, error) in
guard error == nil else {
print("there was an error")
return
}

print(Bool(true))
}
}
}

谁能告诉我如何将 true 发送到 Javascript 函数?请详细回答我,因为我是 iOS 和 Swift 的新手。

最佳答案

enter image description here我为此创建了一个 GitHub 项目。 https://github.com/BKRApps/WKWebView-JS .查看更多详细信息。

更新 JavaScript:

 function getMobileVersion(){
webkit.messageHandlers.VersionHandler.postMessage({})
}

function receivedMobileVersion(mobileVersion){
//here you will be getting the mobile version. Then execute the logic.
// i have added this only to cross check the version. you don't need to add this.

if(mobileVersion === true) {
webkit.messageHandlers.VerifyHandler.postMessage({version:mobileVersion})
}
}

getMobileVersion()

将以下代码添加到 WKWebView 配置中:

 configuration.userContentController.add(self, name: "VersionHandler")
// i have added this only to cross check the version. you don't need to add this.
configuration.userContentController.add(self, name: "VerifyHandler")

更新 WKScriptMessageHandler 委托(delegate):

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
switch message.name {
case "VersionHandler":
let mobileVersion = true //write the version logic and send the true or false.
let sendMobileVersionScript = "receivedMobileVersion(\(mobileVersion))"
self.wkWebView?.evaluateJavaScript("\(sendMobileVersionScript)", completionHandler: { (any, error) in
print("hello")
})
case "VerifyHandler":
print(message.body) // i have added this only to cross check the version. you
default:
break;
}
}

了解更多信息:http://igomobile.de/2017/03/06/wkwebview-return-a-value-from-native-code-to-javascript/

关于javascript - 如何使用 wkwebview 从 swift 返回 bool 值到 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710273/

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