将Javascript从UIWebView升级到WKWebView(使用SwiftUI)
我刚刚将基于UIWebView的旧应用程序的所有代码升级到WKWebView。 但我实际上被一个javascript函数卡住了:将Javascript从UIWebView升级到WKWebView(使用SwiftUI),swift,xcode,swiftui,uiwebview,wkwebview,Swift,Xcode,Swiftui,Uiwebview,Wkwebview,我刚刚将基于UIWebView的旧应用程序的所有代码升级到WKWebView。 但我实际上被一个javascript函数卡住了: func webViewDidFinishLoad(_ webView: UIWebView) { webView.isUserInteractionEnabled = true; let GetTokensFunction = "var BYB_GetFcmTokens = function(udid,token){ alert(udid)
func webViewDidFinishLoad(_ webView: UIWebView)
{
webView.isUserInteractionEnabled = true;
let GetTokensFunction = "var BYB_GetFcmTokens = function(udid,token){ alert(udid);alert(token); };"
webView.stringByEvaluatingJavaScript(from: callGetToken);
}
特别是,我需要在警报中打印Firebase令牌,然后使用另一个javascript将其发送到我的MySQL数据库,以向某个用户发送用户通知。
您建议如何在基于SwiftUI的新WKWebView上实现此代码
Home.swift
ContentView.swift
如果您需要其他信息,请询问我!
希望能找到能帮助我的人,祝你有一个愉快的编码日;) 您的问题是将您的
webViewDidFinishLoad放在哪里,还是如何实现您在第二段中描述的功能?您好jnpdx,我需要实现函数let GetTokensFunction=“var BYB_GetFcmTokens=function(udid,token){alert(udid);alert(token);};”
在webViewDidFinishLoad
import SwiftUI
import WebKit
struct Home: UIViewRepresentable{
let url: URL?
func makeUIView(context: Context) -> WKWebView {
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
let config = WKWebViewConfiguration()
config.defaultWebpagePreferences = prefs
return WKWebView (
frame: .zero,
configuration: config)
}
func updateUIView(_ uiView: WKWebView, context: Context) {
guard let homeURL = url else {
return
}
let request = URLRequest(url: homeURL)
uiView.load(request)
}
}
import SwiftUI
struct ContentView: View{
var body: some View{
TabView{
Home(url: URL(string:"home-url"))
.tabItem{
Image(systemName: "house")
Text("Home")
}
Search(url: URL(string:"search-url"))
.tabItem{
Image(systemName: "magnifyingglass")
Text("Search")
}
Notification(url: URL(string:"notificationpage-url"))
.tabItem{
Image(systemName: "bell")
Text("Notification")
}
Menu(url: URL(string:"menu-url"))
.tabItem{
Image(systemName: "gear")
Text("Menu")
}
}
.accentColor(Color("tint"))
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}