Skip to content

Commit dbe7d11

Browse files
authored
fixed cleaning cookies for webview (#597)
1 parent e57aff9 commit dbe7d11

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

ios/Classes/FlutterWebviewPlugin.m

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,8 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
6262
[self stopLoading];
6363
result(nil);
6464
} else if ([@"cleanCookies" isEqualToString:call.method]) {
65-
[[NSURLSession sharedSession] resetWithCompletionHandler:^{
66-
result(nil);
67-
}];
65+
[self cleanCookies];
66+
result(nil);
6867
} else if ([@"back" isEqualToString:call.method]) {
6968
[self back];
7069
result(nil);
@@ -105,17 +104,10 @@ - (void)initWebview:(FlutterMethodCall*)call {
105104
}
106105

107106
if (clearCookies != (id)[NSNull null] && [clearCookies boolValue]) {
108-
if (@available(iOS 9.0, *)) {
109-
NSSet *websiteDataTypes
110-
= [NSSet setWithArray:@[
111-
WKWebsiteDataTypeCookies,
112-
]];
113-
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
114-
115-
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
116-
}];
117-
} else {
118-
// Fallback on earlier versions
107+
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
108+
for (NSHTTPCookie *cookie in [storage cookies])
109+
{
110+
[storage deleteCookie:cookie];
119111
}
120112
}
121113

@@ -259,6 +251,17 @@ - (void)reloadUrl:(FlutterMethodCall*)call {
259251
[self.webview loadRequest:request];
260252
}
261253
}
254+
255+
- (void)cleanCookies {
256+
if(self.webview != nil) {
257+
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
258+
for (NSHTTPCookie *cookie in [storage cookies])
259+
{
260+
[storage deleteCookie:cookie];
261+
}
262+
}
263+
}
264+
262265
- (void)show {
263266
if (self.webview != nil) {
264267
self.webview.hidden = false;

lib/src/base.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,11 @@ class FlutterWebviewPlugin {
258258
}
259259

260260
// Clean cookies on WebView
261-
Future<Null> cleanCookies() async =>
262-
await _channel.invokeMethod('cleanCookies');
261+
Future<Null> cleanCookies() async {
262+
// one liner to clear javascript cookies
263+
await evalJavascript('document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });');
264+
return await _channel.invokeMethod('cleanCookies');
265+
}
263266

264267
// Stops current loading process
265268
Future<Null> stopLoading() async =>

0 commit comments

Comments
 (0)