cookieswkwebview

WKWebView observe cookies changes


According to wwdc 17 there is a way to observe cookies changes in WKWebView in iOs 11 (WebsiteDataStore.httpCookieStore).

Could you provide example how to do that?

I found that there is WKHTTPCookieStoreObserver and it has cookiesDidChange member.

So i put that protocol as following

class ActivitiesViewController: UIViewController, UIGestureRecognizerDelegate, WKNavigationDelegate, WKHTTPCookieStoreObserver { 

and

func cookiesDidChange(in cookieStore: WKHTTPCookieStore) {  

but cookiesDidChange not fires (


Solution

  • You must add the view controller as an observer of the web data store to trigger the cookiesDidChange(in:) method.

    // 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
    

    Note: In iOS 11.3 a change occurred that requires the WKWebsiteDataStore.default().httpCookieStore.add(self) line to occur before the WKWebView object is created.