From: liangzhenying <867174124@qq.com> Date: Mon, 19 Jan 2026 07:20:40 +0000 (+0800) Subject: 修复了joy按键开启通话录音时间不显示问题 X-Git-Tag: mix-v1.0~3 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=203229fd59aa3cf742ab3fe29fc278b78ffd274b;p=mirrors%2FShenYin.git 修复了joy按键开启通话录音时间不显示问题 --- diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index 1125f27..764a123 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -9,11 +9,7 @@ /* Begin PBXBuildFile section */ 30B13DEF1AA0E4C54D873276 /* Pods_playboy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F1BB919D567C3B6B0EBAA7 /* Pods_playboy.framework */; }; 3F8F58292EBCA2B800FFC00B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; }; - 3FD1DFEB2F0E00BF00A62733 /* JLAudioUnitKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */; }; 3FD1DFED2F0E00BF00A62733 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; }; - 3FD1DFF02F0E00BF00A62733 /* JLAudioUnitKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 3FEFE9072F1B252000D82F17 /* JoyGemAI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FEFE9062F1B252000D82F17 /* JoyGemAI.framework */; }; - 3FEFE9082F1B252000D82F17 /* JoyGemAI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3FEFE9062F1B252000D82F17 /* JoyGemAI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3FFB77C12F179F3100EF9A60 /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; }; 3FFB77C22F179F3100EF9A60 /* DeepChordsSdk.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 644D1BB5EDD3EA1D77C57786 /* Pods_DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */; }; @@ -40,7 +36,6 @@ dstSubfolderSpec = 10; files = ( 3FFB77C22F179F3100EF9A60 /* DeepChordsSdk.framework in Embed Frameworks */, - 3FD1DFF02F0E00BF00A62733 /* JLAudioUnitKit.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -51,7 +46,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 3FEFE9082F1B252000D82F17 /* JoyGemAI.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -78,9 +72,7 @@ 3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3F887B9C2E38D8DC00C98658 /* ShenYin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShenYin.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; - 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = JLAudioUnitKit.xcframework; path = framework/JLAudioUnitKit.xcframework; sourceTree = ""; }; 3FD1DFF42F0E00BF00A62733 /* playboy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = playboy.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 3FEFE9062F1B252000D82F17 /* JoyGemAI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JoyGemAI.framework; path = framework/JoyGemAI.framework; sourceTree = ""; }; 5A92F7DC2CB6E6E69D2AB23E /* Pods-DeepChordsSdk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.debug.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig"; sourceTree = ""; }; 5F5DE5910965D53C2B3405B0 /* Pods-ShenYin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShenYin.debug.xcconfig"; path = "Target Support Files/Pods-ShenYin/Pods-ShenYin.debug.xcconfig"; sourceTree = ""; }; 90FF0C8B0D4D6AE0933FA672 /* Pods_ShenYin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ShenYin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -102,21 +94,20 @@ Sdk/CCBleManager.swift, Sdk/CCDevice.swift, Sdk/CCPage.swift, - Sdk/DcSdk/CCBleManager.swift, - Sdk/DcSdk/CCDevice.swift, - Sdk/DcSdk/CCPage.swift, - Sdk/DcSdk/DcBleManager.swift, - Sdk/DcSdk/DcCall.swift, - Sdk/DcSdk/DcChatManager.swift, - Sdk/DcSdk/DcChinese2Enligsh.swift, - Sdk/DcSdk/DcSdkManager.swift, - Sdk/DcSdk/DcStereo.swift, - Sdk/DcSdk/DcTcty.swift, - Sdk/DcSdk/DcThly.swift, - Sdk/DcSdk/DcXcly.swift, - Sdk/DcSdk/HomeDeviceVC.swift, - Sdk/DcSdk/ModeVC.swift, - Sdk/DcSdk/OpusTools.swift, + Sdk/DcSdk/tool/CCBleManager.swift, + Sdk/DcSdk/tool/CCDevice.swift, + Sdk/DcSdk/tool/CCPage.swift, + Sdk/DcSdk/tool/DcCall.swift, + Sdk/DcSdk/tool/DcChatManager.swift, + Sdk/DcSdk/tool/DcChinese2Enligsh.swift, + Sdk/DcSdk/tool/DcSdkManager.swift, + Sdk/DcSdk/tool/DcStereo.swift, + Sdk/DcSdk/tool/DcTcty.swift, + Sdk/DcSdk/tool/DcThly.swift, + Sdk/DcSdk/tool/DcXcly.swift, + Sdk/DcSdk/tool/JLAudioUnitKit.xcframework, + Sdk/DcSdk/tool/OpusTools.swift, + Sdk/DcSdk/VC/AiFunctionVC.swift, Sdk/DcSdk/VC/DcCallingRecordVC.swift, Sdk/DcSdk/VC/DcChatVC.swift, Sdk/DcSdk/VC/DcChinese2EnglishVC.swift, @@ -124,6 +115,8 @@ Sdk/DcSdk/VC/DcStereoCallVC.swift, Sdk/DcSdk/VC/DcTctyVC.swift, Sdk/DcSdk/VC/DcXclyVC.swift, + Sdk/DcSdk/VC/HomeDeviceVC.swift, + Sdk/DcSdk/VC/ModeVC.swift, "ShenYin copy-Info.plist", ); target = 3F887B9B2E38D8DC00C98658 /* ShenYin */; @@ -137,19 +130,19 @@ Sdk/CCBleManager.swift, Sdk/CCDevice.swift, Sdk/CCPage.swift, - Sdk/JoySdk/CCBleManager.swift, - Sdk/JoySdk/CCDevice.swift, - Sdk/JoySdk/CCPage.swift, - Sdk/JoySdk/HomeDeviceVC.swift, - Sdk/JoySdk/JoyCallRecord.swift, - Sdk/JoySdk/JoyChat.swift, - Sdk/JoySdk/JoyChinse2English.swift, - Sdk/JoySdk/JoyDialog.swift, - Sdk/JoySdk/JoyGemAI.framework, - Sdk/JoySdk/JoyRecord.swift, - Sdk/JoySdk/JoySdkManager.swift, - Sdk/JoySdk/JoyTcty.swift, - Sdk/JoySdk/ModeVC.swift, + Sdk/JoySdk/tool/CCBleManager.swift, + Sdk/JoySdk/tool/CCDevice.swift, + Sdk/JoySdk/tool/CCPage.swift, + Sdk/JoySdk/tool/JoyCallRecord.swift, + Sdk/JoySdk/tool/JoyChat.swift, + Sdk/JoySdk/tool/JoyChinse2English.swift, + Sdk/JoySdk/tool/JoyDialog.swift, + Sdk/JoySdk/tool/JoyGemAI.framework, + Sdk/JoySdk/tool/JoyRecord.swift, + Sdk/JoySdk/tool/JoySdkManager.swift, + Sdk/JoySdk/tool/JoyTcty.swift, + Sdk/JoySdk/VC/AiFunctionVC.swift, + Sdk/JoySdk/VC/HomeDeviceVC.swift, Sdk/JoySdk/VC/JoyCallingRecordVC.swift, Sdk/JoySdk/VC/JoyChatVC.swift, Sdk/JoySdk/VC/JoyChinese2EnglishVC.swift, @@ -157,6 +150,7 @@ Sdk/JoySdk/VC/JoyStereoCallVC.swift, Sdk/JoySdk/VC/JoyTctyVC.swift, Sdk/JoySdk/VC/JoyXclyVC.swift, + Sdk/JoySdk/VC/ModeVC.swift, ); target = 3FD1DFE32F0E00BF00A62733 /* playboy */; }; @@ -170,6 +164,26 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + 3FCC8B152F1E0280004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + Sdk/JoySdk/tool/JoyGemAI.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3FEFE9092F1B252000D82F17 /* Embed Frameworks */; + membershipExceptions = ( + Sdk/JoySdk/tool/JoyGemAI.framework, + ); + }; + 3FCC8B1A2F1E030E004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "playboy" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + Sdk/DcSdk/tool/JLAudioUnitKit.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3FD1DFEF2F0E00BF00A62733 /* Embed Frameworks */; + membershipExceptions = ( + Sdk/DcSdk/tool/JLAudioUnitKit.xcframework, + ); + }; 3FFB77C62F17A11100EF9A60 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */ = { isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; attributesByRelativePath = { @@ -196,7 +210,9 @@ isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( 3F887BAE2E38D8DD00C98658 /* Exceptions for "ShenYin" folder in "ShenYin" target */, + 3FCC8B152F1E0280004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "ShenYin" target */, 3FD1DFF52F0E00BF00A62733 /* Exceptions for "ShenYin" folder in "playboy" target */, + 3FCC8B1A2F1E030E004C2A13 /* Exceptions for "ShenYin" folder in "Embed Frameworks" phase from "playboy" target */, ); path = ShenYin; sourceTree = ""; @@ -217,7 +233,6 @@ buildActionMask = 2147483647; files = ( F2E449CAD5874BE652A69B50 /* (null) in Frameworks */, - 3FEFE9072F1B252000D82F17 /* JoyGemAI.framework in Frameworks */, 7A6613B4B617D6E71D34944C /* Pods_ShenYin.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -226,7 +241,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3FD1DFEB2F0E00BF00A62733 /* JLAudioUnitKit.xcframework in Frameworks */, 3FFB77C12F179F3100EF9A60 /* DeepChordsSdk.framework in Frameworks */, 817510A595D00CAD05E3772C /* (null) in Frameworks */, 30B13DEF1AA0E4C54D873276 /* Pods_playboy.framework in Frameworks */, @@ -286,8 +300,6 @@ 676B86A4BA2639E8694D56B4 /* Frameworks */ = { isa = PBXGroup; children = ( - 3FEFE9062F1B252000D82F17 /* JoyGemAI.framework */, - 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */, 3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */, 248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */, 90FF0C8B0D4D6AE0933FA672 /* Pods_ShenYin.framework */, @@ -723,6 +735,7 @@ "$(PROJECT_DIR)/ShenYin/Sdk/Ota", "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", "$(PROJECT_DIR)/framework", + "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Info.plist; @@ -784,6 +797,7 @@ "$(PROJECT_DIR)/ShenYin/Sdk/Ota", "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", "$(PROJECT_DIR)/framework", + "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Info.plist; diff --git a/ShenYin/ShenYin/Sdk/CCBleManager.swift b/ShenYin/ShenYin/Sdk/CCBleManager.swift index f12a67b..99f1f7a 100644 --- a/ShenYin/ShenYin/Sdk/CCBleManager.swift +++ b/ShenYin/ShenYin/Sdk/CCBleManager.swift @@ -56,7 +56,7 @@ // NotificationManager.post(type: .deviceValidChange, objtect: nil) // break // case.poweredOn: -// // startScanDevice() +// startScanDevice() // checkConectState() // break // @unknown default: diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcBleManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/DcBleManager.swift deleted file mode 100644 index dd6d19d..0000000 --- a/ShenYin/ShenYin/Sdk/DcSdk/DcBleManager.swift +++ /dev/null @@ -1,143 +0,0 @@ -//// -//// DcBleManager.swift -//// Example -//// -//// Created by liangshi on 2025/11/24. -//// -// -//// -//// Untitled.swift -//// ShenYin -//// -//// Created by liangshi on 2025/8/28. -//// -// -//import UIKit -//import CoreBluetooth -//import DeepChordsSdk -// -//class DcBleManager: NSObject { -// var discoverDeviceCallback: (([CBPeripheral]) -> Void)? -// var didConnectDeviceCallback: ((CBPeripheral) -> Void)? -// var disConnectDeviceCallback: ((CBPeripheral) -> Void)? -// var conetedFailureCallback: ((CBPeripheral) -> Void)? -// -// private var centralManager: CBCentralManager! -// var devices: [CBPeripheral] = [] -// -// private override init() { -// super.init() -// centralManager = CBCentralManager(delegate: self, queue: nil) -// } -// -// static let shared = DcBleManager() -// -// func stopScanDevice() { -// centralManager.stopScan() -// } -// func startScanDevice() { -// // centralManager.stopScan() -// DCLogger.debug("扫描中...") -// devices = [] -// -// if let connectedPeripheral = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: "AE30")]).first{ -// devices = [connectedPeripheral] -// } -// discoverDeviceCallback?(devices) -// centralManager.scanForPeripherals(withServices: nil,options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) -// -// } -// func connectPeripheral(_ peripheral: CBPeripheral) { -// DCLogger.debug("正在连接...",peripheral) -// centralManager.connect(peripheral, options: [CBConnectPeripheralOptionNotifyOnConnectionKey: true]) -// } -// func cancel(){ -// -// } -// func autoConnect(){ -//// if let peripheral = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: "AE30")]).first{ -//// connectPeripheral(peripheral) -//// } -// } -//} -//extension DcBleManager:CBCentralManagerDelegate{ -// func centralManagerDidUpdateState(_ central: CBCentralManager) { -// DCLogger.debug("蓝牙状态",central.state.rawValue) -// switch central.state { -// case.unknown: -// break -// case.resetting: -// break -// case.unsupported: -// break -// case.unauthorized: -// break -// case.poweredOff: -// -// break -// case.poweredOn: -// startScanDevice() -// break -// @unknown default: -// break -// } -// } -// -// func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { -// if devices.contains(peripheral) { -// return -// } -// if let name = peripheral.name,name.hasPrefix("AI") { -// devices.append(peripheral) -// DCLogger.debug(peripheral) -// discoverDeviceCallback?(devices) -// } -// } -// -// func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { -// stopScanDevice() -// DCLogger.debug("蓝牙已连接 \(peripheral)") -// -// peripheral.delegate = self -// peripheral.discoverServices(nil); -// DCDcBleManager.shared.centralManager(central, didConnect: peripheral) -// self.didConnectDeviceCallback?(peripheral) -// App.shared.window?.makeToast("蓝牙已连接") -// } -// func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { -// DCDcBleManager.shared.centralManager(central, didFailToConnect: peripheral, error: error) -// } -// func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) { -// disConnectDeviceCallback?(peripheral) -// DCDcBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil) -// App.shared.window?.makeToast("蓝牙已断开连接") -// App.shared.window?.rootViewController = UINavigationController(rootViewController: DeviceListVC()) -// } -//} -// -//extension DcBleManager: CBPeripheralDelegate { -// func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { -// DCDcBleManager.shared.peripheral(peripheral, didDiscoverServices: error) -// } -// -// func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { -// DCDcBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) -// } -// -// func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: (any Error)?) { -// DCLogger.debug("状态改变 == UUID ",characteristic.uuid) -// } -// -// func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { -// DCDcBleManager.shared.peripheral(peripheral, didUpdateValueFor: characteristic, error: error) -// -// } -// -// func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService]) { -// // Accessory's GATT database has updated. Refresh your local cache (if any) -// } -// -// func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: (any Error)?) { -// -// } -//} diff --git a/ShenYin/ShenYin/UI/Home/Root/AiFunctionVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/AiFunctionVC.swift similarity index 93% rename from ShenYin/ShenYin/UI/Home/Root/AiFunctionVC.swift rename to ShenYin/ShenYin/Sdk/DcSdk/VC/AiFunctionVC.swift index 666dd45..258d5c2 100644 --- a/ShenYin/ShenYin/UI/Home/Root/AiFunctionVC.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/VC/AiFunctionVC.swift @@ -58,7 +58,7 @@ class AiFunctionVC:BaseVC{ } } func updateUI(){ - if let mac = CCBleManager.shared.connectPeripheral?.mac, mac == device.mac, CCBleManager.shared.isConnetd{ + if CCBleManager.shared.isConected(mac: device.mac){ headerView.enable = true functionView.enable = true } @@ -71,16 +71,11 @@ class AiFunctionVC:BaseVC{ updateUI() } @objc func chatAction(){ - if let mac = CCBleManager.shared.connectPeripheral?.mac, mac == device.mac, CCBleManager.shared.isConnetd{ + if CCBleManager.shared.isConected(mac: device.mac){ CCPage.gotoChat() } } func tapFunctionAction(_ type:HomeCellType){ -// if type == .recordHistory{ -// App.shared.goToPage(HistoryRecordVC()) -// return -// } -// if let mac = CCBleManager.shared.connectPeripheral?.mac, mac == device.mac, CCBleManager.shared.isConnetd{ switch type { case .fileRecord: CCPage.gotoFieldRecord() @@ -97,7 +92,6 @@ class AiFunctionVC:BaseVC{ case .recordHistory: App.shared.goToPage(HistoryRecordVC()) } -// } } } @@ -143,7 +137,6 @@ fileprivate class AiFunctionHeadView: BaseView { v.font = .regular(12) v.text = "AI" + "伙伴,随叫随到".l10n } - self.enable = CCBleManager.shared.isConnetd } override func setupLayout() { @@ -199,7 +192,6 @@ fileprivate class AiFunctionView: BaseView { var y = 0.0 for (index, value) in list.enumerated() { let view = HomeCell() - view.enable = CCBleManager.shared.isConnetd view.yc.addTap(target: self, action: #selector(tapAction(_:))) addSubview(view) diff --git a/ShenYin/ShenYin/Sdk/DcSdk/HomeDeviceVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/HomeDeviceVC.swift similarity index 95% rename from ShenYin/ShenYin/Sdk/DcSdk/HomeDeviceVC.swift rename to ShenYin/ShenYin/Sdk/DcSdk/VC/HomeDeviceVC.swift index 30af5fa..b2d414b 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/HomeDeviceVC.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/VC/HomeDeviceVC.swift @@ -156,16 +156,8 @@ extension HomeDeviceVC:UICollectionViewDataSource,UICollectionViewDelegate,UICol return cell } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - if CCDevice.isJoy { - let model = DeviceVM.shared.dataList[indexPath.row] - App.shared.goToPage(HomeVC(device: model)) - } - else{ - let model = DeviceVM.shared.dataList[indexPath.row] - App.shared.goToPage(AiFunctionVC(device: model)) - } - - + let model = DeviceVM.shared.dataList[indexPath.row] + App.shared.goToPage(AiFunctionVC(device: model)) } func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView{ diff --git a/ShenYin/ShenYin/Sdk/DcSdk/ModeVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/ModeVC.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/ModeVC.swift rename to ShenYin/ShenYin/Sdk/DcSdk/VC/ModeVC.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/CCBleManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift similarity index 99% rename from ShenYin/ShenYin/Sdk/DcSdk/CCBleManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift index ee13a92..5bc854f 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/CCBleManager.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCBleManager.swift @@ -56,7 +56,7 @@ extension CCBleManager:CBCentralManagerDelegate{ NotificationManager.post(type: .deviceValidChange, objtect: nil) break case.poweredOn: - // startScanDevice() + startScanDevice() checkConectState() break @unknown default: diff --git a/ShenYin/ShenYin/Sdk/DcSdk/CCDevice.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCDevice.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/CCDevice.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/CCDevice.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/CCPage.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/CCPage.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/CCPage.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/CCPage.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcCall.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcCall.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcCall.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcCall.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcChatManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcChatManager.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcChatManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcChatManager.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcChinese2Enligsh.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcChinese2Enligsh.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcChinese2Enligsh.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcChinese2Enligsh.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcSdkManager.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcSdkManager.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcSdkManager.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcStereo.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcStereo.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcStereo.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcStereo.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcTcty.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcTcty.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcTcty.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcTcty.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcThly.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcThly.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcThly.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcThly.swift diff --git a/ShenYin/ShenYin/Sdk/DcSdk/DcXcly.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/DcXcly.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/DcXcly.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/DcXcly.swift diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/Info.plist b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/Info.plist similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/Info.plist rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/Info.plist diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources diff --git a/ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt b/ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt similarity index 100% rename from ShenYin/framework/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt rename to ShenYin/ShenYin/Sdk/DcSdk/tool/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt diff --git a/ShenYin/ShenYin/Sdk/DcSdk/OpusTools.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/DcSdk/OpusTools.swift rename to ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/AiFunctionVC.swift similarity index 75% rename from ShenYin/ShenYin/UI/Home/Root/HomeVC.swift rename to ShenYin/ShenYin/Sdk/JoySdk/VC/AiFunctionVC.swift index 8a7b56a..4f7d3a3 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/AiFunctionVC.swift @@ -7,7 +7,7 @@ import UIKit -class HomeVC:BaseVC{ +class AiFunctionVC:BaseVC{ let bgView = UIScrollView() let headerView = HomeHeadView() let functionView = HomeFunctionView() @@ -30,8 +30,13 @@ class HomeVC:BaseVC{ navBar.backgroundColor = .color(.bgColor) view.backgroundColor = .color(.bgColor) view.addSubview(bgView) + + + bgView.addSubviews([headerView,functionView,bottomView]) + headerView.bottonView.yc.addTap(target: self, action: #selector(chatAction)) + headerView.icon.imageView.kf.setImage(with: device.image.yc.asUrl) } override func setupLayout() { @@ -60,7 +65,20 @@ class HomeVC:BaseVC{ updateUI() } func updateUI(){ - self.headerView.icon.alpha = CCBleManager.shared.isConnetd ? 1:0.5 + if CCBleManager.shared.isConected(mac: device.mac){ + self.headerView.alpha = 1 + self.functionView.alpha = 1 + } + else{ + self.headerView.alpha = 0.5 + self.functionView.alpha = 0.5 + } + functionView.enable = CCBleManager.shared.isConected(mac: device.mac) + } + @objc func chatAction(){ + if CCBleManager.shared.isConected(mac: device.mac){ + CCPage.gotoChat() + } } } diff --git a/ShenYin/ShenYin/Sdk/JoySdk/HomeDeviceVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/HomeDeviceVC.swift similarity index 99% rename from ShenYin/ShenYin/Sdk/JoySdk/HomeDeviceVC.swift rename to ShenYin/ShenYin/Sdk/JoySdk/VC/HomeDeviceVC.swift index 9e9fd95..2364006 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/HomeDeviceVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/HomeDeviceVC.swift @@ -173,7 +173,7 @@ extension HomeDeviceVC:UICollectionViewDataSource,UICollectionViewDelegate,UICol } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let model = DeviceVM.shared.dataList[indexPath.row] - App.shared.goToPage(HomeVC(device: model)) + App.shared.goToPage(AiFunctionVC(device: model)) } func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView{ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift index 45e295e..2be5333 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift @@ -145,6 +145,7 @@ class JoyCallingRecordVC:BaseVC{ } func startRecord(){ toolBar.recordBtnAction() + rhythView.startTimer() } func stopRecord(){ toolBar.recordBtnAction() diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift index 2679fc3..a173051 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift @@ -191,6 +191,7 @@ class JoyStereoCallVC:BaseVC{ } func startRecord(){ toolBar.recordBtnAction() + rhythView.startTimer() } func stopRecord(){ toolBar.recordBtnAction() diff --git a/ShenYin/ShenYin/Sdk/JoySdk/ModeVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/ModeVC.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/ModeVC.swift rename to ShenYin/ShenYin/Sdk/JoySdk/VC/ModeVC.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/CCBleManager.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/CCBleManager.swift similarity index 98% rename from ShenYin/ShenYin/Sdk/JoySdk/CCBleManager.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/CCBleManager.swift index 5bf1aa8..39d4970 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/CCBleManager.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/tool/CCBleManager.swift @@ -56,7 +56,7 @@ extension CCBleManager:CBCentralManagerDelegate{ NotificationManager.post(type: .deviceValidChange, objtect: nil) break case.poweredOn: - // startScanDevice() + startScanDevice() checkConectState() break @unknown default: @@ -254,8 +254,8 @@ extension CCBleManager{ } extension CCBleManager{ - func isConected(mac:String)->Bool{ - guard let device = connectPeripheral else { return false } + func isConected(mac:String?)->Bool{ + guard let mac = mac,let device = connectPeripheral else { return false } if device.mac == mac { return isConnetd } diff --git a/ShenYin/ShenYin/Sdk/JoySdk/CCDevice.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/CCDevice.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/CCDevice.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/CCDevice.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/CCPage.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/CCPage.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/CCPage.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/CCPage.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyCallRecord.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyCallRecord.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyCallRecord.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyCallRecord.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyChat.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyChat.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyChat.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyChat.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyChinse2English.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyChinse2English.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyChinse2English.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyChinse2English.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyDialog.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyDialog.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyDialog.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyDialog.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI-Swift.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAI-Swift.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI-Swift.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAI-Swift.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAI.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAI.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAI.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAIManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAIManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemAIManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemAIManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemCallManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemCallManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemCallManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemCallManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemChatManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemChatManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemChatManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemChatManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemDeviceManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemDeviceManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemDeviceManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemDeviceManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemEnum.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemEnum.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemEnum.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemEnum.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemModel.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemModel.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemModel.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemModel.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemParam.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemParam.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemParam.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemParam.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemRecordManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemRecordManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemRecordManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemRecordManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSIManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSIManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSIManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Info.plist b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Info.plist similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Info.plist rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Info.plist diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/JoyGemAI b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/JoyGemAI similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/JoyGemAI rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/JoyGemAI diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/module.modulemap b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/module.modulemap similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/Modules/module.modulemap rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/Modules/module.modulemap diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/PrivacyInfo.xcprivacy b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/PrivacyInfo.xcprivacy similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/PrivacyInfo.xcprivacy rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/PrivacyInfo.xcprivacy diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/_CodeSignature/CodeResources b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/_CodeSignature/CodeResources similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyGemAI.framework/_CodeSignature/CodeResources rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyGemAI.framework/_CodeSignature/CodeResources diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyRecord.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyRecord.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyRecord.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyRecord.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoySdkManager.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoySdkManager.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoySdkManager.swift diff --git a/ShenYin/ShenYin/Sdk/JoySdk/JoyTcty.swift b/ShenYin/ShenYin/Sdk/JoySdk/tool/JoyTcty.swift similarity index 100% rename from ShenYin/ShenYin/Sdk/JoySdk/JoyTcty.swift rename to ShenYin/ShenYin/Sdk/JoySdk/tool/JoyTcty.swift diff --git a/ShenYin/ShenYin/Sdk/LogManager.swift b/ShenYin/ShenYin/Sdk/LogManager.swift index 8735333..f61e054 100644 --- a/ShenYin/ShenYin/Sdk/LogManager.swift +++ b/ShenYin/ShenYin/Sdk/LogManager.swift @@ -9,7 +9,7 @@ import Foundation /// 日记管理 class Logger { - static var isDebug: Bool = true + static var isDebug: Bool = false fileprivate static let shared = Logger() private var fileHandle:FileHandle? diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift index 3bbc1bb..d199513 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift @@ -21,8 +21,6 @@ class RhythView: BaseView { stopWave.image = UIImage(named: "audio_record_normal") startWave.kf.setImage(with: Bundle.main.url(forResource: CCDevice.isJoy ? "record_start_joy":"record_start", withExtension: "gif")!) startWave.isHidden = true -// startWave.backgroundColor = .green -// backgroundColor = .red } override func setupLayout() { lable.snp.makeConstraints { make in diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift index e0d72f8..e79e7de 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift @@ -85,7 +85,6 @@ class HomeFunctionView: BaseView { var y = 0.0 for (index, value) in list.enumerated() { let view = HomeCell() - view.enable = CCBleManager.shared.isConnetd addSubview(view) view.type = value @@ -101,15 +100,17 @@ class HomeFunctionView: BaseView { } } } - NotificationManager.add(self, selector: #selector(deviceChange(_:)), forName: .deviceValidChange) } - @objc func deviceChange(_ noti:Notification){ - for item in self.subviews{ - if let view = item as? HomeCell { - view.enable = CCBleManager.shared.isConnetd + var enable:Bool = false{ + didSet{ + for item in self.subviews{ + if let view = item as? HomeCell { + view.enable = enable + } } } } + } fileprivate class HomeCell: BaseView { let bgView = UIView() @@ -124,16 +125,7 @@ fileprivate class HomeCell: BaseView { icon.image = UIImage(named: type.icon) } } - var enable:Bool = false{ - didSet{ - if enable { - alpha = 1 - } - else{ - alpha = 0.5 - } - } - } + var enable:Bool = false override func setupViews() { addSubview(bgView) @@ -187,7 +179,7 @@ fileprivate class HomeCell: BaseView { } } @objc func tapAction(){ - if !CCBleManager.shared.isConnetd { + if !enable{ return } switch type { diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift b/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift index 2596de6..5cc8ffc 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/HomeHeadView.swift @@ -14,28 +14,16 @@ class HomeHeadView: BaseView { let titleLabel = UILabel() let valueLabel = UILabel() let arrowIcon = UIImageView() - var enable:Bool = false{ - didSet{ - if enable { - bottonView.alpha = 1 - } - else{ - bottonView.alpha = 0.5 - } - } - } override func setupViews() { addSubviews([icon,bottonView]) bottonView.addSubviews([titleLabel,valueLabel,tipsIcon,arrowIcon]) -// backgroundColor = .blue icon.do { v in // v.backgroundColor = .lightGray } bottonView.do { v in v.backgroundColor = .color(.cellBg) v.yc.setCornerRadius(22) - v.yc.addTap(target: self, action: #selector(chatAction)) } tipsIcon.do { v in v.image = UIImage(named: "home_chat") @@ -51,8 +39,6 @@ class HomeHeadView: BaseView { v.text = "AI" + "伙伴,随叫随到".l10n } arrowIcon.image = UIImage(named: "arrow_2") - self.enable = CCBleManager.shared.isConnetd - NotificationManager.add(self, selector: #selector(deviceChange(_:)), forName: .deviceValidChange) } override func setupLayout() { @@ -86,14 +72,6 @@ class HomeHeadView: BaseView { } } - @objc func chatAction(){ - if CCBleManager.shared.isConnetd { - CCPage.gotoChat() - } - } - @objc func deviceChange(_ noti:Notification){ - self.enable = CCBleManager.shared.isConnetd - } } diff --git a/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift b/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift index 9675ff2..948076c 100644 --- a/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift +++ b/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift @@ -58,25 +58,10 @@ class ModeEffectsView: BaseView { make.height.equalTo(h) make.left.equalToSuperview().inset(x) make.top.equalToSuperview().inset(y) -// if index == list.count - 1 { -// make.bottom.equalToSuperview().inset(14) -// } } } -// NotificationManager.add(self, selector: #selector(deviceChange(_:)), forName: .deviceValidChange) -// updateState() } -// @objc func deviceChange(_ noti:Notification){ -// updateState() -// } -// func updateState(){ -// if CCBleManager.shared.isConnetd { -// alpha = 1 -// } -// else{ -// alpha = 0.5 -// } -// } + override func setupLayout() { titleLabel.snp.makeConstraints { make in diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI-Swift.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI-Swift.h deleted file mode 100644 index 344f048..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI-Swift.h +++ /dev/null @@ -1,315 +0,0 @@ -#if 0 -#elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) -#ifndef JOYGEMAI_SWIFT_H -#define JOYGEMAI_SWIFT_H -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgcc-compat" - -#if !defined(__has_include) -# define __has_include(x) 0 -#endif -#if !defined(__has_attribute) -# define __has_attribute(x) 0 -#endif -#if !defined(__has_feature) -# define __has_feature(x) 0 -#endif -#if !defined(__has_warning) -# define __has_warning(x) 0 -#endif - -#if __has_include() -# include -#endif - -#pragma clang diagnostic ignored "-Wauto-import" -#if defined(__OBJC__) -#include -#endif -#if defined(__cplusplus) -#include -#include -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#endif -#if defined(__cplusplus) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" -#if defined(__arm64e__) && __has_include() -# include -#else -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreserved-macro-identifier" -# ifndef __ptrauth_swift_value_witness_function_pointer -# define __ptrauth_swift_value_witness_function_pointer(x) -# endif -# ifndef __ptrauth_swift_class_method_pointer -# define __ptrauth_swift_class_method_pointer(x) -# endif -#pragma clang diagnostic pop -#endif -#pragma clang diagnostic pop -#endif - -#if !defined(SWIFT_TYPEDEFS) -# define SWIFT_TYPEDEFS 1 -# if __has_include() -# include -# elif !defined(__cplusplus) -typedef uint_least16_t char16_t; -typedef uint_least32_t char32_t; -# endif -typedef float swift_float2 __attribute__((__ext_vector_type__(2))); -typedef float swift_float3 __attribute__((__ext_vector_type__(3))); -typedef float swift_float4 __attribute__((__ext_vector_type__(4))); -typedef double swift_double2 __attribute__((__ext_vector_type__(2))); -typedef double swift_double3 __attribute__((__ext_vector_type__(3))); -typedef double swift_double4 __attribute__((__ext_vector_type__(4))); -typedef int swift_int2 __attribute__((__ext_vector_type__(2))); -typedef int swift_int3 __attribute__((__ext_vector_type__(3))); -typedef int swift_int4 __attribute__((__ext_vector_type__(4))); -typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); -typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); -typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); -#endif - -#if !defined(SWIFT_PASTE) -# define SWIFT_PASTE_HELPER(x, y) x##y -# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) -#endif -#if !defined(SWIFT_METATYPE) -# define SWIFT_METATYPE(X) Class -#endif -#if !defined(SWIFT_CLASS_PROPERTY) -# if __has_feature(objc_class_property) -# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ -# else -# define SWIFT_CLASS_PROPERTY(...) -# endif -#endif -#if !defined(SWIFT_RUNTIME_NAME) -# if __has_attribute(objc_runtime_name) -# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) -# else -# define SWIFT_RUNTIME_NAME(X) -# endif -#endif -#if !defined(SWIFT_COMPILE_NAME) -# if __has_attribute(swift_name) -# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) -# else -# define SWIFT_COMPILE_NAME(X) -# endif -#endif -#if !defined(SWIFT_METHOD_FAMILY) -# if __has_attribute(objc_method_family) -# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) -# else -# define SWIFT_METHOD_FAMILY(X) -# endif -#endif -#if !defined(SWIFT_NOESCAPE) -# if __has_attribute(noescape) -# define SWIFT_NOESCAPE __attribute__((noescape)) -# else -# define SWIFT_NOESCAPE -# endif -#endif -#if !defined(SWIFT_RELEASES_ARGUMENT) -# if __has_attribute(ns_consumed) -# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) -# else -# define SWIFT_RELEASES_ARGUMENT -# endif -#endif -#if !defined(SWIFT_WARN_UNUSED_RESULT) -# if __has_attribute(warn_unused_result) -# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) -# else -# define SWIFT_WARN_UNUSED_RESULT -# endif -#endif -#if !defined(SWIFT_NORETURN) -# if __has_attribute(noreturn) -# define SWIFT_NORETURN __attribute__((noreturn)) -# else -# define SWIFT_NORETURN -# endif -#endif -#if !defined(SWIFT_CLASS_EXTRA) -# define SWIFT_CLASS_EXTRA -#endif -#if !defined(SWIFT_PROTOCOL_EXTRA) -# define SWIFT_PROTOCOL_EXTRA -#endif -#if !defined(SWIFT_ENUM_EXTRA) -# define SWIFT_ENUM_EXTRA -#endif -#if !defined(SWIFT_CLASS) -# if __has_attribute(objc_subclassing_restricted) -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# else -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# endif -#endif -#if !defined(SWIFT_RESILIENT_CLASS) -# if __has_attribute(objc_class_stub) -# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) -# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) -# else -# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) -# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) -# endif -#endif -#if !defined(SWIFT_PROTOCOL) -# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -#endif -#if !defined(SWIFT_EXTENSION) -# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) -#endif -#if !defined(OBJC_DESIGNATED_INITIALIZER) -# if __has_attribute(objc_designated_initializer) -# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -# else -# define OBJC_DESIGNATED_INITIALIZER -# endif -#endif -#if !defined(SWIFT_ENUM_ATTR) -# if __has_attribute(enum_extensibility) -# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) -# else -# define SWIFT_ENUM_ATTR(_extensibility) -# endif -#endif -#if !defined(SWIFT_ENUM) -# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type -# if __has_feature(generalized_swift_name) -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type -# else -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) -# endif -#endif -#if !defined(SWIFT_UNAVAILABLE) -# define SWIFT_UNAVAILABLE __attribute__((unavailable)) -#endif -#if !defined(SWIFT_UNAVAILABLE_MSG) -# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) -#endif -#if !defined(SWIFT_AVAILABILITY) -# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) -#endif -#if !defined(SWIFT_WEAK_IMPORT) -# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) -#endif -#if !defined(SWIFT_DEPRECATED) -# define SWIFT_DEPRECATED __attribute__((deprecated)) -#endif -#if !defined(SWIFT_DEPRECATED_MSG) -# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) -#endif -#if !defined(SWIFT_DEPRECATED_OBJC) -# if __has_feature(attribute_diagnose_if_objc) -# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) -# else -# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) -# endif -#endif -#if defined(__OBJC__) -#if !defined(IBSegueAction) -# define IBSegueAction -#endif -#endif -#if !defined(SWIFT_EXTERN) -# if defined(__cplusplus) -# define SWIFT_EXTERN extern "C" -# else -# define SWIFT_EXTERN extern -# endif -#endif -#if !defined(SWIFT_CALL) -# define SWIFT_CALL __attribute__((swiftcall)) -#endif -#if !defined(SWIFT_INDIRECT_RESULT) -# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) -#endif -#if !defined(SWIFT_CONTEXT) -# define SWIFT_CONTEXT __attribute__((swift_context)) -#endif -#if !defined(SWIFT_ERROR_RESULT) -# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) -#endif -#if defined(__cplusplus) -# define SWIFT_NOEXCEPT noexcept -#else -# define SWIFT_NOEXCEPT -#endif -#if !defined(SWIFT_C_INLINE_THUNK) -# if __has_attribute(always_inline) -# if __has_attribute(nodebug) -# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) -# else -# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) -# endif -# else -# define SWIFT_C_INLINE_THUNK inline -# endif -#endif -#if defined(_WIN32) -#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) -# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) -#endif -#else -#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) -# define SWIFT_IMPORT_STDLIB_SYMBOL -#endif -#endif -#if defined(__OBJC__) -#if __has_feature(objc_modules) -#if __has_warning("-Watimport-in-framework-header") -#pragma clang diagnostic ignored "-Watimport-in-framework-header" -#endif -#endif - -#endif -#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" -#pragma clang diagnostic ignored "-Wduplicate-method-arg" -#if __has_warning("-Wpragma-clang-attribute") -# pragma clang diagnostic ignored "-Wpragma-clang-attribute" -#endif -#pragma clang diagnostic ignored "-Wunknown-pragmas" -#pragma clang diagnostic ignored "-Wnullability" -#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" -#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" - -#if __has_attribute(external_source_symbol) -# pragma push_macro("any") -# undef any -# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="JoyGemAI",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) -# pragma pop_macro("any") -#endif - -#if defined(__OBJC__) -#endif -#if __has_attribute(external_source_symbol) -# pragma clang attribute pop -#endif -#if defined(__cplusplus) -#endif -#pragma clang diagnostic pop -#endif - -#else -#error unsupported Swift architecture -#endif diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI.h deleted file mode 100644 index f16e0fe..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAI.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// JoyGemAI.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/10. -// - -#import - -//! Project version number for JoyGemAI. -FOUNDATION_EXPORT double JoyGemAIVersionNumber; - -//! Project version string for JoyGemAI. -FOUNDATION_EXPORT const unsigned char JoyGemAIVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAIManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAIManager.h deleted file mode 100644 index f60ed8d..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemAIManager.h +++ /dev/null @@ -1,140 +0,0 @@ -// -// JoyGemAIManager.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/10. -// - -#import -#import -#import -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol JoyGemAIManagerDelegate - -/// 鉴权成功时回调 --(void)joyGemAuthSuccessCallback; - -/// 鉴权失败时回调 --(void)joyGemAuthFailedCallback; - -/// AI耳机动作回调 -/// - NOTE: 对话相关动作是通知,即消息来时已经发生,录音相关动作是请求,即耳机没有实际操作 -@optional --(void)joyGemAction:(JoyGemActionMode)action; - -@end - -@protocol JoyGemAIManagerDataSource - -///实现该方法,将数据转发给蓝牙 -@required --(void)joyGemSendData:(NSData*)data withCharacteristic:(CBCharacteristic*)characteristic; - -@end - -@class JoyGemDeviceManager; - -@interface JoyGemAIManager : NSObject - -@property(nonatomic, weak) id delegate; -@property(nonatomic, weak) id dataSource; - -@property(nonatomic, strong) JoyGemDeviceManager *device; - -// 实例对象 -+ (instancetype)shared; - -/// 初始化sdk -- (void)initSdk; - -/// 初始化sdk -/// - Parameter projectID: 可选方法 -- (void)initSdk:(nullable NSString*)projectID; - -/// 日志打印级别 -/// - Parameter level: 日志等级 分为关闭,简略,完全 -- (void)setLogMode:(JoyGemLogMode)mode; - -/// 日志存储路径 -/// - Parameter path: 日志存储文件路径 -/// - Description: 为空时不进行日志存储, 不支持多次配置 -- (void)setLogPath:(nullable NSString*)path; - -/// 传入蓝牙服务对象 -/// - Parameters: -/// - service: 服务对象 -/// - characteristics: 需要notify的特征 -/// - Returns: 是否正确的配置了相关服务特征 -/// - Description: Block为同步操作 -- (BOOL)configService:(CBService*)service needNotify:(void (^)(NSArray*))characteristics; - -/// 收到蓝牙设备传过来的数据,调用此方法交给sdk处理 -/// - Parameter characteristic:更新的特征 -- (void)receiveValue:(CBCharacteristic *)characteristic; - -/// 蓝牙设备已连接 -- (void)bleConnected; - -/// 蓝牙断开连接 -- (void)bleDisConnected; - -/// SDK文件存储文件夹 -/// - Parameter path: SDK文件存储路径(SDK需要用到文件存储时所指向的路径) -- (void)setCacheDirectory:(nullable NSString*)path; - -/// 清除临时文件 -/// - Description: 只会清除当前配置路径下的文件 -- (void)clearCacheDirectory; - -/// TWS耳机主从切换时是否尝试当前AI功能自动延续 -/// - Parameters: -/// - enable: 默认为false --(void)setTWSAutoSync:(BOOL)enable; - --(void)setTextAutoSync:(BOOL)enable; - --(void)setEmotionAutoSync:(BOOL)enable; - -/// 文本翻译 -/// - Parameters: -/// - text: 翻译的文字 -/// - fromLanguage: 原始语言 -/// - toLanguage: 翻译语言 -/// - stream: 结果回调 -/// - error: 错误回调 -/// - Description: 最大文本支持30K -- (void)translate:(NSString *)text from:(NSString*)fromLanguage to:(NSString*)toLanguage stream:(void (^)(NSString* llmResponse,BOOL finish))stream error:(void (^)( NSError * _Nullable err))error; - -/// 取消文本翻译 --(void)cancelTranslateRequest; - -/// 文本摘要 -/// - Parameters: -/// - text: 摘要的文字 -/// - stream: 结果回调 -/// - error: 错误回调 -/// - Description: 最大文本支持30K -- (void)summary:(NSString *)text stream:(void (^)(NSString* llmResponse,BOOL finish))stream error:(void (^)( NSError * _Nullable err))error; - -/// 取消文本摘要 --(void)cancelSummaryRequest; - - -/// 设置同传的tts回应速度 -/// - Parameters: -/// - speed: 默认1.0,范围[0.8,2] --(void)setTtsSpeed:(float)speed; - -/// 配置测试环境 -/// - Parameters: -/// - info: 测试环境字典 --(void)setDebugEnvironment:(NSDictionary*)info; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemCallManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemCallManager.h deleted file mode 100644 index 5a4dd0f..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemCallManager.h +++ /dev/null @@ -1,132 +0,0 @@ -// -// JoyGemCallController.h -// JoyGemAI -// -// Created by jjjs on 2025/7/12. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class JoyGemCallManager; -@class JoyGemAsrModel; - -//通话录音的委托类 -@protocol JoyGemCallManagerDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@optional --(void)callManager:(JoyGemCallManager*)manager didUpdateAsr:(JoyGemAsrModel*)model DEPRECATED_MSG_ATTRIBUTE("Use callManager:didUpdateMonoAsr instead if supportStereo is false");; - -///文件生成后的回调 -/// - Parameters: -/// - path: 文件存储路径 wav格式 --(void)callManager:(JoyGemCallManager*)manager saveFile:(NSString*)path; - -///录音状态回调 -/// - Parameters: -/// - code: 状态变化 --(void)callManager:(JoyGemCallManager*)manager stateChange:(JoyGemStateCode)code; - -/// 录音错误回调 -/// - Parameters: -/// - mode:错误代码 --(void)callManager:(JoyGemCallManager*)manager onError:(JoyGemErrorCode)code; - -/// 通话录音开启时,不处于通话状态 -/// - Description: 需要确认耳机是否支持该判断,如果耳机不支持将不会收到回调 -@optional --(void)callManagerNotonCall:(JoyGemCallManager*)manager; - -///结束时的回调 -/// - Parameters: -/// - code: 录音结束的原因 --(void)callManagerStopped:(JoyGemCallManager*)manager reason:(JoyGemRecordStopCode)code; - -/// 录音完成时的回调 -/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 -/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 -@optional --(void)callManagerCompleted:(JoyGemCallManager*)manager; - -@end - -@protocol JoyGemCallMonoDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)callManager:(JoyGemCallManager*)manager didUpdateMonoAsr:(JoyGemAsrModel*)model; - -/// 录音时的声波强度回调 -/// - Parameters: -/// - list: 强度数组 -/// - timestamp: 时间戳(ms) -@optional --(void)callManager:(JoyGemCallManager*)manager monoIntensity:(NSArray*)list timestamp:(NSTimeInterval)timestamp; - -@end - -@protocol JoyGemCallStereoDelegate - -///录音文字识别 -/// - Parameters: -/// - model: asr识别的对象 -/// - index: 声道序号 1,2 -@required --(void)callManager:(JoyGemCallManager*)manager didUpdateStereoAsr:(JoyGemAsrModel*)model channel:(NSUInteger)index; - -/// 录音时的声波强度回调 -/// - Parameters: -/// - lists: 强度数组(二维数组,0为左声道,1为右声道) -/// - timestamp: 时间戳(ms) -@optional --(void)callManager:(JoyGemCallManager*)manager stereoIntensity:(NSArray*>*)lists timestamp:(NSTimeInterval)timestamp; - - -@end - - -/// 通话录音的管理类 -@interface JoyGemCallManager : NSObject - -/// 委托类 -/// - Description: 通话录音状态委托 -@property(nonatomic, weak) id delegate; - -/// 耳机识别语言 -@property(nonatomic, strong) NSString* originalLanguage; - -/// 是否正在录音 -@property(nonatomic, assign) BOOL isRecording; - -/// 是否支持立体声录音 -/// - NOTE:鉴权后再使用该字段 -@property(nonatomic, assign ,readonly) BOOL supportStereo; - -/// 单声道委托 -/// - Description: 固件支持单声道通话录音时会通过此委托进行回调 -@property(nonatomic, weak) id monoDelegate; - -/// 立体声委托 -/// - Description: 固件支持双声道通话录音时会通过此委托进行回调 -@property(nonatomic, weak) id stereoDelegate; - -/// 实例对象 -+ (instancetype)shared; - -/// 开始通话录音 -- (void)start; - -/// 结束通话录音 -- (void)stop; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemChatManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemChatManager.h deleted file mode 100644 index 32c1303..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemChatManager.h +++ /dev/null @@ -1,122 +0,0 @@ -// -// JoyGemChatManager.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/21. -// - -#import -#import - -@class JoyGemChatManager; -@class JoyGemSpeaker; - - -NS_ASSUME_NONNULL_BEGIN - -@protocol JoyGemChatManagerDelegate - -///AI语音接收 -/// - Parameters: -/// - data: 音频数据 pcm格式 -/// - index: 语句ID -/// - sampleRate: 采样率 -/// - finish: 该句是否结束 --(void)chatManager:(JoyGemChatManager*)manager audioData:(nullable NSData*)data index:(NSUInteger)index sampleRate:(NSUInteger)sampleRate finish:(BOOL)isFinish; - -///用户语音识别 -/// - Parameters: -/// - text: 文字数据 -/// - index: 语句ID --(void)chatManager:(JoyGemChatManager*)manager requestText:(nullable NSString*)text index:(NSUInteger)index; - -///AI语音识别 -/// - Parameters: -/// - text: 文字数据 -/// - index: 语句ID -/// - isFinish:单次对话结束 --(void)chatManager:(JoyGemChatManager*)manager responseText:(nullable NSString*)text index:(NSUInteger)index finish:(BOOL)isFinish; - -///对话状态回调 -/// - Parameters: -/// - code: 状态变化 -@optional --(void)chatManager:(JoyGemChatManager*)manager stateChange:(JoyGemStateCode)code DEPRECATED_MSG_ATTRIBUTE("Use chatManager:eventUpdate instead"); - -///对话事件回调 -/// - Parameters: -/// - event: 对话相关事件回调 -/// - NOTE: 需要相关固件支持 -@optional --(void)chatManager:(JoyGemChatManager*)manager eventUpdate:(JoyGemChatEvent)event; - -/// 错误回调 -/// - Parameters: -/// - mode:错误代码 --(void)chatManager:(JoyGemChatManager*)manager onError:(JoyGemErrorCode)code; - -@optional --(void)chatManagerStopped:(JoyGemChatManager*)manager DEPRECATED_MSG_ATTRIBUTE("Use isActive instead"); - -@end - -//AI对话的管理类 -@interface JoyGemChatManager : NSObject - -@property(nonatomic, weak) id delegate; - -//是否正在对话录音中 -@property(nonatomic, assign) BOOL isRecording; - -///是否正在活跃中 -/// - NOTE:可以采用KVO的方式监听该对象, 单次对话不会造成该状态改变 -@property(atomic, assign) BOOL isActive DEPRECATED_MSG_ATTRIBUTE("Use chatManager:eventUpdate instead if supportEvent is true"); - -///是否支持事件上报模式 -/// - NOTE:鉴权后再使用该字段 -@property(nonatomic,assign,readonly) BOOL supportEvent; - -// 实例对象 -+ (instancetype)shared; - -/// 开启单次对话 -/// - Note: 如正在播报,需要提前关闭tts后再调用,否则开启无效 -- (void)startSingleChat; - -/// 结束单次对话 -/// - Note:请勿在开启单次对话后立刻调用该方法,否则耳机可能不会处理该次请求 -- (void)stopSingleChat; - -/// 开启连续对话 -- (void)startChat; - -/// 结束连续对话 -- (void)stopChat; - -/// 播放音频开始前需要调用此方法告诉耳机 -- (void)playAudioStart; - -/// 播放音频结束时需要调用此方法告诉耳机 -/// - Description: 如果处于连续对话状态,则在调用该方法后会直接开启下一轮对话 -- (void)playAudioEnd; - -///获取支持角色列表 -/// - Parameters: -/// - list: 角色列表 --(void)getSpeakerList:(void (^)(NSArray*))list; - -/// 配置当前角色 --(void)setSpeaker:(JoyGemSpeaker*)speaker; - -/// 重置为默认角色 --(void)resetSpearker; - -/// 进入英语口语陪练模式 --(void)startSpoken; - -/// 退出英语口语陪练模式 --(void)stopSpoken; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemDeviceManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemDeviceManager.h deleted file mode 100644 index 39217c0..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemDeviceManager.h +++ /dev/null @@ -1,101 +0,0 @@ -// -// JoyGemDeviceManager.h -// JoyGemAI -// -// Created by jjjs on 2025/9/1. -// - -#import -#import "JoyGemEnum.h" -#import "JoyGemModel.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface JoyGemDeviceManager : NSObject - -@property(nonatomic,assign) BOOL twsStatus; - -/// 获取mac地址 -/// - Returns: -/// - edrAddress: 经典蓝牙地址 -/// - bleAddress: ble蓝牙地址 --(void)macAddress:(void (^)(NSString* edrAddress,NSString* bleAddress))address error:(void (^)( NSError * _Nullable err))error; - -/// 获取软件版本 -/// - Returns: -/// - version: 软件版本 --(void)software:(void (^)(NSString* version))infomation error:(void (^)( NSError * _Nullable err))error; - - -/// 设置电量监听 -/// - Parameters: -/// - left: 左耳电量 -/// - right: 右耳电量 -/// - Description: 电量范围为0~100,当未获取到电量时,电量为-1,配置回调时,如果有历史数据,会返回最后的历史数据,耳机会在电量变更时主动上报数据 --(void)setBatteryListener:(void (^)(NSInteger left, NSInteger right))batteryListener; - -/// 主动获取电量 --(void)updateBattery; - -/// 设置耳机状态监听 -/// - Parameters: -/// - btConnected: 经典蓝牙连接状态 -/// - twsConnected : 双耳模式连接状态 -/// - Description: 部分设置需要在双耳模式下才能生效 --(void)setStatusListener:(void (^)(BOOL btConnected,BOOL twsConnected))statusListener; - -/// 主动获取耳机状态 --(void)updateStatus; - -/// 设置VAD打断状态 -/// - Parameters: -/// - isOpen: VAD打断是否开启 -/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 --(void)setVADInterruptedStatus:(BOOL)isOpen callback:(void (^)( NSError * _Nullable err))error; - -/// 获取VAD打断状态 -/// - Returns: -/// - status: VAD打断是否开启 --(void)getVADInterruptedStatus:(void (^)(BOOL isOpen))status error:(void (^)( NSError * _Nullable err))error; - - -/// 设置EQ模式 -/// - Parameters: -/// - mode: EQ模式 -/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 --(void)setEQMode:(JoyGemEQMode)mode callback:(void (^)( NSError * _Nullable err))error; - -/// 获取EQ模式 -/// - Returns: -/// - mode: VAD打断是否开启 --(void)getEQMode:(void (^)(JoyGemEQMode mode))mode error:(void (^)( NSError * _Nullable err))error; - -/// 设置自定义EQ -/// - Parameters: -/// - index: 频段 范围为0~9 -/// - gain: 增益 范围为 -12~12 -/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 --(void)setCustomEQ:(NSUInteger)index withGain:(NSInteger)gain callback:(void (^)( NSError * _Nullable err))error; - -/// 重置自定义EQ -/// - Description: 该设置必须在双耳模式下才能生效,否则返回失败 --(void)resetCustomEQ:(void (^)( NSError * _Nullable err))error; - -/// 获取自定义EQ -/// - Returns: -/// - custom: 自定义EQ类型 --(void)getCustomEQ:(void (^)(JoyGemCustomEQ*))custom error:(void (^)( NSError * _Nullable err))error; - -/// 查找耳机 -/// - Parameters: -/// - mode: 查找耳机命令类型 --(void)findHeadphone:(JoyGemFindHeadphoneMode)mode callback:(void (^)( NSError * _Nullable err))error; - -/// 获取设备DN码 -/// - Parameters: -/// - dn: 设备DN,取不到则返回空值 --(void)getDN:(void (^)(NSString*))dn error:(void (^)( NSError * _Nullable err))error; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemEnum.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemEnum.h deleted file mode 100644 index b95de14..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemEnum.h +++ /dev/null @@ -1,86 +0,0 @@ -// -// JoyGemAIEnum.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/21. -// - -#ifndef JoyGemAIEnum_h -#define JoyGemAIEnum_h - -/// 状态变化 -typedef NS_OPTIONS(NSInteger,JoyGemStateCode) { - JoyGemStateCodeStartRecord = 1001,///开始录音 - JoyGemStateCodeStopRecord = 1002,///停止录音 - JoyGemStateCodeWebsocketConnected = 3001,///socket连上 - JoyGemStateCodeWebsocketDisconnected = 3002,///socket断开连接 -}; - -/// 错误 -typedef NS_OPTIONS(NSInteger,JoyGemErrorCode) { - JoyGemErrorCodeRecordError = 1003,///录音出错 - JoyGemErrorCodeNetError = 3003,///网络错误 - JoyGemErrorCodeUnAuth = 9999,///未鉴权 -}; - -/// 录音类型 -typedef NS_ENUM(NSUInteger, JoyGemRecordMode) { - JoyGemRecordModeLive = 1, ///现场录音 - JoyGemRecordModeCall = 2, ///通话录音 -}; - -/// 日志类型 -typedef NS_ENUM(NSUInteger, JoyGemLogMode) { - JoyGemLogModeClose, ///关闭日志 - JoyGemLogModeSimple, ///简略日志 - JoyGemLogModeAll, ///完整日志 -}; - -/// 动作类型 -typedef NS_ENUM(NSUInteger, JoyGemActionMode) { - JoyGemActionModeCancel = 0, ///关闭当前AI功能 - JoyGemActionModeRecordLive = 1, ///现场录音 - JoyGemActionModeRecordCall = 2, ///通话录音 - JoyGemActionModeSi = 3, ///同声传译 - JoyGemActionModeChat = 4, ///AI对话 -}; - -/// 录音结束类型 -typedef NS_ENUM(NSUInteger, JoyGemRecordStopCode) { - JoyGemRecordStopCodeActively = 0, ///用户主动关闭录音 - JoyGemRecordStopCodePassively = 1, ///用户被动关闭录音 -}; - - -/// 对话事件类型 -typedef NS_ENUM(NSUInteger, JoyGemChatEvent) { - JoyGemChatEventIdle = 0, /// 空闲中 - JoyGemChatEventBegin, /// 开始对话(单轮对话不会产生该事件) - JoyGemChatEventEnd, /// 结束对话(单轮对话不会产生该事件) - JoyGemChatEventNewRound, /// 开始新一轮对话 - JoyGemChatEventRecording, /// 录音中 - JoyGemChatEventRspWaiting, /// 等待中 - JoyGemChatEventPlaying, /// 正在播放声音 - JoyGemChatEventPlayEnd, /// 结束播放声音 -}; - -/// EQ类型 -typedef NS_ENUM(NSUInteger, JoyGemEQMode) { - JoyGemEQModeNormal, ///普通 - JoyGemEQModeRock, ///摇滚 - JoyGemEQModePop, ///流行 - JoyGemEQModeClassic, ///经典 - JoyGemEQModeJazz, ///爵士 - JoyGemEQModeCustom, ///自定义 -}; - - -/// EQ类型 -typedef NS_ENUM(NSUInteger, JoyGemFindHeadphoneMode) { - JoyGemFindHeadphoneModeCancel, ///关闭查找耳机 - JoyGemFindHeadphoneModeLeft, ///查找左耳 - JoyGemFindHeadphoneModeRight, ///查找右耳 - JoyGemFindHeadphoneModeAll, ///查找双耳 -}; - -#endif /* JoyGemAIEnum_h */ diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemModel.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemModel.h deleted file mode 100644 index 3a7cf57..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemModel.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// JoyGemAIModel.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -///AI对话角色 -@interface JoyGemSpeaker : NSObject - -@property (nonatomic, strong) NSString *sid;/// 音色id -@property (nonatomic, strong) NSString *name;/// 名称 -@property (nonatomic, strong) NSString *type;/// 类型 -@property (nonatomic, strong) NSString *role;/// 角色 - -///默认角色 -+(JoyGemSpeaker*)defaultRole; - -///默认的口语陪练角色 -+(JoyGemSpeaker*)defaultSpoken; - -@end - -///ASR对象 -@interface JoyGemAsrModel : NSObject - -@property (nonatomic, strong) NSString *text; /// 文本 -@property (nonatomic, assign) NSUInteger index; /// 序号 -@property (nonatomic, assign) BOOL definite; /// 片段化确定(不建议作为断句标识) - -@end - -///自定义EQ设置对象 -@interface JoyGemCustomEQ : NSObject - -@property (nonatomic, strong) NSArray *bands; - -@end - -///录音声纹识别 -@interface JoyGemRecordSpeaker : NSObject - -@property (nonatomic, copy, nullable) NSString *speakerId; /// 说话人ID(字符串,如 "1") -@property (nonatomic, assign) NSInteger startTime; /// 起始时间(ms) -@property (nonatomic, assign) NSInteger endTime; /// 结束时间(ms) -@property (nonatomic, copy, nullable) NSString *text; /// 该段文本 -@property (nonatomic, assign) NSInteger index; /// 该段确定序号 - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemParam.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemParam.h deleted file mode 100644 index b1f5ab6..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemParam.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// JoyGemAIParam.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -///MARK: 语音语言 - -//自动识别中英 -extern NSString* const kJoyGemAILocalizationAuto; - -//简体中文 zh-CN -extern NSString* const kJoyGemAILocalizationZH; - -//英文 en-US -extern NSString* const kJoyGemAILocalizationEN; - -//日语 ja-JP -extern NSString* const kJoyGemAILocalizationJA; - -//韩语 ko-KR -extern NSString* const kJoyGemAILocalizationKO; - -//法语 fr-FR -extern NSString* const kJoyGemAILocalizationFR; - -//西班牙语 es-MX -extern NSString* const kJoyGemAILocalizationES; - -//葡萄牙语 pt-BR -extern NSString* const kJoyGemAILocalizationPT; - -//印尼语 id-ID -extern NSString* const kJoyGemAILocalizationID; - -//俄语(输入) ru-RU -extern NSString* const kJoyGemAILocalizationRU_Original; - -//俄语(输出) ru -extern NSString* const kJoyGemAILocalizationRU_Target; - -//马来语 ms-MY -extern NSString* const kJoyGemAILocalizationMS; - -//德语 de-DE -extern NSString* const kJoyGemAILocalizationDE; - -//菲律宾语 fil-PH -extern NSString* const kJoyGemAILocalizationFIL; - -//泰语 th-TH -extern NSString* const kJoyGemAILocalizationTH; - -//阿拉伯语 ar-SA -extern NSString* const kJoyGemAILocalizationAR; - -//越南语 vi -extern NSString* const kJoyGemAILocalizationVI; - - - -///MARK: 蓝牙相关 -/// -///AI功能使用的蓝牙服务 -extern NSString* const kJoyGemAIServiceUUID; - -extern NSString* const kJoyGemAICharacteristicNotifyUUID; - - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemRecordManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemRecordManager.h deleted file mode 100644 index e95de63..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemRecordManager.h +++ /dev/null @@ -1,102 +0,0 @@ -// -// JoyGemRecordManager.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/21. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class JoyGemRecordManager; -@class JoyGemAsrModel; -@class JoyGemRecordSpeaker; - -//现场录音的委托类 -@protocol JoyGemRecordManagerDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)recordManager:(JoyGemRecordManager*)manager didUpdateAsr:(JoyGemAsrModel*)model; - -///文件生成后的回调 -/// - Parameters: -/// - path: 文件存储路径 wav格式 --(void)recordManager:(JoyGemRecordManager*)manager saveFile:(NSString*)path; - -///录音状态回调 -/// - Parameters: -/// - code: 状态变化 --(void)recordManager:(JoyGemRecordManager*)manager stateChange:(JoyGemStateCode)code; - -/// 录音错误回调 -/// - Parameters: -/// - mode:错误代码 --(void)recordManager:(JoyGemRecordManager*)manager onError:(JoyGemErrorCode)code; - -///结束时的回调 -/// - Parameters: -/// - code: 录音结束的原因 --(void)recordManagerStopped:(JoyGemRecordManager*)manager reason:(JoyGemRecordStopCode)code; - -/// 录音完成时的回调 -/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 -/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应, -@optional --(void)recordManagerCompleted:(JoyGemRecordManager*)manager; - -/// 录音时的声波强度回调 -/// - Parameters: -/// - list: 强度数组 -/// - timestamp: 时间戳(ms) -@optional --(void)recordManager:(JoyGemRecordManager*)manager intensity:(NSArray*)list timestamp:(NSTimeInterval)timestamp; - -/// 录音时的说话人区分 -/// - Parameters: -/// - list: 强度数组 -/// - timestamp: 时间戳(ms) -@optional --(void)recordManager:(JoyGemRecordManager*)manager speakers:(NSArray*)list; - -@end - -/// 现场录音的管理类 -@interface JoyGemRecordManager : NSObject - -/// 委托类 -@property(nonatomic, weak) id delegate; - -/// 耳机识别语言 -@property(nonatomic, strong) NSString* originalLanguage; - -/// 是否正在暂停中 -@property(nonatomic,assign) BOOL isPause; - -/// 是否开启声纹识别 -@property(nonatomic,assign) BOOL useVpr; - -/// 实例对象 -+ (instancetype)shared; - -/// 开启现场录音 -- (void)start; - -/// 结束现场录音 -- (void)stop; - -/// 暂停录音 -- (void)pause; - -/// 恢复录音 -- (void)resume; - - - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h deleted file mode 100644 index 826b9c6..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIDeviceManager.h +++ /dev/null @@ -1,91 +0,0 @@ -// -// JoyGemSIDeviceManager.h -// JoyGemAI -// -// Created by jjjs on 2025/5/21. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class JoyGemSIDeviceManager; -@class JoyGemAsrModel; - -/// 同声传译(设备)的管理类 -@protocol JoyGemSIDeviceManagerDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; - -///录音文字翻译时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; - -///音频数据更新时 -/// - Parameters: -/// - data: 流数据 pcm格式 -@required --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager didUpdateAudioData:(NSData*)data sampleRate:(NSUInteger)sampleRate; - -///结束时的回调 -/// - Parameters: -/// - code: 录音结束的原因 --(void)siDeviceManagerStopped:(JoyGemSIDeviceManager*)manager reason:(JoyGemRecordStopCode)code; - -/// 录音完成时的回调 -/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 -/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 -@optional --(void)siDeviceManagerCompleted:(JoyGemSIDeviceManager*)manager; - -///文件生成后的回调 -/// - Parameters: -/// - path: 文件存储路径 wav格式 --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager saveFile:(NSString*)path; - -///录音状态回调 -/// - Parameters: -/// - code: 状态变化 --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager stateChange:(JoyGemStateCode)code; - -/// 录音错误回调 -/// - Parameters: -/// - mode:错误代码 --(void)siDeviceManager:(JoyGemSIDeviceManager*)manager onError:(JoyGemErrorCode)code; - -@end - -/// 同声传译(设备)的管理类 -@interface JoyGemSIDeviceManager : NSObject - -/// 委托类 -@property(nonatomic, weak) id delegate; - -/// 耳机识别语言 -@property(nonatomic, strong) NSString* originalLanguage; - -/// 耳机输出语言 -@property(nonatomic, strong) NSString* targetLanguage; - -/// 是否正在录音 -@property(nonatomic,assign) BOOL isRecording; - -/// 实例对象 -+ (instancetype)shared; - -/// 开始同声传译(设备) -- (void)start; - -/// 结束同声传译(设备) -- (void)stop; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIManager.h deleted file mode 100644 index bf64e1c..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSIManager.h +++ /dev/null @@ -1,91 +0,0 @@ -// -// JoyGemSIManager.h -// JoyGemAI -// -// Created by JoyGem on 2025/2/21. -// - -#import -#import - -@class JoyGemSIManager; -@class JoyGemAsrModel; - -NS_ASSUME_NONNULL_BEGIN - -//同声传译的委托类 -@protocol JoyGemSIManagerDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)siManager:(JoyGemSIManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; - -///录音文字翻译时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)siManager:(JoyGemSIManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; - -///音频数据更新时 -/// - Parameters: -/// - data: 流数据 pcm格式 -@required --(void)siManager:(JoyGemSIManager*)manager didUpdateAudioData:(NSData*)data sampleRate:(NSUInteger)sampleRate; - -///录音状态切换时 --(void)siManager:(JoyGemSIManager*)manager stateChange:(JoyGemStateCode)code; - -///结束时的回调 -/// - Parameters: -/// - code: 录音结束的原因 --(void)siManagerStopped:(JoyGemSIManager*)manager reason:(JoyGemRecordStopCode)code; - -/// 录音完成时的回调 -/// - Description: 录音任务调用结束后,会在服务器所有响应结束后进行回调 -/// - Note: 该接口仅在任务成功完成时才会进行回调,并不保证和stop方法实现一一对应 -@optional --(void)siManagerCompleted:(JoyGemSIManager*)manager; - -///文件生成后的回调 -/// - Parameters: -/// - path: 文件存储路径 wav格式 --(void)siManager:(JoyGemSIManager*)manager saveFile:(NSString*)path; - -/// 错误回调 --(void)siManager:(JoyGemSIManager*)manager onError:(JoyGemErrorCode)code; - -@end - -/// 同声传译的管理类 -@interface JoyGemSIManager : NSObject - -@property(nonatomic, weak) id delegate; - -///原始语言 -///目前原始语言设置无效,默认为kJoyGemAILocalizationAuto -@property(nonatomic, strong) NSString* originalLanguage; - -///目标语言 -///默认为kJoyGemAILocalizationAuto,可以设置为中文或者英文 -@property(nonatomic, strong) NSString* targetLanguage; - -/// 是否正在录音 -@property(nonatomic,assign) BOOL isRecording; - - -/// 实例对象 -+ (instancetype)shared; - -/// 开启同声传译 -- (void)start; - -/// 结束同声传译 -- (void)stop; - - -@end - -NS_ASSUME_NONNULL_END - diff --git a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h b/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h deleted file mode 100644 index 18f6bc5..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Headers/JoyGemSubtitleManager.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// JoyGemSubtitleManager.h -// JoyGemAI -// -// Created by jjjs on 2025/10/17. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class JoyGemSubtitleManager; -@class JoyGemAsrModel; - -/// 字幕翻译的委托 -@protocol JoyGemSubtitleManagerDelegate - -///录音文字识别时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)subtitleManager:(JoyGemSubtitleManager*)manager didUpdateRaw:(JoyGemAsrModel*)model; - -///录音文字翻译时 -/// - Parameters: -/// - model: asr识别的对象 -@required --(void)subtitleManager:(JoyGemSubtitleManager*)manager didUpdateTranslate:(JoyGemAsrModel*)model; - -///结束时的回调 -/// - Parameters: -/// - code: 录音结束的原因 --(void)subtitleManagerStopped:(JoyGemSubtitleManager*)manager; - -///录音状态回调 -/// - Parameters: -/// - code: 状态变化 --(void)subtitleManager:(JoyGemSubtitleManager*)manager stateChange:(JoyGemStateCode)code; - -/// 录音错误回调 -/// - Parameters: -/// - mode:错误代码 --(void)subtitleManager:(JoyGemSubtitleManager*)manager onError:(JoyGemErrorCode)code; - -@end - -//字幕翻译的管理类 -@interface JoyGemSubtitleManager : NSObject - -/// 委托类 -/// - Description: 字幕翻译状态委托 -@property(nonatomic, weak) id delegate; - -/// 耳机识别语言 -@property(nonatomic, strong) NSString* originalLanguage; - -/// 耳机输出语言 -@property(nonatomic, strong) NSString* targetLanguage; - -/// 是否正在录音 -@property(nonatomic, assign) BOOL isRecording; - -/// 是否支持字幕翻译功能 -@property(nonatomic, assign) BOOL support; - - -/// 实例对象 -+ (instancetype)shared; - -/// 开始字幕翻译 -- (void)start; - -/// 结束字幕翻译 -- (void)stop; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ShenYin/framework/JoyGemAI.framework/Info.plist b/ShenYin/framework/JoyGemAI.framework/Info.plist deleted file mode 100644 index 3374824..0000000 Binary files a/ShenYin/framework/JoyGemAI.framework/Info.plist and /dev/null differ diff --git a/ShenYin/framework/JoyGemAI.framework/JoyGemAI b/ShenYin/framework/JoyGemAI.framework/JoyGemAI deleted file mode 100755 index b8dcb56..0000000 Binary files a/ShenYin/framework/JoyGemAI.framework/JoyGemAI and /dev/null differ diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo deleted file mode 100644 index 8ef7c46..0000000 Binary files a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo and /dev/null differ diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json deleted file mode 100644 index 993acce..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "ABIRoot": { - "kind": "Root", - "name": "JoyGemAI", - "printedName": "JoyGemAI", - "children": [ - { - "kind": "Import", - "name": "Foundation", - "printedName": "Foundation", - "declKind": "Import", - "moduleName": "JoyGemAI", - "declAttributes": [ - "RawDocComment" - ] - } - ], - "json_format_version": 8 - }, - "ConstValues": [] -} \ No newline at end of file diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface deleted file mode 100644 index 428908e..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface +++ /dev/null @@ -1,10 +0,0 @@ -// swift-interface-format-version: 1.0 -// swift-compiler-version: Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) -// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-bare-slash-regex -module-name JoyGemAI -// swift-module-flags-ignorable: -no-verify-emitted-module-interface -import Foundation -@_exported import JoyGemAI -import Swift -import _Concurrency -import _StringProcessing -import _SwiftConcurrencyShims diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc deleted file mode 100644 index 8d660ce..0000000 Binary files a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc and /dev/null differ diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface deleted file mode 100644 index 428908e..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface +++ /dev/null @@ -1,10 +0,0 @@ -// swift-interface-format-version: 1.0 -// swift-compiler-version: Apple Swift version 6.0.3 effective-5.10 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) -// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-bare-slash-regex -module-name JoyGemAI -// swift-module-flags-ignorable: -no-verify-emitted-module-interface -import Foundation -@_exported import JoyGemAI -import Swift -import _Concurrency -import _StringProcessing -import _SwiftConcurrencyShims diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule b/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule deleted file mode 100644 index 1001f97..0000000 Binary files a/ShenYin/framework/JoyGemAI.framework/Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule and /dev/null differ diff --git a/ShenYin/framework/JoyGemAI.framework/Modules/module.modulemap b/ShenYin/framework/JoyGemAI.framework/Modules/module.modulemap deleted file mode 100644 index f9d9ea3..0000000 --- a/ShenYin/framework/JoyGemAI.framework/Modules/module.modulemap +++ /dev/null @@ -1,11 +0,0 @@ -framework module JoyGemAI { - umbrella header "JoyGemAI.h" - export * - - module * { export * } -} - -module JoyGemAI.Swift { - header "JoyGemAI-Swift.h" - requires objc -} diff --git a/ShenYin/framework/JoyGemAI.framework/PrivacyInfo.xcprivacy b/ShenYin/framework/JoyGemAI.framework/PrivacyInfo.xcprivacy deleted file mode 100644 index c8b6829..0000000 --- a/ShenYin/framework/JoyGemAI.framework/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,27 +0,0 @@ - - - - - NSPrivacyTracking - - NSPrivacyCollectedDataTypes - - - NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeAudioData - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - NSPrivacyCollectedDataTypePurposeAppFunctionality - - - - NSPrivacyTrackingDomains - - NSPrivacyAccessedAPITypes - - - diff --git a/ShenYin/framework/JoyGemAI.framework/_CodeSignature/CodeResources b/ShenYin/framework/JoyGemAI.framework/_CodeSignature/CodeResources deleted file mode 100644 index 39407de..0000000 --- a/ShenYin/framework/JoyGemAI.framework/_CodeSignature/CodeResources +++ /dev/null @@ -1,333 +0,0 @@ - - - - - files - - Headers/JoyGemAI-Swift.h - - okSjIYqQdjYFuhBqjGvwfYh8+aU= - - Headers/JoyGemAI.h - - 7HO7XUA3NdXWlvtUWyiYdTaaZ4M= - - Headers/JoyGemAIManager.h - - D/pnfOpF7qKhUfhoTsKEfdEQQRQ= - - Headers/JoyGemCallManager.h - - j3rnAsYkKzhbISebVqN00PCSeTk= - - Headers/JoyGemChatManager.h - - RmM4HQA4Ay7VLvTFWPw7s69sqBk= - - Headers/JoyGemDeviceManager.h - - GnuSbYAD+3F7R21VuV35n97Bubk= - - Headers/JoyGemEnum.h - - M1/juV+sL7ggbp4Y9srW0rq/Dqo= - - Headers/JoyGemModel.h - - WP0CE48Wvoq3FJX4ldz90bcNpTw= - - Headers/JoyGemParam.h - - fq/eezzfuJFDMFtH+PXLOMYQQCs= - - Headers/JoyGemRecordManager.h - - GzBtgXRPoBuyG0YwvFmoGA8Yg20= - - Headers/JoyGemSIDeviceManager.h - - aH1rBy/dU7IVJkpw/BVW3BvfNtk= - - Headers/JoyGemSIManager.h - - 363bn6W4/w8F3xEYQrU0LEVD/XM= - - Headers/JoyGemSubtitleManager.h - - fDUdqGo5wSc78huSI4OUK8Qr8AU= - - Info.plist - - yyyfSn0pDOYFx2gtlmBDVpKhVxw= - - Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo - - CPeqh4HaaR/F9LP2LFiPwE3Qxzo= - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json - - iVs2bUNJJDbD/ENi/Q0lo4aP3uk= - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface - - sOTjmG3OZu9FvWVYyTuqSix+tzU= - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc - - s/YEyU+lH4pYoG62jihLM2SJPTU= - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface - - sOTjmG3OZu9FvWVYyTuqSix+tzU= - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule - - OKLv2mrRkW9EiT9AdyIjFh6WmI8= - - Modules/module.modulemap - - qguEoXSNM0mFX+7WmMXUO3TTSLk= - - PrivacyInfo.xcprivacy - - SRctDO3cqibONLEG7CPcNZVBnXw= - - - files2 - - Headers/JoyGemAI-Swift.h - - hash2 - - Jktn0pvS86rbDKXpgT8xSUtpGRzWvf2yzqxwqMqFKS4= - - - Headers/JoyGemAI.h - - hash2 - - AWVDZqJirRMWfVQc7FdxP1cjTTx2LWTSTwHDN0/ySRA= - - - Headers/JoyGemAIManager.h - - hash2 - - hAXAZoFB6Ja0kc5Gm3Bo952k9fZUiSUPYM2f9gyTkQw= - - - Headers/JoyGemCallManager.h - - hash2 - - eKpRq8GaSD9YaI7Tfafc4BVLc/Vz2rS7cEcx8W6S+EI= - - - Headers/JoyGemChatManager.h - - hash2 - - TrJNORF2yq5ZRf++PfcoxEwE0ic9W2VxQ+Nz7M7WKPM= - - - Headers/JoyGemDeviceManager.h - - hash2 - - b8SW0vyfvdZ5JjAexckdczSXWjl11+WIJDM6wuHhBEo= - - - Headers/JoyGemEnum.h - - hash2 - - 6xL0kb6k/tdSxOKLIazlAA2o8gm1ZE3njRHg40EOYMw= - - - Headers/JoyGemModel.h - - hash2 - - 0kLzuK/HuYBvk9JPhWYbR2z7t1XSX83X5Am9ZD+vLXw= - - - Headers/JoyGemParam.h - - hash2 - - QKmLGG6IwVxT2QonEGJzea6rMbUX0PBNGoWpzqSNRbY= - - - Headers/JoyGemRecordManager.h - - hash2 - - ep9EdHop9Qn0M9nCT7YwmHXxJh/XXCjBqtYjErKFd+8= - - - Headers/JoyGemSIDeviceManager.h - - hash2 - - x40L/ElpDJCMjpEBZZancy57toshn0DM6MOhkwnIMYQ= - - - Headers/JoyGemSIManager.h - - hash2 - - NTKnVzoipmhtgLLzocc8J5kT4Q2qmUmVhZ3MgZUrbkA= - - - Headers/JoyGemSubtitleManager.h - - hash2 - - jGDopDnKVm0z/p6dEPEs54wWT6iwbetpqbTXTk8zoAQ= - - - Modules/JoyGemAI.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo - - hash2 - - dSyxVyC1vMbliDqKuW0d31f2wCYxeWsx2/NHJQYPrRc= - - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.abi.json - - hash2 - - li11LC5FIVL81dorkSyLKnyNa2JtjEuBDo/IzoAeVCU= - - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.private.swiftinterface - - hash2 - - Xu9oOK+bUwZsz7YKaBS7sdDWZvQJwX6GCeM7UKDOIew= - - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftdoc - - hash2 - - 4ZSTOVNx5VInV3CLCGXGsOKMICdleteG1O8aHABZCzw= - - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftinterface - - hash2 - - Xu9oOK+bUwZsz7YKaBS7sdDWZvQJwX6GCeM7UKDOIew= - - - Modules/JoyGemAI.swiftmodule/arm64-apple-ios.swiftmodule - - hash2 - - nRKcutC82zySWegf6JkCelatcDI5wxHUuHo6O2D+Osc= - - - Modules/module.modulemap - - hash2 - - EYrXhwPscfz6NC5xiiSHpFYdSR7Z5+JCyV2sAnxwmPc= - - - PrivacyInfo.xcprivacy - - hash2 - - cuaVRkQIQRl8fLAPRH2XlUdsPxO0W90uL0WcSHvmSnY= - - - - rules - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - -