想要在 React Native CookieManager.clearAll() 中清除 webView 的缓存;无法在 iOS 中工作

aru*_*der 5 javascript react-native react-native-webview

想要从 React Native 中的 Reaact-native-webView 清除缓存,{CookieManager.clearAll();} - 在 iOS 中不起作用

小智 18

当您想要使用 WebView 时,可以使用 WebView 中的 Incognito 属性来清除缓存。

<WebView
........
incognito={true}
/>
Run Code Online (Sandbox Code Playgroud)


Ani*_*ita 6

我必须在注销时清除缓存,必须创建一个本机模块,并将其桥接到 React Native。这是代码:

// ClearWebviewCache.m
#import "ClearWebviewCache.h"
#import "WebKit/WKWebsiteDataStore.h"

@implementation ClearWebviewCache

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(clearWebviewIOS:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject){
  
  NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
  NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
  dispatch_async(dispatch_get_main_queue(), ^{
    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
      return resolve(@"ok");
    }];
  });
}

@end
Run Code Online (Sandbox Code Playgroud)

标题:


#import <React/RCTBridgeModule.h>

@interface ClearWebviewCache : NSObject <RCTBridgeModule>
@end
Run Code Online (Sandbox Code Playgroud)

然后你可以在 React Native 中调用它:

await NativeModules.ClearWebviewCache.clearWebviewIOS();