如何在 WKWebView SwiftUI UIViewRepresentable 中添加 Cookie?

问题描述

我正在实现一个功能,用于在我使用 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 (将#修改为@)