与Swift中的WKWebView的WKProcessPool共享cookie

时间:2017-09-15 21:05:43

标签: swift wkwebview wkwebviewconfiguration process-pool

有谁能告诉我如何在Swift中创建WKProcessPool?我不熟悉Objective-C。 我必须创建一个WKProcessPool才能与所有WKWebViews共享cookie。我想在显示另一个具有相同类的viewcontroller时保留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)
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

苹果网站说:

<块引用>

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

但是,您将 processProtocol 设置为类 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)
}
}