gpt4 book ai didi

ios - 如何删除 WKWebview cookies

转载 作者:IT王子 更新时间:2023-10-29 08:00:15 32 4
gpt4 key购买 nike

目前我是这样做的

    NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
[storage deleteCookie:cookie];
}

但它不适用于 iOS 8、64 位设备。

WKWebview 的 clean cookie 有没有其他方式?任何帮助将不胜感激。谢谢。

最佳答案

Apple 为 iOS 9 发布了新的 API,因此现在我们可以使用以下代码删除为 WKWebView 存储的域特定 cookie。

Swift 4/5 版本:

let dataStore = WKWebsiteDataStore.default()
dataStore.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
dataStore.removeData(
ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(),
for: records.filter { $0.displayName.contains("facebook") },
completionHandler: completion
)
}

下面是 Swift 3 版本

let dataStore = WKWebsiteDataStore.default()
dataStore.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { (records) in
for record in records {
if record.displayName.contains("facebook") {
dataStore.removeData(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), for: [record], completionHandler: {
print("Deleted: " + record.displayName);
})
}
}
}

Objective-C 版本 -

WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore];
[dateStore
fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes]
completionHandler:^(NSArray<WKWebsiteDataRecord *> * __nonnull records) {
for (WKWebsiteDataRecord *record in records) {
if ( [record.displayName containsString:@"facebook"]) {
[[WKWebsiteDataStore defaultDataStore]
removeDataOfTypes:record.dataTypes
forDataRecords:@[record]
completionHandler:^{
NSLog(@"Cookies for %@ deleted successfully",record.displayName);
}
];
}
}
}
];

以上代码段肯定适用于 iOS 9 及更高版本。不幸的是,如果我们对 iOS 9 之前的 iOS 版本使用 WKWebView,我们仍然必须坚持传统的方法并删除整个 cookie 存储,如下所示。

NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *cookiesFolderPath = [libraryPath stringByAppendingString:@"/Cookies"];
NSError *errors;
[[NSFileManager defaultManager] removeItemAtPath:cookiesFolderPath error:&errors];

关于ios - 如何删除 WKWebview cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289838/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com