import Flutter import UIKit import WebKit private let h5CacheChannelName = "io.openim.flutter.im_webview_app/h5_cache" @main @objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { return super.application(application, didFinishLaunchingWithOptions: launchOptions) } func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) let h5CacheChannel = FlutterMethodChannel( name: h5CacheChannelName, binaryMessenger: engineBridge.applicationRegistrar.messenger() ) h5CacheChannel.setMethodCallHandler { [weak self] call, result in switch call.method { case "clearAllWebsiteData": guard let self else { result(false) return } self.clearAllH5WebsiteData(result: result) default: result(FlutterMethodNotImplemented) } } } private func clearAllH5WebsiteData(result: @escaping FlutterResult) { let dataTypes = WKWebsiteDataStore.allWebsiteDataTypes() WKWebsiteDataStore.default().removeData( ofTypes: dataTypes, modifiedSince: Date(timeIntervalSince1970: 0) ) { result(true) } } }