代码之家  ›  专栏  ›  技术社区  ›  Swathy

如何使用xamarin表单在WKWebview中设置cookie

  •  0
  • Swathy  · 技术社区  · 6 年前

    我正在尝试将现有应用程序从UIWebView切换到WKWebView。该应用程序管理用户在webview之外的登录/会话。我正在使用WKWebsiteDataStore设置cookies,它在iOS 11+中工作,但在iOS 10及以下版本中,应用程序正在崩溃。

    这是我的密码

    protected async void LoadCookies()
    {
    var cookieStore = WKWebsiteDataStore.DefaultDataStore;
    var cookies = NSHttpCookieStorage.SharedStorage.Cookies;
    var oldcookies = await dataStore.HttpCookieStore.GetAllCookiesAsync();
    foreach (var cookie in oldcookies)
    {
        await cookieStore.HttpCookieStore.DeleteCookieAsync(cookie);
    }
    foreach (var cookie in cookies)
    {
        await cookieStore.HttpCookieStore.SetCookieAsync(cookie);
    }
    } 
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   nevermore    6 年前

    如果你读过关于 httpCookieStore ,你会发现 httpCookieStore 从iOS 11.0开始提供。这就是你的应用程序在iOS 10及以下版本中崩溃的原因。

    您可以在中找到解决方案 this answer 在iOS 10及以下版本中。

        if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
        {
            foreach (var cookie in cookies)
            {
                await cookieStore.HttpCookieStore.SetCookieAsync(cookie);
            }
        }
        else
        {
    
            NSMutableUrlRequest request = new NSMutableUrlRequest(new Uri(""));
            request.ShouldHandleCookies = true;
            request.SetValueForKey(new NSString("123"), new NSString("Cookie"));
        }