58
задан 23 January 2018 в 12:54

3 ответа

Для iOS 11, без любых расширений:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    self.webView.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in
        for cookie in cookies {
            //...
        }
    }
}
0
ответ дан 1 November 2019 в 14:07

Swift 5

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
    webView.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in
        debugPrint(cookies.debugDescription)
    }

    decisionHandler(.allow)
}
0
ответ дан 1 November 2019 в 14:07

Не тратьте впустую Вас время в извлечении cookie от iOS 11 below device, существует очень меньше возможностей того, чтобы быть следовавшимся. Извлечение cookie может быть заблокировано должное некоторые соображения безопасности.

Отсылают эти журналы:

2019-02-07 00:05:45.548880+0530 MyApp[2278:280725] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C8.1:2][0x10fd776f0] get output frames failed, state 8196

2019-02-07 00:05:45.550915+0530 MyApp[2278:280725] TIC Read Status [8:0x0]: 1:57

Попытка этот код, который является сборкой для ниже iOS 11 устройств:

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
        let cookieValue = HTTPCookieStorage.shared.cookies(for: navigationResponse.response.url!)
        print(cookieValue!)
        let response = navigationResponse.response as! HTTPURLResponse
        let headFields = response.allHeaderFields as! [String:String]

        let cookies = HTTPCookie.cookies(withResponseHeaderFields: headFields, for: response.url!)
        for cookie in cookies {
            print("name: \(cookie.name) value: \(cookie.value)")
        }
        decisionHandler(.allow)
    }

вышеупомянутый код даст Вам пустой массив cookie, поскольку извлечение cookie блокируется из-за некоторых соображений безопасности.

я рекомендовал бы Вам попробовать следующее, которое предназначено для iOS 11 и выше:

WKWebsiteDataStore.default().httpCookieStore.getAllCookies { (cookies) in
    for cookie in cookies {
        print(cookie)
    }
}
1
ответ дан 1 November 2019 в 14:07

Другие вопросы по тегам:

Похожие вопросы: