iOS Swift WKWebView 维护用户会话 Cookie

iOS Swift WKWebView Maintain User Session Cookies

我知道这个问题已经在几个相关的表格中得到了回答,但我绞尽脑汁想了好几天都无济于事。我已经尝试了我能找到的每一个解决方案,这些解决方案似乎甚至是远程相关的。

我正在使用 WKWebView 并加载网站的 url。在该网站上,用户将登录。为了让用户保持登录状态,我们需要使用 cookie 来维护会话。我已经在 Android(使用 webview 和 cookies)上完美地工作了。

我需要为 iOS 计算以下内容:

1) 如何找到 cookie(如果它已经存在)并用 URLRequest.

发送它

2) 如何确保在打开和关闭应用程序之间保留 cookie。

这段代码对我有用 -

在 ViewDidLoad 方法中添加这段代码

    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    preferences.javaScriptCanOpenWindowsAutomatically = true
    let wkUController = WKUserContentController()
    let cookieScript = WKUserScript(source: "document.cookie = 'Set-Cookie: sessionId =\(Defaults[AppConstants.UD_SESSION_ID].string!)';", injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)
    wkUController.addUserScript(cookieScript)
    let wkWebConfig = WKWebViewConfiguration()
    wkWebConfig.userContentController = wkUController
    wkWebConfig.preferences = preferences
    // Adding webview
    webView = WKWebView(frame: self.view.bounds, configuration: wkWebConfig)

   var request = URLRequest(url: url)
    request.addValue("Set-Cookie: sessionId = \(Defaults[AppConstants.UD_SESSION_ID].string!)", forHTTPHeaderField: "Cookie")
    webView?.load(request)

好的,几个月后回到这个话题:/

这太简单了。在我嵌入 WKWebView 的网站的登录页面中,我没有单击 'remember me' 复选框。我陷入了一个完整的兔子洞,认为它与 cookie/s 有关,因为该网站从未被保存过,但我从来没有真正指示它这样做。

希望对大家有所帮助。我的脸因多次面部护理而瘀伤。