Совместное использование файлов cookie между Xamarin WKWebView и UIWebView. - PullRequest
0 голосов
/ 27 декабря 2018

Мы знаем, что мы можем делиться файлами cookie между WKWebViews, как обсуждалось здесь , а также в других обсуждениях.

Но возможно ли совместное использование файлов cookie между WKWebView и UIWebView?

Как Http cookie, так и другие cookie.

Кому-нибудь удалось это сделать?

1 Ответ

0 голосов
/ 28 декабря 2018

Можно ли обмениваться файлами 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

...