提问者:小点点

清除Xamarin iOS Build中的Cookie NHttpCookieStorage未清除WebView的Cookie


使用Xamarin WebView运行验证的应用程序。正在尝试删除用户注销或取消时的登录信息。这是我的代码,注意正在进行的调试。我已经检查了共享存储是否为空,但由于用户登录仍被缓存,所以发生了一些事情。注销后,如果网页再次被调出,则用户自动再次登录。代码正在运行,因为我正在获取调试器输出。

代码段:'

public void Clear()
       {
        NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage;
        foreach (var cookie in CookieStorage.Cookies)
        {
            Debug.WriteLine(cookie);
            CookieStorage.DeleteCookie(cookie);
            
        }
    }

`

如何调用依赖项服务DependencyService.Get().Clear();


共1个答案

匿名用户

将一个快速示例修改为C#以获得一种“Hacky”解决方案:

public void Clear()
    {
        NSHttpCookieStorage.SharedStorage.RemoveCookiesSinceDate(NSDate.DistantPast);

        WKWebsiteDataStore.DefaultDataStore.FetchDataRecordsOfTypes(WKWebsiteDataStore.AllWebsiteDataTypes, (NSArray records) => {

        for (nuint i = 0; i < records.Count; i++)
        {
                var record = records.GetItem<WKWebsiteDataRecord>(i);
                WKWebsiteDataRecord[] recordArray = new WKWebsiteDataRecord[record.DataTypes.Count];
                WKWebsiteDataStore.DefaultDataStore.RemoveDataOfTypes(record.DataTypes, NSDate.DistantPast, ()=> { });
            }

        });

    }