Добавление куки в webview.load в Swift
Я пытался добавить веб-страницу в свое приложение (это работает), но когда я пытался добавить куки, он выдал мне следующую ошибку: "Невозможно вызвать" load "со списком аргументов типа" (URLRequest, with: HTTPCookie?) ""
let cookie1 = HTTPCookie(properties: [
HTTPCookiePropertyKey.domain: "example.de",
HTTPCookiePropertyKey.path: "/example/",
HTTPCookiePropertyKey.secure: true,
HTTPCookiePropertyKey.name: "PHPSESSID",
HTTPCookiePropertyKey.value: "example"]) //this are the cookies I set
let example = URL(string:"example.de")
let example2 = URLRequest(url: example!)
webView.load(example2, with: cookie1) //here I tried to inject the cookie to the webviewload,
Что я сделал не так, кто-нибудь знал, что я должен изменить?
1 ответ
WKWebView имеет два метода загрузки, которые принимают разные параметры
func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL) -> WKNavigation?
Устанавливает содержимое веб-страницы и базовый URL.
func loadFileURL(URL, allowingReadAccessTo: URL) -> WKNavigation?
Переходит к запрошенному файлу URL в файловой системе
У него нет метода загрузки, который принимает параметр cookie. Это то, что вызывает вашу ошибку.
Чтобы это исправить, вам нужно использовать правильные способы загрузки файлов cookie с помощью WKWebView. Здесь есть несколько хороших примеров
Предварительный просмотр в случае разрыва этой ссылки:
let config = WKWebViewConfiguration()
config.processPool = WKProcessPool()
let cookies = HTTPCookieStorage.shared.cookies ?? [HTTPCookie]()
cookies.forEach({ config.websiteDataStore.httpCookieStore.setCookie($0, completionHandler: nil) })
let wkWebView = WKWebView(frame: bounds, configuration: config)