import Flutter public class OtaPlugin: NSObject, FlutterPlugin { let userManager = JLBleManager.sharedInstance() public static func register(with registrar: FlutterPluginRegistrar) { let channel = FlutterMethodChannel(name: "ota", binaryMessenger: registrar.messenger()) let instance = OtaPlugin() registrar.addMethodCallDelegate(instance, channel: channel) } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { let arguments = call.arguments as? [String: Any] switch call.method { case "startUpgrading": let address = arguments?["address"] as? String let filePath = arguments?["filePath"] as? String startUpgrading(address: address, filePath: filePath) result("") case "onOtaClose": onOtaClose() result("") default: result(FlutterMethodNotImplemented) } } private func startUpgrading(address: String?, filePath: String?) { if userManager.mBleManagerState == CBManagerState.poweredOn { userManager.startScanBLE(address, filePath: filePath) DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) { self.userManager.stopScanBLE() } } } private func onOtaClose() {} }