2017-07-01 151 views
1

我已經嘗試了所有我可以在網上找到關於清除使用Xamarin.Auth的Android WebView的cookie的一切。 Auth庫不公開Android WebView;我無法使用其WebSettings,也無法清除該WebView對象上的緩存。Xamarin.Auth,WebView清除Cookie上的Android

Xamarin.Auth公開了一種清除Cookie:

public static void ClearCookies() 
{ 
     global::Android.Webkit.CookieSyncManager.CreateInstance(global::Android.App.Application.Context); 
     global::Android.Webkit.CookieManager.Instance.RemoveAllCookie(); 
} 

這似乎並沒有對餅乾的效果。我可以在通過Chrome進行調試的同時看到餅乾,並在那裏清除所有餅乾。

我試圖CookieManager.Instance.RemoveAllCookies(null);CookieManager.Instance.RemoveSessionCookies(null);,創建一個新的WebView Xamarin.Auth創建自己的實例之前,設置SetAcceptCookies爲false,結算WebViewStorage和刪除「webview.db」和「webviewCache.db。」但所有的cookies仍然存在。

我看了一個荒謬的數量的建議和答案。

使用Xamarin.Auth v1.5.0.3並在S4 Mini,S7,LG G3 Beat上測試。

*編輯
由於CookieManager.Instance.Sync()asyncronously運行時,會不會是這個未及時完成或者乾脆不跑?

回答

0

我一直在使用這些代碼行取得了成功:

CookieManager.Instance.RemoveAllCookie(); 
CookieManager.Instance.RemoveSessionCookie(); 
CookieManager.Instance.Flush(); 
CookieSyncManager.Instance.Sync(); 
1

下面的代碼對你有用

Xamarin.Android:

var cookieManager = CookieManager.Instance; 
cookieManager.RemoveAllCookie(); 

Xamarin.iOS:

NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage; 
     foreach (var cookie in CookieStorage.Cookies) 
      CookieStorage.DeleteCookie(cookie); 
     } 

Xamarin.Forms:

PCL:

IClearCookies.cs

using System; 
namespace POCDemo 
{ 
    public interface IClearCookies 
    { 
     void Clear(); 
    } 
} 

機器人:

IClearCookiesImplementation.cs

using POCDemo.Droid; 
using Xamarin.Forms; 
using System.Net; 
using Android.Webkit; 

[assembly: Dependency(typeof(IClearCookiesImplementation))] 
namespace POCDemo.Droid{ 
public class IClearCookiesImplementation : IClearCookies{ 
    public void Clear(){ 
     var cookieManager = CookieManager.Instance; 
     cookieManager.RemoveAllCookie(); 
     } 
    } 
} 

的iOS

IClearCookiesImplementation。CS

using POCDemo.iOS; 
using Xamarin.Forms; 
using System.Net; 
using Foundation; 

[assembly: Dependency(typeof(IClearCookiesImplementation))] 
namespace POCDemo.iOS{ 
public class IClearCookiesImplementation : IClearCookies{ 
    public void Clear(){ 
     NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage; 
     foreach (var cookie in CookieStorage.Cookies) 
      CookieStorage.DeleteCookie(cookie); 
     } 
    } 
} 

呼叫依存服務

PCL:

DependencyService.Get<IClearCookies>().Clear(); 

它的工作對我來說