问题描述
我正在实现一个功能,用于在我使用 UIViewRepresentable 创建的 SwiftUI WKWebview 中添加 cookie。我按照一些步骤在普通的 UIKit 实现中添加了 cookie,并尝试在 UIViewRepresentable 结构的初始化中实现它。 WebView 正在加载正确的 url,但未添加 cookie。这是我的代码:
import Foundation
import SwiftUI
import WebKit
struct SwiftUIWKWebView: UIViewRepresentable {
private let urlString: String
var webview: WKWebView
init( urlName: String) {
self.urlString = urlName
self.webview = WKWebView()
if let url = URL(string: urlString) {
let defaults = UserDefaults.standard
guard let webViewCookie = defaults.string(forKey: DefaultKeys.webViewCookie.rawValue) else {
return
}
let cookie = HTTPCookie(properties: [
.domain: Constant.domainName,.path: "/",.name: Constant.webCookieName,.value: webViewCookie,.secure: true,.expires: NSDate(timeIntervalSinceNow: 12000)
])
if let myCookie = cookie {
webview.configuration.websiteDataStore.httpCookieStore.setCookie(myCookie)}
let request = URLRequest(url: url)
webview.load(request)
}
}
func makeUIView(context: Context) -> some WKWebView {
return webview
}
func updateUIView(_ uiView: UIViewType,context: Context) {
}
}
上面的代码加载了正确的url,但没有添加cookie。如果成功添加了 cookie,WebView 应该加载一个经过身份验证的 url,但目前我的代码不起作用。谁能告诉我我的代码中缺少什么?或者在 SwiftUI WKWebview 中添加 cookie 有更好的实现吗?谢谢!
我的应用程序的最低操作系统版本是 iOS 13.0。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)