我有一个Xamarin Forms应用程序,该应用程序使用cookie来跟踪登录状态,并且同时使用HTTPRequest和Webview,因此两者都需要共享cookie。使用UIWebView可以共享这些cookie,而无需我进行任何额外的管理。使用WKWebView似乎并非如此。我一直在寻找有关如何使用WKWebView处理cookie的说明,或如何在这两个对象之间手动检索和设置cookie的示例,但一直找不到。将UIWebView与WKWebView一起使用时,如何获得我依赖的cookie行为?
您可以创建自定义WKNavigationDelegate。
public class MyCustomWebViewDelegate : WKNavigationDelegate
{
public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
{
var jCookies = Appl.FlurlClient.Cookies.Values;
NSHttpCookie[] nsHttpCookies = jCookies.Where(c => c != null).Select(c => new NSHttpCookie(c)).ToArray();
foreach (var c in nsHttpCookies)
{
webView.Configuration.WebsiteDataStore.HttpCookieStore.SetCookie(c);
}
decisionHandler(WKNavigationActionPolicy.Allow);
}
}
并以::身份分配给webView>
webView.NavigationDelegate = new MyCustomWebViewDelegate();
[iOS 12以上与从WKWebview
获取cookie有所不同。您可以尝试通过从WKNavigationDelegate