Можно ли обмениваться файлами cookie между WKWebView и UIWebView?
Проблема с файлами cookie WKWebView заключается в том, что запросы, отправляемые WKWebView, не переносят файлы cookie, автоматически сохраненные в контейнере NSHTTPCookieStorage.
Решение:
WKWebView Инжекция cookie достигается путем копирования содержимого NSHTTPCookieStorage
в WKHTTPCookieStore
перед выполнением WKWebView.loadReques()
.Пример кода выглядит следующим образом:
CopyCookieToWebviewWithHandler(() =>
{
NSUrl url = new NSUrl("xxx");
NSUrlRequest request = NSUrlRequest.FromUrl(url);
webView.LoadRequest(request);
});
void CopyCookieToWebviewWithHandler(Action completionHandler)
{
NSHttpCookie[] cookies = NSHttpCookieStorage.SharedStorage.Cookies;
WKHttpCookieStore cookieStore = webView.Configuration.WebsiteDataStore.HttpCookieStore;
if(cookies.Length==0)
{
completionHandler();
return;
}
foreach (NSHttpCookie cookie in cookies)
{
cookieStore.SetCookie(cookie,() =>
{
if(cookies[cookies.Length-1]==cookie)
{
completionHandler();
return;
}
});
}
}
Примечание: WKHttpCookieStore будет доступно только после iOS 11.0