0

谁能告诉我如何在 Swift 中创建 WKProcessPool ?我不熟悉Objective-C。我必须创建一个 WKProcessPool 才能与所有 WKWebViews 共享 cookie。即使显示另一个具有相同类的视图控制器,我也想保留 cookie。我尝试了以下但它不工作。

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView = WKWebView()

    override func viewDidLoad() {
        super.viewDidLoad()

        let processPool = WKProcessPool()
        let configuration = WKWebViewConfiguration()
        configuration.processPool = WKProcessPool()

        webView.navigationDelegate = self
        view.addSubview(webView)
    }
}
4

2 回答 2

1

您需要使用 configuration.websiteDataStore 属性而不是 processpool。

对于存储的 cookie,使用 WKWebsiteDataStore.default() 值。对于隐私浏览,使用 WKWebsiteDataStore.nonPersistent()。

于 2017-09-25T11:54:22.253 回答
0

苹果网站说:

如果您的应用程序创建多个 Web 视图,请将相同的 WKProcessPool 对象分配给可以安全共享进程空间的 Web 视图。实例化此类的一个实例并将其分配给每个 Web 视图的 WKWebViewConfiguration 对象的 processPool 属性。

但是,您将您的设置processProtocol为 class ViewControler。然后,每次实例化视图时都会重新定义。这样做:

import UIKit
import WebKit
let processPool = WKProcessPool()

class ViewController: UIViewController, WKNavigationDelegate { var webView = WKWebView()

override func viewDidLoad() {
    super.viewDidLoad()

    let configuration = WKWebViewConfiguration()
    configuration.processPool = WKProcessPool()

    webView.navigationDelegate = self
    view.addSubview(webView)
}
}
于 2020-12-31T19:15:27.573 回答