// // XSMessageMehtodChannel.swift // Runner // // Created by MacBook Pro on 2023/6/28. // import UIKit class XSMessageMehtodChannel: NSObject,SSOralEvaluatingManagerDelegate { var resultData:Dictionary? var messageChannel:FlutterMethodChannel? init(message:FlutterBinaryMessenger) { super.init() resultData = Dictionary() messageChannel = FlutterMethodChannel.init(name: "wow_english/sing_sound_method_channel", binaryMessenger: message) messageChannel!.setMethodCallHandler { call, result in self.handle(call, result) } } //配置评测信息 func setEvaluateConfig(dict:Dictionary) { let appKey = dict["appKey"] as? String ?? "" let secretKey = dict["secretKey"] as? String ?? "" let userId = dict["userId"] as? String ?? "guest" let frontTime = dict["frontTime"] as? String ?? "3" let backTime = dict["frontTime"] as? String ?? "3" let config = SSOralEvaluatingManagerConfig.init() config.vad = true config.isOutputLog = false config.appKey = appKey //"a418" config.secretKey = secretKey //"1a16f31f2611bf32fb7b3fc38f5b2c81"' config.frontTime = Double(frontTime)! config.backTime = Double(backTime)! SSOralEvaluatingManager.register(config) SSOralEvaluatingManager.share().register(.line, userId: userId) SSOralEvaluatingManager.share().delegate = self } //开始评测 func evaluateVoice(dict:Dictionary) { let text = dict["word"] as? String ?? "" let type = dict["type"] as? String ?? "0" let userId = dict["userId"] as? String ?? "guest" let config = SSOralEvaluatingConfig() config.oralContent = text if (type == "0") { config.oralType = .word } else { config.oralType = .sentence } config.oralType = .kidSent config.userId = userId SSOralEvaluatingManager.share().startEvaluateOral(with: config) } func handle(_ call: FlutterMethodCall,_ result: @escaping FlutterResult) { if (call.method == "initVoiceSdk") { self.setEvaluateConfig(dict:call.arguments as! Dictionary) return } if (call.method == "startVoice") { self.evaluateVoice(dict: call.arguments as! Dictionary) return } if (call.method == "stopVoice") { SSOralEvaluatingManager.share().stopEvaluate(); return } } //评测结果回调 func evaluateResult() { messageChannel!.invokeMethod("voiceResult", arguments: resultData) } //SSOralEvaluatingManagerDelegate /** 评测开始 */ func oralEvaluatingDidStart() { print("评测开始") // messageChannel!.invokeMethod("voiceStart", arguments: nil) } /** 评测停止 */ func oralEvaluatingDidStop() { print("评测结束") // messageChannel!.invokeMethod("voiceEnd",arguments: nil) } /** 评测完成后的结果 */ func oralEvaluatingDidEnd(withResult result: [AnyHashable : Any]?, requestId request_id: String?) { var resultDict:Dictionary = result as! Dictionary resultData! = resultDict; self.evaluateResult() } /** 评测失败回调 */ func oralEvaluatingDidEndError(_ error: Error?, requestId request_id: String?) { messageChannel!.invokeMethod("voiceFail", arguments: error?.localizedDescription) } /** VAD(前置时间)超时回调 */ func oralEvaluatingDidVADFrontTimeOut() { SSOralEvaluatingManager.share().cancelEvaluate() } /** VAD(后置时间)超时回调 */ func oralEvaluatingDidVADBackTimeOut() { ///结束回调 SSOralEvaluatingManager.share().stopEvaluate(); } }