WKWebView观察cookie变化

dsk*_*bin 4 cookies wkwebview

根据 wwdc 17,有一种方法可以观察 iOs 11 中 WKWebView 中 cookie 的变化(WebsiteDataStore.httpCookieStore)。

您能提供如何做到这一点的示例吗?

我发现有 WKHTTPCookieStoreObserver 并且它有 cookiesDidChange 成员。

所以我将该协议如下

class ActivitiesViewController: UIViewController, UIGestureRecognizerDelegate, WKNavigationDelegate, WKHTTPCookieStoreObserver { 
Run Code Online (Sandbox Code Playgroud)

func cookiesDidChange(in cookieStore: WKHTTPCookieStore) {  
Run Code Online (Sandbox Code Playgroud)

但 cookiesDidChange 不会触发(

Ale*_*ens 7

您必须将视图控制器添加为 Web 数据存储的观察者才能触发 cookiesDidChange(in:) 方法。

// These two lines occur in the viewDidLoad method of a UIViewController class  
// This view controller conforms to the WKHTTPCookieStoreObserver protocol

WKWebsiteDataStore.default().httpCookieStore.add(self)  
let webView = WKWebView()  

// Configure and load the web view
Run Code Online (Sandbox Code Playgroud)

注意:在 iOS 11.3 中发生了一项更改,要求该WKWebsiteDataStore.default().httpCookieStore.add(self)行出现在创建 WKWebView 对象之前。

  • 有关 11.3 中的更改的信息来源是什么?我看到一个问题,首先调用“cookiesDidChange”,然后停止调用。 (5认同)