使用新的蓝牙协议交互,完成鉴权
authorliangzhenying <867174124@qq.com>
Fri, 6 Dec 2024 09:41:32 +0000 (17:41 +0800)
committerliangzhenying <867174124@qq.com>
Fri, 6 Dec 2024 09:41:32 +0000 (17:41 +0800)
200 files changed:
MixSdk/Example/Example.xcodeproj/project.pbxproj
MixSdk/Example/Example/BleChatVC.swift
MixSdk/Example/Example/BleManager.swift [moved from MixSdk/Example/Example/BluetoothManager.swift with 77% similarity]
MixSdk/Example/Example/PhoneChatVC.swift
MixSdk/Example/Example/ViewController.swift
MixSdk/MixSdk/MixSdk.xcodeproj/project.pbxproj
MixSdk/MixSdk/MixSdk/MSVoiceChatSdk.swift
MixSdk/MixSdk/MixSdk/Tools/CRC16.swift
MixSdk/MixSdk/MixSdk/auth/MSAuth.swift
MixSdk/MixSdk/MixSdk/auth/MSAuthManager.swift [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/ble/MSBle.swift
MixSdk/MixSdk/MixSdk/ble/MSBleSender.swift
MixSdk/MixSdk/MixSdk/chat/MSVoiceChat.swift
document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo [deleted file]
document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule [deleted file]
document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory [deleted file]
document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 [deleted file]
document/MSVoiceChatSdk/MSVoiceChat iOS SDK接口文档.pdf [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example.xcodeproj/project.pbxproj [moved from document/MSVoiceChatSdk/Example/Example.xcodeproj/project.pbxproj with 98% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata [moved from document/MSVoiceChatSdk/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist [moved from document/MSVoiceChatSdk/MixSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme [moved from document/MSVoiceChatSdk/Example/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/AppDelegate.swift [moved from document/MSVoiceChatSdk/Example/Example/AppDelegate.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/51722943641_.pic.imageset/51722943641_.pic.jpg [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/51722943641_.pic.imageset/51722943641_.pic.jpg with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/51722943641_.pic.imageset/Contents.json [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/51722943641_.pic.imageset/Contents.json with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/Contents.json [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/Contents.json with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/cat.imageset/Contents.json [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/cat.imageset/Contents.json with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Assets.xcassets/cat.imageset/cat.png [moved from document/MSVoiceChatSdk/Example/Example/Assets.xcassets/cat.imageset/cat.png with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Base.lproj/LaunchScreen.storyboard [moved from document/MSVoiceChatSdk/Example/Example/Base.lproj/LaunchScreen.storyboard with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Base.lproj/Main.storyboard [moved from document/MSVoiceChatSdk/Example/Example/Base.lproj/Main.storyboard with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/BleChatVC.swift [moved from document/MSVoiceChatSdk/Example/Example/BleChatVC.swift with 93% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/BleManager.swift [moved from document/MSVoiceChatSdk/Example/Example/BluetoothManager.swift with 63% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Info.plist [moved from document/MSVoiceChatSdk/Example/Example/Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/LogViewController.swift [moved from document/MSVoiceChatSdk/Example/Example/LogViewController.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/PhoneChatVC.swift [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Play/PcmPlayer.swift [moved from document/MSVoiceChatSdk/Example/Example/Play/PcmPlayer.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Play/PlayerManager.swift [moved from document/MSVoiceChatSdk/Example/Example/Play/PlayerManager.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Record/AiMouseAudioRecord.h [moved from document/MSVoiceChatSdk/Example/Example/Record/AiMouseAudioRecord.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Record/AiMouseAudioRecord.m [moved from document/MSVoiceChatSdk/Example/Example/Record/AiMouseAudioRecord.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Record/AiMouseRecordManager.h [moved from document/MSVoiceChatSdk/Example/Example/Record/AiMouseRecordManager.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Record/AiMouseRecordManager.m [moved from document/MSVoiceChatSdk/Example/Example/Record/AiMouseRecordManager.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Record/Example-Bridging-Header.h [moved from document/MSVoiceChatSdk/Example/Example/Record/Example-Bridging-Header.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/SceneDelegate.swift [moved from document/MSVoiceChatSdk/Example/Example/SceneDelegate.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/Then.swift [moved from document/MSVoiceChatSdk/Example/Example/Then.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/ViewController.swift [moved from document/MSVoiceChatSdk/Example/Example/ViewController.swift with 64% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/VoiceChatCell.swift [moved from document/MSVoiceChatSdk/Example/Example/VoiceChatCell.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Headers/MSVoiceChatSdk-Swift.h [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Headers/MSVoiceChatSdk-Swift.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Headers/MSVoiceChatSdk.h [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Headers/MSVoiceChatSdk.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Info.plist [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk with 97% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.abi.json [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.abi.json with 96% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.private.swiftinterface [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.private.swiftinterface with 95% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc with 66% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftinterface [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftinterface with 95% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/module.modulemap [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/module.modulemap with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/PrivacyInfo.xcprivacy [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/PrivacyInfo.xcprivacy with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeResources [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeResources with 87% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature [moved from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature with 87% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/MixSdk.xcworkspace/contents.xcworkspacedata [moved from document/MSVoiceChatSdk/MixSdk.xcworkspace/contents.xcworkspacedata with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/MixSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist [new file with mode: 0644]
document/MSVoiceChatSdk/MSVoiceChatSdk/Podfile.lock [moved from document/MSVoiceChatSdk/Podfile.lock with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/LICENSE.md [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/LICENSE.md with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/README.md [moved from document/MSVoiceChatSdk/Pods/IQKeyboardManagerSwift/README.md with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Manifest.lock [moved from document/MSVoiceChatSdk/Pods/Manifest.lock with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Pods.xcodeproj/project.pbxproj [moved from document/MSVoiceChatSdk/Pods/Pods.xcodeproj/project.pbxproj with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/LICENSE [moved from document/MSVoiceChatSdk/Pods/SnapKit/LICENSE with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/README.md [moved from document/MSVoiceChatSdk/Pods/SnapKit/README.md with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/Constraint.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/Constraint.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintAttributes.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintAttributes.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintConfig.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintConfig.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintConstantTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintConstantTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDSL.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDSL.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDescription.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDescription.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDirectionalInsetTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDirectionalInsetTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDirectionalInsets.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintDirectionalInsets.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintInsetTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintInsetTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintInsets.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintInsets.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintItem.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintItem.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuide+Extensions.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuide+Extensions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuide.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuide.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuideDSL.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutGuideDSL.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutSupport.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutSupport.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutSupportDSL.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintLayoutSupportDSL.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMaker.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMaker.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerEditable.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerEditable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerExtendable.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerExtendable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerFinalizable.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerFinalizable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerPrioritizable.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerPrioritizable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerRelatable+Extensions.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerRelatable+Extensions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerRelatable.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMakerRelatable.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMultiplierTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintMultiplierTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintOffsetTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintOffsetTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintPriority.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintPriority.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintPriorityTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintPriorityTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintRelatableTarget.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintRelatableTarget.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintRelation.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintRelation.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintView+Extensions.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintView+Extensions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintView.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintView.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintViewDSL.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/ConstraintViewDSL.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/Debugging.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/Debugging.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/LayoutConstraint.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/LayoutConstraint.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/LayoutConstraintItem.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/LayoutConstraintItem.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/PrivacyInfo.xcprivacy [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/PrivacyInfo.xcprivacy with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/Typealiases.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/Typealiases.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/SnapKit/Sources/UILayoutSupport+Extensions.swift [moved from document/MSVoiceChatSdk/Pods/SnapKit/Sources/UILayoutSupport+Extensions.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-dummy.m [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-dummy.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.debug.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.debug.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.modulemap [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.modulemap with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.release.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/SnapKit/SnapKit.release.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig [moved from document/MSVoiceChatSdk/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Toast-Swift/LICENSE [moved from document/MSVoiceChatSdk/Pods/Toast-Swift/LICENSE with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Toast-Swift/README.md [moved from document/MSVoiceChatSdk/Pods/Toast-Swift/README.md with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy [moved from document/MSVoiceChatSdk/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/Pods/Toast-Swift/Toast/Toast.swift [moved from document/MSVoiceChatSdk/Pods/Toast-Swift/Toast/Toast.swift with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk/podfile [moved from document/MSVoiceChatSdk/podfile with 100% similarity]
document/MSVoiceChatSdk/MSVoiceChatSdk接口文档.pdf [deleted file]
document/MSVoiceChatSdk_iOS_v2024120401.zip [new file with mode: 0644]
document/WX20241206-163809@2x.png [new file with mode: 0644]

index dccf23c..3db5e89 100644 (file)
@@ -20,8 +20,8 @@
                184FFC492C218FC4006F664D /* PlayerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 184FFC482C218FC4006F664D /* PlayerManager.swift */; };
                184FFC4D2C2199E5006F664D /* SendToolBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 184FFC4C2C2199E5006F664D /* SendToolBar.swift */; };
                188695A62C5A3CAD00B9B89F /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = 188695A52C5A3CAD00B9B89F /* Date.swift */; };
-               18AA059B2CE4ADAF0008A345 /* MixSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18204BEC2C19417000F94E69 /* MixSdk.framework */; };
-               18B1A3702CE1E12800DD4A7C /* BluetoothManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */; };
+               18AA059B2CE4ADAF0008A345 /* MSVoiceChatSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18204BEC2C19417000F94E69 /* MSVoiceChatSdk.framework */; };
+               18B1A3702CE1E12800DD4A7C /* BleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A36F2CE1E12800DD4A7C /* BleManager.swift */; };
                18B1A3732CE1EF4900DD4A7C /* BleChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */; };
                18B1A3752CE1EF6200DD4A7C /* PhoneChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A3742CE1EF6200DD4A7C /* PhoneChatVC.swift */; };
                18C42C802C242AAC000D8860 /* liblzma.5.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */; };
@@ -62,7 +62,7 @@
                184FFC482C218FC4006F664D /* PlayerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerManager.swift; sourceTree = "<group>"; };
                184FFC4C2C2199E5006F664D /* SendToolBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendToolBar.swift; sourceTree = "<group>"; };
                188695A52C5A3CAD00B9B89F /* Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = "<group>"; };
-               18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BluetoothManager.swift; sourceTree = "<group>"; };
+               18B1A36F2CE1E12800DD4A7C /* BleManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleManager.swift; sourceTree = "<group>"; };
                18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BleChatVC.swift; sourceTree = "<group>"; };
                18B1A3742CE1EF6200DD4A7C /* PhoneChatVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneChatVC.swift; sourceTree = "<group>"; };
                18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.5.tbd; path = usr/lib/liblzma.5.tbd; sourceTree = SDKROOT; };
@@ -86,7 +86,7 @@
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               18AA059B2CE4ADAF0008A345 /* MixSdk.framework in Frameworks */,
+                               18AA059B2CE4ADAF0008A345 /* MSVoiceChatSdk.framework in Frameworks */,
                                18C42C862C242B0B000D8860 /* libbz2.tbd in Frameworks */,
                                18C42C842C242B01000D8860 /* libiconv.tbd in Frameworks */,
                                18C42C822C242AD3000D8860 /* CoreAudio.framework in Frameworks */,
                                18204BD52C193F9A00F94E69 /* SceneDelegate.swift */,
                                1843A7952C4E060D00FC010F /* LogViewController.swift */,
                                18204BD72C193F9A00F94E69 /* ViewController.swift */,
-                               18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */,
+                               18B1A36F2CE1E12800DD4A7C /* BleManager.swift */,
                                18B1A3742CE1EF6200DD4A7C /* PhoneChatVC.swift */,
                                18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */,
                                18EBBA142CDE1791006F3B80 /* VoiceChatCell.swift */,
                18204BE82C19417000F94E69 /* Products */ = {
                        isa = PBXGroup;
                        children = (
-                               18204BEC2C19417000F94E69 /* MixSdk.framework */,
+                               18204BEC2C19417000F94E69 /* MSVoiceChatSdk.framework */,
                        );
                        name = Products;
                        sourceTree = "<group>";
 /* End PBXProject section */
 
 /* Begin PBXReferenceProxy section */
-               18204BEC2C19417000F94E69 /* MixSdk.framework */ = {
+               18204BEC2C19417000F94E69 /* MSVoiceChatSdk.framework */ = {
                        isa = PBXReferenceProxy;
                        fileType = wrapper.framework;
-                       path = MixSdk.framework;
+                       path = MSVoiceChatSdk.framework;
                        remoteRef = 18204BEB2C19417000F94E69 /* PBXContainerItemProxy */;
                        sourceTree = BUILT_PRODUCTS_DIR;
                };
                                18B1A3732CE1EF4900DD4A7C /* BleChatVC.swift in Sources */,
                                18204BD42C193F9A00F94E69 /* AppDelegate.swift in Sources */,
                                18B1A3752CE1EF6200DD4A7C /* PhoneChatVC.swift in Sources */,
-                               18B1A3702CE1E12800DD4A7C /* BluetoothManager.swift in Sources */,
+                               18B1A3702CE1E12800DD4A7C /* BleManager.swift in Sources */,
                                184FFC492C218FC4006F664D /* PlayerManager.swift in Sources */,
                                18DB20492C213D730070D571 /* AiMouseRecordManager.m in Sources */,
                                18204BD62C193F9A00F94E69 /* SceneDelegate.swift in Sources */,
index 69c375d..e835a4d 100644 (file)
@@ -61,7 +61,7 @@ class BleChatVC: UIViewController{
     }
 
     func setupVoiceChat(){
-        MSVoiceChatSdk.shared.auth.authCallBack = {[unowned self] in
+        MSVoiceChatSdk.shared.ble.auth.authCallBack = {[unowned self] in
             self.view.makeToast("鉴权成功!" )
         }
         MSVoiceChatSdk.shared.voiceChat.start()
@@ -105,13 +105,10 @@ class BleChatVC: UIViewController{
     }
     
     @objc func requestToSpeak(){
-//        PlayerManager.shared.stop()
-//        MSVoiceChatSdk.shared.voiceChat.requestToSpeak()
-        MSVoiceChatSdk.shared.ble.startAuth()
+        MSVoiceChatSdk.shared.voiceChat.requestToSpeak()
     }
     func saveToFile(){
         let mp3Path = NSHomeDirectory() + "/Documents/1.mp3"
-        
         let url = URL(fileURLWithPath: mp3Path)
         do {
             try self.voiceData.write(to: url, options: .atomic)
@@ -128,7 +125,7 @@ class BleChatVC: UIViewController{
         }
     }
     @objc func endSpeakAction(){
-        MSVoiceChatSdk.shared.voiceChat.endSpeedch()
+        MSVoiceChatSdk.shared.voiceChat.endSpeech()
     }
 }
 extension BleChatVC:UITableViewDelegate,UITableViewDataSource {
similarity index 77%
rename from MixSdk/Example/Example/BluetoothManager.swift
rename to MixSdk/Example/Example/BleManager.swift
index 4fccdab..9773fe9 100644 (file)
@@ -17,10 +17,10 @@ public typealias IBDiscoverHandler = (_ peripheral: CBPeripheral) -> Void
 public typealias IBDidConectedHandler = (_ peripheral: CBPeripheral) -> Void
 public typealias IBDisConectedHandler = (_ peripheral: CBPeripheral) -> Void
 
-class BluetoothManager: NSObject {
-    static let shared = BluetoothManager()
+class BleManager: NSObject {
+    static let shared = BleManager()
 
-    private var writeCharacteristic: CBCharacteristic!
+    private var writeCharacteristic: CBCharacteristic?
     /// 中央管理类,管理蓝牙的扫描连接
     var centralManager: CBCentralManager!
     /// 当前连接设备
@@ -41,7 +41,7 @@ class BluetoothManager: NSObject {
     }
 }
 
-extension BluetoothManager{
+extension BleManager{
     /// 开始扫描
     func startScan() {
         print("开始扫描...")
@@ -75,11 +75,31 @@ extension BluetoothManager{
             print("手机未连上蓝牙设备!")
             return
         }
-        peripheral.writeValue(data, for: writeCharacteristic, type: .withoutResponse)
+        guard let char = writeCharacteristic else{
+            print("未找到对应的写入特征")
+//            var responseData = Data()
+//            if data[12] == 0x00{
+//                if data[13] == 0x02{
+//                    responseData = MSTool.hexStringToData("0000000000000000000000000002303045303831444335333141")
+//                }
+//                else if data[13] == 0x03{
+//                    responseData = MSTool.hexStringToData("00000000000000000000000000034b4b78414b6f3271443270584f5a5a4343337a")
+//                }
+//                else if data[13] == 0x04{
+//                    responseData = MSTool.hexStringToData("000000000000000000000000000459716747474b43786663635651476a555972705151644573744141766f6a7a6e")
+//                }
+//                else if data[13] == 0x05{
+//                    responseData = MSTool.hexStringToData("0000000000000000000000000005646b7369656b3533396473646b776469")
+//                }
+//            }
+//            MSVoiceChatSdk.shared.ble.sendToSdk(responseData)
+            return
+        }
+        peripheral.writeValue(data, for: char, type: .withoutResponse)
     }
 }
 
-extension BluetoothManager: CBCentralManagerDelegate {
+extension BleManager: CBCentralManagerDelegate {
     func centralManagerDidUpdateState(_ central: CBCentralManager) {
         switch central.state {
         case .unknown:
@@ -108,7 +128,6 @@ extension BluetoothManager: CBCentralManagerDelegate {
         currentPeripheral = peripheral
         peripheral.delegate = self
         peripheral.discoverServices([CBUUID(string: kserviceUUID)])
-        print("连接成功", peripheral.name ?? "")
         didConnectedCallBack?(peripheral)
     }
     
@@ -118,12 +137,11 @@ extension BluetoothManager: CBCentralManagerDelegate {
     }
     
     func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
-        print("已断开连接")
         disConnectedCallBack?(peripheral)
     }
 }
 
-extension BluetoothManager: CBPeripheralDelegate {
+extension BleManager: CBPeripheralDelegate {
     func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
         peripheral.services?.forEach {
             peripheral.discoverCharacteristics(nil, for: $0)
index fbd790d..899dfa7 100644 (file)
@@ -41,7 +41,7 @@ class PhoneChatVC: UIViewController{
     func setupViews(){
         self.title = "phone chat"
         self.view.backgroundColor = .white
-        
+        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "结束说话", style: .done, target: self, action: #selector(endSpeakAction))
         
         tableView.delegate = self
         tableView.dataSource = self
@@ -113,8 +113,12 @@ class PhoneChatVC: UIViewController{
         PlayerManager.shared.stop()
         MSVoiceChatSdk.shared.voiceChat.requestToSpeak()
     }
+    @objc func endSpeakAction(){
+        recordMamager.stop()
+        MSVoiceChatSdk.shared.voiceChat.endSpeech()
+    }
     func saveToFile(){
-        let mp3Path = NSHomeDirectory() + "/Documents/1111\(Int(Date().timeIntervalSince1970)).mp3"
+        let mp3Path = NSHomeDirectory() + "/Documents/\(Int(Date().timeIntervalSince1970)).mp3"
         
         let url = URL(fileURLWithPath: mp3Path)
         do {
@@ -125,6 +129,7 @@ class PhoneChatVC: UIViewController{
             PlayerManager.shared.play(filePath: mp3Path) {[unowned self] success in
                 self.stateLabel.setTitle("结束播放...", for: .normal)
                 MSVoiceChatSdk.shared.voiceChat.endPlay()
+                recordMamager.start()
             }
         }
         catch{
index 5ff0561..2ec2219 100644 (file)
@@ -17,7 +17,6 @@ class ViewController: UIViewController {
         
     override func viewDidLoad() {
         super.viewDidLoad()
-        title = "扫描"
         setupViews()
         setupBle()
         setupVoiceChatSdk()
@@ -30,14 +29,13 @@ class ViewController: UIViewController {
 
     override func viewDidDisappear(_ animated: Bool) {
         super.viewDidDisappear(animated)
-        BluetoothManager.shared.stopScan()
+        BleManager.shared.stopScan()
     }
     
     func setupViews(){
         self.title = "VoiceChat"
         self.view.backgroundColor = .white
         self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "扫描", style: .done, target: self, action: #selector(scanAction))
-        self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "登录", style: .done, target: self, action: #selector(registerAction))
         
         tableView.delegate = self
         tableView.dataSource = self
@@ -56,45 +54,46 @@ class ViewController: UIViewController {
         MSVoiceChatSdk.shared.initSDK()
         //isDebug为true则打印日志,false则不打印日志
         MSVoiceChatSdk.shared.isDebug = true
-        //设置sdk数据回调
+        //设置sdk蓝牙数据回调
         MSVoiceChatSdk.shared.ble.sdkToDeviceCallback = {data in
             //这里将回调的数据发给蓝牙设备
-            BluetoothManager.shared.send(data)
+            BleManager.shared.send(data)
+        }
+        //鉴权成功
+        MSVoiceChatSdk.shared.ble.auth.authCallBack = {[unowned self] in
+            self.view.makeToast("鉴权成功")
+            self.navigationController?.pushViewController(BleChatVC(), animated: true)
         }
     }
     
     func setupBle() {
-        BluetoothManager.shared.discoverCallBack = { [unowned self] peripheral in
+        BleManager.shared.discoverCallBack = { [unowned self] peripheral in
             if dataArray.contains(peripheral){
                 return
             }
             if peripheral.name == nil || (peripheral.name!.isEmpty){
                 return
             }
-            print(peripheral)
+//            print(peripheral)
             dataArray.append(peripheral)
             tableView.reloadData()
         }
-        BluetoothManager.shared.didConnectedCallBack = {[unowned self] peripheral in
+        BleManager.shared.didConnectedCallBack = {[unowned self] peripheral in
             self.view.hideToastActivity()
-//            let vc = PhoneChatVC()
-//            let vc = BleChatVC()
-//            self.navigationController?.pushViewController(vc, animated: true)
             MSVoiceChatSdk.shared.ble.didConnectBle()
         }
-        BluetoothManager.shared.disConnectedCallBack = { [unowned self] peripheral in
-            print("蓝牙已经断开!!!!!!!!!!!")
+        BleManager.shared.disConnectedCallBack = { [unowned self] peripheral in
             self.view.makeToast("蓝牙已经断开!")
             MSVoiceChatSdk.shared.ble.didDisconnectBle()
         }
-        BluetoothManager.shared.didReceiveDataCallback = {data in
+        BleManager.shared.didReceiveDataCallback = {data in
             // 收到蓝牙设备的数据,转发给sdk处理
             MSVoiceChatSdk.shared.ble.sendToSdk(data)
         }
     }
     
     @objc func scanAction(){
-        BluetoothManager.shared.startScan()
+        BleManager.shared.startScan()
     }
 }
 
@@ -114,58 +113,6 @@ extension ViewController: UITableViewDelegate, UITableViewDataSource {
     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         view.makeToastActivity(.center)
         let device = dataArray[indexPath.row]
-        BluetoothManager.shared.connect(device)
-        
-//        let vc = PhoneChatVC()
-//            let vc = BleChatVC()
-//        self.navigationController?.pushViewController(vc, animated: true)
-    }
-}
-extension ViewController{
-    @objc func registerAction() {
-//        let data = MSTool.hexStringToData("000000000000000000000000000064")
-//        let data = MSTool.hexStringToData("000000000000000000000000000141333832302d5635382d323032343132303431343038333432")
-//        let data = MSTool.hexStringToData("0000000000000000000000000002303045303831444335333141")
-//        let data = MSTool.hexStringToData("00000000000000000000000002000400003e80")
-//        MSVoiceChatSdk.shared.ble.sendToSdk(data)
-        view.makeToastActivity(.center)
-        MSVoiceChatSdk.shared.auth.register(productId: productId, productKey: productKey, deviceId: deviceId){[weak self] password,error in
-            self?.view.hideToastActivity()
-            if let password = password{
-                self?.view.makeToast("register success!")
-                print(password)
-                //deviceId和password APP要确保这个一一对应。
-                UserDefaults.standard.setValue(password, forKey: deviceId)
-            }
-            else{
-                print(error!)
-                self?.view.makeToast(error!.msg )
-            }
-        }
-    }
-    @objc func loginAction() {
-        if let password = UserDefaults.standard.string(forKey: deviceId){
-            startLogin(password: password)
-        }
-        else{
-            self.view.makeToast("请先注册")
-        }
-    }
-    func startLogin(password:String){
-        view.makeToastActivity(.center)
-        MSVoiceChatSdk.shared.auth.login(productKey:productKey,deviceId: deviceId, password: password){[weak self]  token,error in
-            self?.view.hideToastActivity()
-            if let err = error{
-                self?.view.makeToast(err.msg)
-                if case  .reponseError(let code,let message) = err,code == 50021{
-                    //50021是账号或密码错误.可以在这里调用注册,重新注册后,之前的密码会被覆盖,APP更新保存的新密码
-                    self?.registerAction()
-                }
-            }
-            else{
-                self?.view.makeToast("Login success!")
-                print(token ?? "")
-            }
-        }
+        BleManager.shared.connect(device)
     }
 }
index b01d804..0242c41 100644 (file)
                18C42C782C24241A000D8860 /* MSVoiceChatSdk-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42C762C24241A000D8860 /* MSVoiceChatSdk-Bridging-Header.h */; };
                18C42C7B2C24270D000D8860 /* MSAudioConvert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42C7A2C24270D000D8860 /* MSAudioConvert.swift */; };
                18C42C7D2C242A40000D8860 /* liblzma.5.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C7C2C242A40000D8860 /* liblzma.5.tbd */; };
+               18D015842D018B6B00A59488 /* MSAuthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D015832D018B6B00A59488 /* MSAuthManager.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
                18C42C762C24241A000D8860 /* MSVoiceChatSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MSVoiceChatSdk-Bridging-Header.h"; sourceTree = "<group>"; };
                18C42C7A2C24270D000D8860 /* MSAudioConvert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MSAudioConvert.swift; sourceTree = "<group>"; };
                18C42C7C2C242A40000D8860 /* liblzma.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.5.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/liblzma.5.tbd; sourceTree = DEVELOPER_DIR; };
+               18D015832D018B6B00A59488 /* MSAuthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MSAuthManager.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
                18C21AA62D000AEE00F718A7 /* auth */ = {
                        isa = PBXGroup;
                        children = (
+                               18D015832D018B6B00A59488 /* MSAuthManager.swift */,
                                18204BC52C193E4B00F94E69 /* MSAuth.swift */,
                                18314A882C3CD55E0028CE50 /* MSAuthModel.swift */,
                        );
                                18A2DCDA2C40D94800A8731B /* Int+Extension.swift in Sources */,
                                18A2DCFE2C40D94800A8731B /* Authenticator.swift in Sources */,
                                18A2DD172C40D94900A8731B /* OCB.swift in Sources */,
+                               18D015842D018B6B00A59488 /* MSAuthManager.swift in Sources */,
                                18C42C7B2C24270D000D8860 /* MSAudioConvert.swift in Sources */,
                                18B1A38C2CE3547F00DD4A7C /* MSBle.swift in Sources */,
                                18A2DCCC2C40D94800A8731B /* ASN1Decoder.swift in Sources */,
index defcfe6..d442fee 100644 (file)
@@ -21,8 +21,8 @@ class MSConfig{
      }
 
     static func webSocketUrl(api:String,addPlatform:Bool)->String{
-//        return wsBaseURL + api + "?platform=aliyun&is_auth=1&dt=\(MSVoiceChatSdk.shared.auth.deviceToken)"
-        return "ws://118.145.158.207:22080/" + api + "?is_auth=0"
+        return wsBaseURL + api + "?platform=aliyun&is_auth=1&dt=\(MSVoiceChatSdk.shared.ble.auth.deviceToken)"
+//        return "ws://118.145.158.207:22080/" + api + "?is_auth=0"
     }
 }
 
@@ -46,15 +46,17 @@ public class MSVoiceChatSdk:NSObject {
     public var logs: [String] { Logger.logs }
     
     /// SDK 版本号
-    public let version: String = "v2024120401"
+    public let version: String = "MSVoiceChatSdk_v2024120401"
     /// 默认为 false
     public var isDebug: Bool = false {
-        didSet { Logger.isDebug = isDebug }
+        didSet {
+            Logger.isDebug = isDebug
+            if isDebug{
+                Logger.log("************\(version)**************")
+            }
+        }
     }
     
-    /// 鉴权
-    public let auth = MSAuth()
-    
     /// 蓝牙
     public let ble = MSBle()
     
index bb7ae8b..f0bb9d5 100644 (file)
@@ -9,10 +9,10 @@ import Foundation
 
 /// CRC-16/MODBUS
 class CRC16 {
-    static let shared = CRC16()
+//    static let shared = CRC16()
     private init() { }
     
-    func result(_ bytes: [UInt8]) -> [UInt8] {
+    static func result(_ bytes: [UInt8]) -> [UInt8] {
         var crcValue = crc(bytes)
         var crcBytes: [UInt8] = [0, 0]
         for index in (0..<2).reversed() {
@@ -22,8 +22,7 @@ class CRC16 {
         return crcBytes
     }
     
-    private func crc(_ bytes: [UInt8]) -> Int {
-        
+    static private func crc(_ bytes: [UInt8]) -> Int {
         var crcSum: Int = 0xffff
         let polynomial: Int = 0xa001
         let length = bytes.count
@@ -41,4 +40,23 @@ class CRC16 {
         }
         return crcSum
     }
+    
+    public static func xmodem(arr: [UInt8]) -> Int {
+        var wCRCin = 0x0000;
+        let wCPoly = 0x1021;
+        let len = arr.count;
+        for i in 0...len-1 {
+            for j in 0...7 {
+                let bit = ((arr[i] >> (7 - j) & 1) == 1);
+                let c15 = ((wCRCin >> 15 & 1) == 1);
+                wCRCin <<= 1;
+                if(c15 != bit) {
+                    wCRCin ^= wCPoly;
+                }
+            }
+        }
+        wCRCin &= 0xFFFF;
+        wCRCin ^= 0x0000;
+        return wCRCin
+    }
 }
index 75b8d51..111530d 100644 (file)
@@ -15,14 +15,14 @@ public typealias MSLoginCallBack = (_ token: String?,_ error:MSError?) -> Void
 
 
 /// 鉴权管理类
-public class MSAuth {
-    /// 鉴权回调
-    public var authCallBack:(()->Void)?
-
-    /// 是否已经鉴权
-    public private(set) var authorized = false
-    
-    var deviceToken = ""
+public class MSAuthApi {
+//    /// 鉴权回调
+//    public var authCallBack:(()->Void)?
+//
+//    /// 是否已经鉴权
+//    public private(set) var authorized = false
+//    
+//    var deviceToken = ""
     
     /// 注册
     /// - Parameters:
@@ -117,10 +117,9 @@ public class MSAuth {
                 guard let dict = dict else {return completeHandler(nil,error)}
                 
                 if let result = dict["success"] as? Bool,result == true,let dataDict = dict["data"] as? [String:Any]{
-                    self.authorized = true
-                    self.deviceToken = dataDict["token"] as? String ?? ""
-                    
-                    completeHandler(self.deviceToken,nil)
+//                    self.authorized = true
+                    let deviceToken = dataDict["token"] as? String ?? ""
+                    completeHandler(deviceToken,nil)
                 }
                 else{
                     completeHandler(nil,MSError.reponseError(dict["code"] as? Int ?? 0,dict["msg"] as? String ?? ""))
diff --git a/MixSdk/MixSdk/MixSdk/auth/MSAuthManager.swift b/MixSdk/MixSdk/MixSdk/auth/MSAuthManager.swift
new file mode 100644 (file)
index 0000000..95f8079
--- /dev/null
@@ -0,0 +1,280 @@
+//
+//  MSAuthManager.swift
+//  MSVoiceChatSdk
+//
+//  Created by incar on 2024/12/5.
+//
+
+import Foundation
+
+public class MSAuthManager{
+    /// 鉴权回调
+    public var authCallBack:(()->Void)?
+    
+    /// 是否已经鉴权
+    public private(set) var authorized = false
+    
+    /// 鉴权
+    let auth = MSAuthApi()
+    
+    var deviceToken = ""
+    
+    //    var isAuthing = false//是否正在鉴权
+    
+    
+    func didConnectBle(){
+        startAuth()
+    }
+    
+    func didDisconnectBle(){
+        //        isAuthing = false
+        deviceToken = ""
+        authorized = false
+    }
+}
+extension MSAuthManager{
+    func startAuth(){
+        //        if isAuthing {
+        //            return
+        //        }
+        //        isAuthing = true
+        Logger.log("开始获取设备信息...")
+        requestDeviceInfo {[weak self] info in
+            guard let self = self else {return}
+            guard let info = info else {
+                Logger.log("获取设备信息失败!!!")
+                //                isAuthing = false
+                return
+            }
+            //            let deviceInfo = info
+            Logger.log("设备信息 = \(info.description)")
+            startLogin(device:info)
+        }
+    }
+    func startLogin(device:MSBleInfo){
+        let deviceInfo = MSBleInfo()
+        deviceInfo.deviceId = "28110687C456"
+        deviceInfo.productId = "WTxAKo2qD2pXOZZLW3zz"
+        deviceInfo.productKey = "YqggeKCxfEOVQGjUYrpQQdEstGpvojzn"
+        deviceInfo.password = ""
+        
+        startLogin(device:deviceInfo) {[weak self] token, error in
+            guard let self = self else {return}
+            //            isAuthing = false
+            if let token = token {
+                deviceToken = token
+                Logger.log("************鉴权成功***************")
+                authCallBack?()
+            }
+        }
+    }
+    func requestDeviceInfo(finished: @escaping (MSBleInfo?) -> Void){
+        let deviceInfo = MSBleInfo()
+        self.requestDeviceId {[weak self] value in
+            guard let self = self else {return}
+            if let value = value{
+                deviceInfo.deviceId = value
+                
+                self.requestProductKey { value in
+                    if let value = value{
+                        deviceInfo.productKey = value
+                        
+                        self.requestSecretKey { value in
+                            if let value = value{
+                                deviceInfo.productId = value
+                                
+                                self.requestDeviceSecret { value in
+                                    if let value = value{
+                                        deviceInfo.password = value
+                                        finished(deviceInfo)
+                                        return
+                                    }
+                                    else{
+                                        finished(nil)
+                                    }
+                                }
+                            }
+                            else{
+                                finished(nil)
+                            }
+                        }
+                    }
+                    else{
+                        finished(nil)
+                    }
+                }
+            }
+            else{
+                finished(nil)
+            }
+        }
+    }
+    
+    func requestDeviceId(finished: @escaping (String?) -> Void){
+        Logger.log("请求Mac地址...")
+        let cmd = [0.byte]
+        let type = [2.byte]
+        let data = Data(cmd + type)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                let value = String(data:result.payload.suffix(from: 2) , encoding: .utf8) ?? ""
+                Logger.log("MAC地址 \(value)")
+                finished(value)
+            }
+            else{
+                finished(nil)
+            }
+        }
+        sendToBle(sender)
+    }
+    func requestProductKey(finished: @escaping (String?) -> Void){
+        Logger.log("请求产品key...")
+        let cmd = [0.byte]
+        let type = [3.byte]
+        let data = Data(cmd + type)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                let value = String(data:result.payload.suffix(from: 2) , encoding: .utf8) ?? ""
+                Logger.log("产品key \(value)")
+                finished(value)
+            }
+            else{
+                finished(nil)
+            }
+        }
+        sendToBle(sender)
+    }
+    func requestSecretKey(finished: @escaping (String?) -> Void){
+        Logger.log("请求产品密钥...")
+        let cmd = [0.byte]
+        let type = [4.byte]
+        let data = Data(cmd + type)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                let value = String(data:result.payload.suffix(from: 2) , encoding: .utf8) ?? ""
+                Logger.log("产品密钥 \(value)")
+                finished(value)
+            }
+            else{
+                finished(nil)
+            }
+        }
+        sendToBle(sender)
+    }
+    func requestDeviceSecret(finished: @escaping (String?) -> Void){
+        Logger.log("请求设备密码...")
+        let cmd = [0.byte]
+        let type = [5.byte]
+        let data = Data(cmd + type)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                let value = String(data:result.payload.suffix(from: 2) , encoding: .utf8) ?? ""
+                Logger.log("设备密码 \(value)")
+                finished(value)
+            }
+            else{
+                finished(nil)
+            }
+        }
+        sendToBle(sender)
+    }
+    
+    func sendToBle(_ sender:MSBleSender){
+        MSVoiceChatSdk.shared.ble.sendToBle(sender)
+    }
+}
+
+extension MSAuthManager{
+    func requestSetPassword(_ password:String){
+        Logger.log("设置设备密码...")
+        let cmd = [1.byte]
+        let type = [0.byte]
+        guard let content = password.data(using: .utf8) else{
+            Logger.log("设置设备密码失败,密码转data出错,\(password)")
+            return
+        }
+        var data = Data(cmd + type)
+        data.append(content)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                Logger.log("设置设备密码结果 \(result.payload[2].int)")
+            }
+            else{
+                //                Logger.log("设置设备密码结果失败")
+            }
+        }
+        sendToBle(sender)
+    }
+    func setBrand(_ name:String){
+        Logger.log("设置品牌名称...")
+        let cmd = [1.byte]
+        let type = [1.byte]
+        guard let content = name.data(using: .utf8) else{
+            Logger.log("设置品牌名称失败,品牌名称转data出错,\(name)")
+            return
+        }
+        var data = Data(cmd + type)
+        data.append(content)
+        let sender = MSBleSender(payload: data)
+        sender.completion = { result in
+            Logger.log("\(result.description)")
+            if result.isSuccess{
+                Logger.log("设置品牌名称结果 \(result.payload[2].int)")
+            }
+            else{
+                //                Logger.log("设置设备密码结果失败")
+            }
+        }
+        sendToBle(sender)
+    }
+}
+extension MSAuthManager{
+    func registerAction(device:MSBleInfo,completeHandler: @escaping MSLoginCallBack) {
+        auth.register(productId: device.productId, productKey: device.productKey, deviceId: device.deviceId){[weak self] password,error in
+            if let password = password{
+                device.password = password
+                self?.startLogin(device:device,completeHandler: { token, error in
+                    completeHandler(token,error)
+                })
+//                self?.requestSetPassword(password)
+            }
+            else{
+                completeHandler(nil,error)
+            }
+        }
+    }
+    
+    func startLogin(device:MSBleInfo,completeHandler: @escaping MSLoginCallBack){
+        if device.password.isEmpty{
+            self.registerAction(device:device,completeHandler: { token, error in
+                completeHandler(token,error)
+            })
+            return
+        }
+        auth.login(productKey:device.productKey,deviceId: device.deviceId, password: device.password){[weak self]  token,error in
+            if let err = error{
+                if case  .reponseError(let code,_) = err,code == 50021{
+                    //50021是账号或密码错误.可以在这里调用注册,重新注册后,之前的密码会被覆盖,APP更新保存的新密码
+                    self?.registerAction(device:device,completeHandler: completeHandler)
+                }
+                else{
+                    completeHandler(nil,err)
+                }
+            }
+            else{
+                completeHandler(token,nil)
+            }
+        }
+    }
+}
+
index 15f45b4..6b3bd7e 100644 (file)
 
 import Foundation
 public class MSBle {
-    var lastSender:MSBleSender?
-    var deviceInfo:MSBleInfo?
-    var isAuthing = false//是否正在鉴权
+   static var msgId = 0
+   var lastSender:MSBleSender?
+    
+   public var auth = MSAuthManager()
     
     init() {
 
@@ -20,12 +21,15 @@ public class MSBle {
     
     /// 连上蓝牙设备后必须调此方法通知sdk
     public func didConnectBle(){
-        Logger.log("蓝牙连接" )
-        startAuth()
+        Logger.log("蓝牙已连接" )
+        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
+            self.auth.didConnectBle()
+        }
     }
     /// 断开蓝牙设备后必须调此方法通知sdk
     public func didDisconnectBle(){
         Logger.log("蓝牙已断开" )
+        auth.didDisconnectBle()
     }
     
     /// sdk发送数据回调,app将此数据转发给蓝牙设备
@@ -42,15 +46,7 @@ public class MSBle {
             Logger.log("接收到的蓝牙数据异常")
             return
         }
-//        receive(data)
-        
-        //        if let sender = lastSender{
-        //            lastSender = nil
-        //            sender.completion?(.response.code(.success).value(data))
-        //            sender.remove()
-        //
-        //            deinitTimer()
-        //        }
+        receive(data)
     }
 }
 
@@ -60,218 +56,74 @@ extension MSBle{
         let cmd = payload[0].int
         let type = payload[1].int
         Logger.log("cmd = \(cmd) type = \(type)")
+        
+        if let sender = lastSender,sender.cmd == cmd,sender.type == type{
+            lastSender = nil
+            sender.completion?(.response.code(.success).value(data))
+            sender.remove()
+            deinitTimer()
+            return
+        }        
         switch cmd {
-        case 0x00:
-            Logger.log("获取设备信息")
-            receiveDeviceInfo(payload)
-        case 0x01:
-            Logger.log("设置设备数据")
-            receiveSetDeviceInfo(payload)
+//        case 0x00:
+//            Logger.log("获取设备信息")
+//            receiveDeviceInfo(payload)
+//        case 0x01:
+//            Logger.log("设置设备数据")
+//            receiveSetDeviceInfo(payload)
         case 0x02:
             Logger.log("AI语音对话")
-            receiveVoice(payload)
-        default:
-            Logger.log("未定义指令")
-        }
-    }
-    func receiveDeviceInfo(_ list:[UInt8]){
-        let type = list[1].int
-        switch type {
-        case 0x00:
-            let value = list[2].int
-            Logger.log("电池电量 \(value)")
-            
-        case 0x01:
-            let value = String(data: Data(list.suffix(from: 2)), encoding: .utf8)  ?? ""
-            Logger.log("软件版本 \(value)")
-        case 0x02:
-            let value = String(data: Data(list.suffix(from: 2)), encoding: .utf8) ?? ""
-            Logger.log("MAC地址 \(value)")
-        case 0x03:
-            let value = String(data: Data(list.suffix(from: 2)), encoding: .utf8) ?? ""
-            Logger.log("产品密钥 \(value)")
-            
-        case 0x04:
-            let value = String(data: Data(list.suffix(from: 2)), encoding: .utf8) ?? ""
-            Logger.log("产品密码 \(value)")
-        case 0x05:
-            let value = String(data: Data(list.suffix(from: 2)), encoding: .utf8) ?? ""
-            Logger.log("设备密码 \(value)")
-        default:
-            Logger.log("未定义指令")
-        }
-    }
-    func receiveSetDeviceInfo(_ list:[UInt8]){
-        let type = list[1].int
-        switch type {
-        case 0x00:
-            let value = list[2].int
-            Logger.log("密码设置 \(value)")
-            
-        case 0x01:
-            let value = list[2].int
-            Logger.log("品牌名称设置 \(value)")
-        default:
-            Logger.log("未定义指令")
-        }
-    }
-    func receiveVoice(_ list:[UInt8]){
-        let type = list[1].int
-        switch type {
-        case 0x00:
-            let value = list[2].int
-            Logger.log("开始录音 \(value)")
-            
-        case 0x01:
-            let value = list[2].int
-            Logger.log("停止录音 \(value)")
-        case 0x02:
-            Logger.log("音频流 \(Data(list.suffix(from: 2)))")
+            let voiceData = Data(data.suffix(from: 13))
+            MSVoiceChatSdk.shared.voiceChat.sendVoice(pcmData: voiceData)
         default:
             Logger.log("未定义指令")
         }
     }
 }
-
 extension MSBle{
-    public func startAuth(){
-        if isAuthing {
-            return
-        }
-        isAuthing = true
-        requestDeviceInfo {[weak self] info in
-            guard let self = self else {return}
-            guard let info = info else {
-                Logger.log("获取设备信息失败!!!")
-                isAuthing = false
-                return
-            }
-            Logger.log("设备信息 = \(info.description)")
-            deviceInfo = info
-            
-            deviceInfo!.deviceId = "28110687C456"
-            deviceInfo!.productId = "WTxAKo2qD2pXOZZLW3zz"
-            deviceInfo!.productKey = "YqggeKCxfEOVQGjUYrpQQdEstGpvojzn"
-            deviceInfo!.password = ""
-            
-            self.startLogin {[weak self] token, error in
-                guard let self = self else {return}
-                isAuthing = false
-            }
-        }
-    }
-    func requestDeviceInfo(finished: @escaping (MSBleInfo?) -> Void){
-        let deviceInfo = MSBleInfo()
-        self.requestDeviceId {[weak self] value in
-            guard let self = self else {return}
-            if let value = value{
-                deviceInfo.deviceId = value
-                
-                self.requestProductKey { value in
-                    if let value = value{
-                        deviceInfo.productKey = value
-                        
-                        self.requestSecretKey { value in
-                            if let value = value{
-                                deviceInfo.productId = value
-                                
-                                self.requestDeviceSecret { value in
-                                    if let value = value{
-                                        deviceInfo.password = value
-                                        finished(deviceInfo)
-                                        return
-                                    }
-                                    else{
-                                        finished(nil)
-                                    }
-                                }
-                            }
-                            else{
-                                finished(nil)
-                            }
-                        }
-                    }
-                    else{
-                        finished(nil)
-                    }
-                }
-            }
-            else{
-                finished(nil)
-            }
-        }
-    }
-    
-    func requestDeviceId(finished: @escaping (String?) -> Void){
-        let cmd = [0.byte]
-        let type = [2.byte]
-        let data = Data(cmd + type)
-        let sender = MSBleSender()
-        sender.list.append(data)
-        sender.completion = { result in
-            Logger.log("\(result.description)")
-            if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["MAC"] as? String{
-                finished(value)
-            }
-            else{
-                finished(nil)
-            }
-        }
-        sendToBle(sender)
-    }
-    func requestProductKey(finished: @escaping (String?) -> Void){
-        let cmd = [0.byte]
-        let type = [3.byte]
-        let data = Data(cmd + type)
-        let sender = MSBleSender()
-        sender.list.append(data)
+    func startRecord(finished: @escaping (Bool) -> Void){
+        Logger.log("请求开始录音...")
+        let cmd = [2.byte]
+        let type = [0.byte]
+        let content = [0.byte]//数据格式- 0x00 PCM;0x01 adPCM;0x02 SBC;0x03 RAW;0x04 OPUS
+        let data = Data(cmd + type + content)
+        let sender = MSBleSender(payload: data)
         sender.completion = { result in
             Logger.log("\(result.description)")
-            if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["productKey"] as? String{
+            if result.isSuccess{
+                let value = result.payload[2].int == 0x01
+                Logger.log("开始录音响应 \(value)")
                 finished(value)
             }
             else{
-                finished(nil)
+                finished(false)
             }
         }
         sendToBle(sender)
     }
-    func requestSecretKey(finished: @escaping (String?) -> Void){
-        let cmd = [0.byte]
-        let type = [4.byte]
-        let data = Data(cmd + type)
-        let sender = MSBleSender()
-        sender.list.append(data)
+    func stopRecord(finished: @escaping (Bool) -> Void){
+        Logger.log("请求停止录音...")
+        let cmd = [2.byte]
+        let type = [1.byte]
+        let formatter = [0.byte]//数据格式- 0x00 PCM;0x01 adPCM;0x02 SBC;0x03 RAW;0x04 OPUS
+        let size = 16000.byte4
+        let data = Data(cmd + type + formatter + size)
+        let sender = MSBleSender(payload: data)
         sender.completion = { result in
             Logger.log("\(result.description)")
-            if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["secretKey"] as? String{
+            if result.isSuccess{
+                let value = result.payload[2].int == 0x01
+                Logger.log("停止录音响应 \(value)")
                 finished(value)
             }
             else{
-                finished(nil)
+                finished(false)
             }
         }
         sendToBle(sender)
     }
-    func requestDeviceSecret(finished: @escaping (String?) -> Void){
-        let cmd = [0.byte]
-        let type = [5.byte]
-        let data = Data(cmd + type)
-        let sender = MSBleSender()
-        sender.list.append(data)
-        sender.completion = { result in
-            Logger.log("\(result.description)")
-            if result.isSuccess,let dict = MSTool.dataToJson(result.data) ,let value = dict["deviceSecret"] as? String{
-                finished(value)
-            }
-            else{
-                finished(nil)
-            }
-        }
-        sendToBle(sender)
-    }
-    
-    
+}
+extension MSBle{
     func sendToBle(_ sender:MSBleSender){
         if let _ = lastSender {
             sender.completion(.response.code(.failure))
@@ -286,15 +138,12 @@ extension MSBle{
         lastSender = sender
         startTimer()
         for data in sender.list{
-            if let sendToBleBlock = self.sdkToDeviceCallback {
-                Logger.log("[send]" + data.joined())
-//                sendToBleBlock(data)
-            }
+            Logger.log("[send]" + data.joined())
+            self.sdkToDeviceCallback?(data)
         }
     }
 }
 
-
 extension MSBle{
     static var timer: Timer?
     func startTimer() {
@@ -308,7 +157,7 @@ extension MSBle{
                 sender.remove()
             }
         })
-//        Logger.log("创建定时器")
+//      Logger.log("创建定时器")
     }
     
     func deinitTimer() {
@@ -319,38 +168,3 @@ extension MSBle{
     }
 }
 
-extension MSBle{
-    func registerAction(completeHandler: @escaping MSLoginCallBack) {
-        MSVoiceChatSdk.shared.auth.register(productId: deviceInfo!.productId, productKey: deviceInfo!.productKey, deviceId: deviceInfo!.deviceId){[weak self] password,error in
-            if let password = password{
-                self?.deviceInfo?.password = password
-                self?.startLogin(completeHandler: completeHandler)
-            }
-            else{
-                completeHandler(nil,error)
-            }
-        }
-    }
-
-    func startLogin(completeHandler: @escaping MSLoginCallBack){
-        if let info = deviceInfo,info.password.isEmpty{
-            registerAction(completeHandler: completeHandler)
-            return
-        }
-        
-        MSVoiceChatSdk.shared.auth.login(productKey:deviceInfo!.productKey,deviceId: deviceInfo!.deviceId, password: deviceInfo!.password){[weak self]  token,error in
-            if let err = error{
-                if case  .reponseError(let code,_) = err,code == 50021{
-                    //50021是账号或密码错误.可以在这里调用注册,重新注册后,之前的密码会被覆盖,APP更新保存的新密码
-                    self?.registerAction(completeHandler: completeHandler)
-                }
-                else{
-                    completeHandler(nil,err)
-                }
-            }
-            else{
-                completeHandler(token,nil)
-            }
-        }
-    }
-}
index c892412..443d82f 100644 (file)
@@ -8,20 +8,45 @@
 import Foundation
 
 class MSBleSender{
+    var cmd:UInt8 = 0x00
+    var type:UInt8 = 0x00
     var completion: MSCompletionHandler!
     var list = [Data]()
     
     static var all: [MSBleSender] = []
     
-    init() {
+    init(payload:Data) {
+        cmd = payload[0]
+        type = payload[1]
+        
+        let version:UInt8 = 0//版本[bit0,bit3],当前版本号为0
+        let dataType:UInt8 = 0//数据类型[bit4,bit7],0字节流数据(传输文件、音频、图片等);1指令数据(控制和响应指令)
+        let head0 = 0
+        let totalPkg = 1//总包数[byte1,byte3]
+        let currentPkg = 0// 当前包数[byte4,byte6]
+        let msgId = MSBle.msgId//[tyte7]
+        let size = payload.count//载荷大小[byte8,byte9]
+        let crc = CRC16.xmodem(arr: payload.bytes)//载荷大小[byte10,byte11]
+        Logger.log("payload = \(payload.joined())")
+        Logger.log("crc = \(Data(crc.byte2).joined())")
+                
+        var header = Data()
+        header.append(Data([head0.byte]))
+        header.append(Data(totalPkg.byte3))
+        header.append(Data(currentPkg.byte3))
+        header.append(Data([msgId.byte]))
+        header.append(Data(size.byte2))
+        header.append(Data(crc.byte2))
+        let data = header + payload
+        list.append(data)
         Self.all.append(self)
+        MSBle.msgId += 1
     }
 
     /// 从缓存实例集合中移除该实例
     func remove() {
         Self.all.removeAll { $0 === self }
     }
-    
 }
 
 public typealias MSCompletionHandler = (_ result: MSResponse) -> Void
@@ -34,13 +59,13 @@ public enum MSCode: Int,CustomStringConvertible {
     }
     
     /// 操作成功
-    case success = 1000
+    case success = 10000
     /// 操作失败
-    case failure = 1001
+    case failure = 10001
     /// 请求超时
-    case timeout = 1004
+    case timeout = 10004
     /// 未知错误
-    case unknow = 1005
+    case unknow = 10005
     
     var message:String{
         switch self {
@@ -59,6 +84,7 @@ public enum MSCode: Int,CustomStringConvertible {
 public class MSResponse {
     public private(set) var code: MSCode = .success
     public private(set) var data: Data = Data()
+    
     static var response: MSResponse { MSResponse() }
     
     
@@ -70,6 +96,16 @@ public class MSResponse {
         return code.description + "data = " +  data.joined()
     }
     
+    public var payload:Data{
+        if data.count > 12{
+            Logger.log("payload = ",data.suffix(from: 12).joined())
+            return Data(data.suffix(from: 12))
+        }
+        else{
+            return Data()
+        }
+    }
+    
     @discardableResult
     func code(_ value: MSCode) -> Self {
         code = value
index 2fdc18d..83c8179 100644 (file)
@@ -15,8 +15,6 @@ public enum MSConnectState: Int {
     case disConnected
 }
 
-
-
 /// 连接状态回调
 public typealias MSConnectStateCallBack = (_ state:MSConnectState) -> Void
 
@@ -61,25 +59,35 @@ public class MSVoiceChat {
     
     /// 开始任务
     public func start(){
-        openWebSocket()
-        setupHeartBeat()
+        MSVoiceChatSdk.shared.ble.startRecord {[weak self] success in
+            if success{
+                self?.openWebSocket()
+                self?.setupHeartBeat()
+            }
+            else{
+                Logger.log("开启任务失败")
+            }
+        }
     }
     
     /// 结束任务
     public func finish(){
         timer?.invalidate()
         socket?.close(10100,reason: "正常结束")
-        taskId = nil;
-        dialogId = "";
-        currentEvent = nil;
+        taskId = nil
+        dialogId = ""
+        currentEvent = nil
+        MSVoiceChatSdk.shared.ble.stopRecord { success in
+            
+        }
     }
     
     /// 开始说话,在发送语音数据前,一定要先调用该方法
-    public func startSpeedch(){
-//        if !MSVoiceChatSdk.shared.auth.authorized {
-//            Logger.log("还未鉴权")
-//            return
-//        }
+    public func startSpeech(){
+        if !MSVoiceChatSdk.shared.ble.auth.authorized {
+            Logger.log("还未鉴权")
+            return
+        }
         let params:[String:Any] =
         [
             "header":[
@@ -96,11 +104,11 @@ public class MSVoiceChat {
     }
     
     /// 结束说话
-    public func endSpeedch(){
-//        if !MSVoiceChatSdk.shared.auth.authorized {
+    public func endSpeech(){
+        if !MSVoiceChatSdk.shared.ble.auth.authorized {
 //            Logger.log("还未鉴权")
-//            return
-//        }
+            return
+        }
         let params:[String:Any] =
         [
             "header":[
@@ -119,10 +127,10 @@ public class MSVoiceChat {
     /// 发送语音数据,format pcm,采样率 16000
     /// - Parameter data: 语音数据
     public func sendVoice(pcmData:Data){
-//        if !MSVoiceChatSdk.shared.auth.authorized {
+        if !MSVoiceChatSdk.shared.ble.auth.authorized {
 //            Logger.log("还未鉴权")
-//            return
-//        }
+            return
+        }
         if currentEvent?.payload?.state == "Listening"{
             Logger.log("send \(pcmData)")
             socket.send(data: pcmData)
@@ -135,10 +143,10 @@ public class MSVoiceChat {
     /// 发送语音数据,format sbc,采样率 16000
     /// - Parameter data: 语音数据
     public func sendVoice(sbcData:Data){
-//        if !MSVoiceChatSdk.shared.auth.authorized {
+        if !MSVoiceChatSdk.shared.ble.auth.authorized {
 //            Logger.log("还未鉴权")
-//            return
-//        }
+            return
+        }
         MSAudioConvert.sbcTopcm(sbcData){[weak self] pcmData in
             Logger.log("send \(pcmData)")
             self?.socket.send(data: pcmData)
@@ -302,7 +310,7 @@ extension MSVoiceChat:WebSocketDelegate{
         }
         
         if model.payload?.state == "Listening"{
-            startSpeedch()
+            startSpeech()
         }
         eventCallBack?(model)
     }
diff --git a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo
deleted file mode 100644 (file)
index 9656474..0000000
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo and /dev/null differ
diff --git a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule b/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule
deleted file mode 100644 (file)
index 31c54f0..0000000
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule and /dev/null differ
diff --git a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory b/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory
deleted file mode 100644 (file)
index 654b06d..0000000
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory and /dev/null differ
diff --git a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 b/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1
deleted file mode 100644 (file)
index 253d882..0000000
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 and /dev/null differ
diff --git a/document/MSVoiceChatSdk/MSVoiceChat iOS SDK接口文档.pdf b/document/MSVoiceChatSdk/MSVoiceChat iOS SDK接口文档.pdf
new file mode 100644 (file)
index 0000000..6db4996
Binary files /dev/null and "b/document/MSVoiceChatSdk/MSVoiceChat iOS SDK\346\216\245\345\217\243\346\226\207\346\241\243.pdf" differ
@@ -18,7 +18,6 @@
                18204BE02C193F9D00F94E69 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 18204BDE2C193F9D00F94E69 /* LaunchScreen.storyboard */; };
                1843A7962C4E060D00FC010F /* LogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1843A7952C4E060D00FC010F /* LogViewController.swift */; };
                184FFC492C218FC4006F664D /* PlayerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 184FFC482C218FC4006F664D /* PlayerManager.swift */; };
-               18B1A3702CE1E12800DD4A7C /* BluetoothManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */; };
                18B1A3732CE1EF4900DD4A7C /* BleChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */; };
                18C42C802C242AAC000D8860 /* liblzma.5.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */; };
                18C42C822C242AD3000D8860 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C812C242AD3000D8860 /* CoreAudio.framework */; };
@@ -27,6 +26,7 @@
                18DB20482C213D730070D571 /* AiMouseAudioRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DB20462C213D730070D571 /* AiMouseAudioRecord.m */; };
                18DB20492C213D730070D571 /* AiMouseRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DB20472C213D730070D571 /* AiMouseRecordManager.m */; };
                18EBBA152CDE1791006F3B80 /* VoiceChatCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18EBBA142CDE1791006F3B80 /* VoiceChatCell.swift */; };
+               18F73FFF2D02F7360000C996 /* BleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18F73FFE2D02F7360000C996 /* BleManager.swift */; };
                F59940004E1C16053FBD42F5 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B555BC40ACD8F31DBCDD1A2 /* Pods_Example.framework */; };
 /* End PBXBuildFile section */
 
@@ -44,7 +44,6 @@
                18204BE12C193F9D00F94E69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
                1843A7952C4E060D00FC010F /* LogViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogViewController.swift; sourceTree = "<group>"; };
                184FFC482C218FC4006F664D /* PlayerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerManager.swift; sourceTree = "<group>"; };
-               18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BluetoothManager.swift; sourceTree = "<group>"; };
                18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BleChatVC.swift; sourceTree = "<group>"; };
                18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.5.tbd; path = usr/lib/liblzma.5.tbd; sourceTree = SDKROOT; };
                18C42C812C242AD3000D8860 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
@@ -56,6 +55,7 @@
                18DB20462C213D730070D571 /* AiMouseAudioRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiMouseAudioRecord.m; sourceTree = "<group>"; };
                18DB20472C213D730070D571 /* AiMouseRecordManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiMouseRecordManager.m; sourceTree = "<group>"; };
                18EBBA142CDE1791006F3B80 /* VoiceChatCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceChatCell.swift; sourceTree = "<group>"; };
+               18F73FFE2D02F7360000C996 /* BleManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleManager.swift; sourceTree = "<group>"; };
                4B555BC40ACD8F31DBCDD1A2 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
                759E170040ACED4895C8A49D /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
                C85BC820E1AA39AC970C9E79 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
                                18DB20412C213D600070D571 /* Record */,
                                18204BD32C193F9A00F94E69 /* AppDelegate.swift */,
                                18204BD52C193F9A00F94E69 /* SceneDelegate.swift */,
+                               18F73FFE2D02F7360000C996 /* BleManager.swift */,
                                1843A7952C4E060D00FC010F /* LogViewController.swift */,
-                               18B1A36F2CE1E12800DD4A7C /* BluetoothManager.swift */,
                                18204BD72C193F9A00F94E69 /* ViewController.swift */,
                                18B1A3722CE1EF4900DD4A7C /* BleChatVC.swift */,
                                18EBBA142CDE1791006F3B80 /* VoiceChatCell.swift */,
                                18EBBA152CDE1791006F3B80 /* VoiceChatCell.swift in Sources */,
                                18068D022CDCC57C006B6EF5 /* PcmPlayer.swift in Sources */,
                                18B1A3732CE1EF4900DD4A7C /* BleChatVC.swift in Sources */,
+                               18F73FFF2D02F7360000C996 /* BleManager.swift in Sources */,
                                18204BD42C193F9A00F94E69 /* AppDelegate.swift in Sources */,
-                               18B1A3702CE1E12800DD4A7C /* BluetoothManager.swift in Sources */,
                                184FFC492C218FC4006F664D /* PlayerManager.swift in Sources */,
                                18DB20492C213D730070D571 /* AiMouseRecordManager.m in Sources */,
                                18204BD62C193F9A00F94E69 /* SceneDelegate.swift in Sources */,
@@ -61,13 +61,10 @@ class BleChatVC: UIViewController{
     }
 
     func setupVoiceChat(){
-        //开始任务
-        MSVoiceChatSdk.shared.voiceChat.start()
-        //鉴权回调
-        MSVoiceChatSdk.shared.ble.authCallBack = {[unowned self] in
+        MSVoiceChatSdk.shared.ble.auth.authCallBack = {[unowned self] in
             self.view.makeToast("鉴权成功!" )
         }
-        //事件回调
+        MSVoiceChatSdk.shared.voiceChat.start()
         MSVoiceChatSdk.shared.voiceChat.eventCallBack = { [unowned self] model in
 
             if model.event == "RespondingEnded"{
@@ -101,19 +98,17 @@ class BleChatVC: UIViewController{
                 tableView.reloadData()
                 tableView.scrollToRow(at: IndexPath(row: dataArray.count - 1, section: 0), at: .none, animated: true)
             }
-        }
-        MSVoiceChatSdk.shared.voiceChat.replyCallBack = {[unowned self] data in
-            self.voiceData.append(data)
+            MSVoiceChatSdk.shared.voiceChat.replyCallBack = {[unowned self] data in
+                self.voiceData.append(data)
+            }
         }
     }
     
     @objc func requestToSpeak(){
-        PlayerManager.shared.stop()
         MSVoiceChatSdk.shared.voiceChat.requestToSpeak()
     }
     func saveToFile(){
         let mp3Path = NSHomeDirectory() + "/Documents/1.mp3"
-        
         let url = URL(fileURLWithPath: mp3Path)
         do {
             try self.voiceData.write(to: url, options: .atomic)
@@ -130,7 +125,7 @@ class BleChatVC: UIViewController{
         }
     }
     @objc func endSpeakAction(){
-        MSVoiceChatSdk.shared.voiceChat.endSpeedch()
+        MSVoiceChatSdk.shared.voiceChat.endSpeech()
     }
 }
 extension BleChatVC:UITableViewDelegate,UITableViewDataSource {
@@ -9,20 +9,18 @@ import Foundation
 import CoreBluetooth
 import MSVoiceChatSdk
 
-/// 主服务
-let kserviceUUID: String = "FFF1"
-let kVoiceUUID: String = "0783B03E-8535-B5A0-7140-A304D2194CB8"
-let kDeviceInfoUUID: String = "0783B63E-8535-B5A0-7140-A304D2495CB6"
+let kserviceUUID: String = "FE01"
+let kWriteUUID: String = "0xFF01"
+let kNotifyUUID: String = "FF02"
 
 public typealias IBDiscoverHandler = (_ peripheral: CBPeripheral) -> Void
 public typealias IBDidConectedHandler = (_ peripheral: CBPeripheral) -> Void
 public typealias IBDisConectedHandler = (_ peripheral: CBPeripheral) -> Void
 
-class BluetoothManager: NSObject {
-    static let shared = BluetoothManager()
+class BleManager: NSObject {
+    static let shared = BleManager()
 
-    /// 2AE6
-    private var writeFileCharacteristic: CBCharacteristic!
+    private var writeCharacteristic: CBCharacteristic?
     /// 中央管理类,管理蓝牙的扫描连接
     var centralManager: CBCentralManager!
     /// 当前连接设备
@@ -34,32 +32,21 @@ class BluetoothManager: NSObject {
     var didConnectedCallBack:IBDidConectedHandler?
     /// 设备断开连接
     var disConnectedCallBack:IBDisConectedHandler?
+    /// 收到数据
+    var didReceiveDataCallback: ((Data) -> Void)?
     
     private override init() {
         super.init()
         centralManager = CBCentralManager(delegate: self, queue: nil)
-        setupFileSdk()
-    }
-
-    func setupFileSdk(){
-        //初始化
-        MSVoiceChatSdk.shared.initSDK()
-        //isDebug为true则打印日志,false则不打印日志
-        MSVoiceChatSdk.shared.isDebug = true
-        //设置sdk数据回调
-        MSVoiceChatSdk.shared.ble.sdkToDeviceCallback = {[unowned self] data in
-            //这里将回调的数据发给蓝牙设备
-            self.send(data)
-        }
     }
 }
 
-extension BluetoothManager{
+extension BleManager{
     /// 开始扫描
     func startScan() {
         print("开始扫描...")
         centralManager.scanForPeripherals(withServices: nil)
-//        centralManager.scanForPeripherals(withServices: [CBUUID(string: kserviceUUID)], options: nil)
+        //        centralManager.scanForPeripherals(withServices: [CBUUID(string: kserviceUUID)], options: nil)
         if let peripheral = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: kserviceUUID)]).first{
             discoverCallBack?(peripheral)
         }
@@ -88,11 +75,31 @@ extension BluetoothManager{
             print("手机未连上蓝牙设备!")
             return
         }
-        peripheral.writeValue(data, for: writeFileCharacteristic, type: .withoutResponse)
+        guard let char = writeCharacteristic else{
+            print("未找到对应的写入特征")
+//            var responseData = Data()
+//            if data[12] == 0x00{
+//                if data[13] == 0x02{
+//                    responseData = MSTool.hexStringToData("0000000000000000000000000002303045303831444335333141")
+//                }
+//                else if data[13] == 0x03{
+//                    responseData = MSTool.hexStringToData("00000000000000000000000000034b4b78414b6f3271443270584f5a5a4343337a")
+//                }
+//                else if data[13] == 0x04{
+//                    responseData = MSTool.hexStringToData("000000000000000000000000000459716747474b43786663635651476a555972705151644573744141766f6a7a6e")
+//                }
+//                else if data[13] == 0x05{
+//                    responseData = MSTool.hexStringToData("0000000000000000000000000005646b7369656b3533396473646b776469")
+//                }
+//            }
+//            MSVoiceChatSdk.shared.ble.sendToSdk(responseData)
+            return
+        }
+        peripheral.writeValue(data, for: char, type: .withoutResponse)
     }
 }
 
-extension BluetoothManager: CBCentralManagerDelegate {
+extension BleManager: CBCentralManagerDelegate {
     func centralManagerDidUpdateState(_ central: CBCentralManager) {
         switch central.state {
         case .unknown:
@@ -112,9 +119,8 @@ extension BluetoothManager: CBCentralManagerDelegate {
             break
         }
     }
-
+    
     func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
-//        IBManager.discoverHandler?(device)
         discoverCallBack?(peripheral)
     }
     
@@ -122,7 +128,6 @@ extension BluetoothManager: CBCentralManagerDelegate {
         currentPeripheral = peripheral
         peripheral.delegate = self
         peripheral.discoverServices([CBUUID(string: kserviceUUID)])
-        print("连接成功", peripheral.name ?? "")
         didConnectedCallBack?(peripheral)
     }
     
@@ -132,52 +137,39 @@ extension BluetoothManager: CBCentralManagerDelegate {
     }
     
     func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
-        print("已断开连接")
         disConnectedCallBack?(peripheral)
     }
 }
 
-extension BluetoothManager: CBPeripheralDelegate {
+extension BleManager: CBPeripheralDelegate {
     func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
-       peripheral
-            .services?
-            .forEach {
-                peripheral.discoverCharacteristics(nil, for: $0)
-            }
+        peripheral.services?.forEach {
+            peripheral.discoverCharacteristics(nil, for: $0)
+        }
     }
     func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
-        service
-            .characteristics?
-            .forEach {
-                if $0.uuid.uuidString == kVoiceUUID {
-                    peripheral.setNotifyValue(true, for: $0)
-                    return
-                }
-                if $0.uuid.uuidString == kDeviceInfoUUID {
-                    writeFileCharacteristic = $0
-                    peripheral.setNotifyValue(true, for: $0)
-                    return
-                }
+        service.characteristics?.forEach {
+            if $0.uuid.uuidString == kNotifyUUID {
+                peripheral.setNotifyValue(true, for: $0)
+                return
+            }
+            if $0.uuid.uuidString == kWriteUUID {
+                writeCharacteristic = $0
+                return
             }
+        }
     }
     func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: Error?) {
         peripheral.readValue(for: characteristic)
     }
     
     func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
-        // 收到蓝牙设备的数据,转发给sdk处理
-        if characteristic.uuid.uuidString == kVoiceUUID {
-            //语音数据
-            MSVoiceChatSdk.shared.ble.sendToSdk(voiceData: characteristic.value)
-        }
-        else if characteristic.uuid.uuidString == kDeviceInfoUUID{
-            //设备信息数据
-            MSVoiceChatSdk.shared.ble.sendToSdk(infoData: characteristic.value)
+        if let data = characteristic.value{
+            didReceiveDataCallback?(data)
         }
     }
     
     func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
-        // sdk将回调的数据传给ble设备后,告知sdk写入的情况
-//        MSVoiceChatSdk.shared.ble.didWriteToDevice(characteristic: characteristic, error: error)
+
     }
 }
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/PhoneChatVC.swift b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/Example/PhoneChatVC.swift
new file mode 100644 (file)
index 0000000..899dfa7
--- /dev/null
@@ -0,0 +1,160 @@
+//
+//  VoiceChatViewController.swift
+//  Example
+//
+//  Created by incar on 2024/7/29.
+//
+
+import UIKit
+import MSVoiceChatSdk
+import SnapKit
+import Toast_Swift
+
+
+
+class PhoneChatVC: UIViewController{
+    let recordMamager =  AiMouseRecordManager()
+    var voiceData:NSMutableData = NSMutableData()
+    
+    let tableView = UITableView(frame:.zero, style: .plain)
+    let stateLabel = UIButton(type: .custom)
+    var dataArray = [CellModel]()
+    
+    
+    deinit {
+        print("销毁")
+        PlayerManager.shared.stop()
+        recordMamager.stop()
+        MSVoiceChatSdk.shared.voiceChat.finish()
+        
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do any additional setup after loading the view.
+        
+        setupViews()
+        setupRecord()
+        setupVoiceChat()
+    }
+    
+    func setupViews(){
+        self.title = "phone chat"
+        self.view.backgroundColor = .white
+        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "结束说话", style: .done, target: self, action: #selector(endSpeakAction))
+        
+        tableView.delegate = self
+        tableView.dataSource = self
+        tableView.estimatedRowHeight = 60
+        tableView.register(VoiceChatCell.self, forCellReuseIdentifier: "VoiceChatCell")
+        view.addSubview(tableView)
+        tableView.snp.makeConstraints { make in
+            make.top.equalToSuperview().inset(80)
+            make.left.right.equalToSuperview()
+            make.bottom.equalToSuperview().inset(80)
+        }
+        
+        stateLabel.backgroundColor = .blue
+        stateLabel.setTitle("", for: .normal)
+        stateLabel.addTarget(self, action: #selector(requestToSpeak), for: .touchUpInside)
+        view.addSubview(stateLabel)
+        stateLabel.snp.makeConstraints { make in
+            make.height.equalTo(80)
+            make.left.right.equalToSuperview()
+            make.bottom.equalToSuperview()
+        }
+    }
+    func setupRecord(){
+        recordMamager.recordDataCallBack = { data in
+            MSVoiceChatSdk.shared.voiceChat.sendVoice(pcmData: data)
+        }
+        recordMamager.start()
+    }
+    func setupVoiceChat(){
+        MSVoiceChatSdk.shared.voiceChat.start()
+        MSVoiceChatSdk.shared.voiceChat.eventCallBack = { [unowned self] model in
+            if model.event == "RespondingEnded"{
+                self.saveToFile()
+            }
+            if model.payload?.state == "Listening"{
+                self.stateLabel.setTitle("正在聆听...", for: .normal)
+            }
+            if model.payload?.state == "Thinking"{
+                self.stateLabel.setTitle("正在思考...", for: .normal)
+            }
+            if model.payload?.state == "Responding"{
+                self.stateLabel.setTitle("正在回复...", for: .normal)
+                self.voiceData = NSMutableData()
+            }
+            
+            if  model.event == "SpeechContent",let payload = model.payload,let text = payload.text,let isFinished = payload.finished,isFinished == true{
+                let cellModel = CellModel()
+                cellModel.text = text
+                cellModel.isSend = true
+                dataArray.append(cellModel)
+                tableView.reloadData()
+                tableView.scrollToRow(at: IndexPath(row: dataArray.count - 1, section: 0), at: .none, animated: true)
+            }
+            if  model.event == "RespondingContent",let payload = model.payload,let text = payload.text,let isFinished = payload.finished,isFinished == true{
+                let cellModel = CellModel()
+                cellModel.text = text
+                cellModel.isSend = false
+                dataArray.append(cellModel)
+                tableView.reloadData()
+                tableView.scrollToRow(at: IndexPath(row: dataArray.count - 1, section: 0), at: .none, animated: true)
+            }
+            MSVoiceChatSdk.shared.voiceChat.replyCallBack = {[unowned self] data in
+                self.voiceData.append(data)
+            }
+        }
+    }
+    
+    @objc func requestToSpeak(){
+        PlayerManager.shared.stop()
+        MSVoiceChatSdk.shared.voiceChat.requestToSpeak()
+    }
+    @objc func endSpeakAction(){
+        recordMamager.stop()
+        MSVoiceChatSdk.shared.voiceChat.endSpeech()
+    }
+    func saveToFile(){
+        let mp3Path = NSHomeDirectory() + "/Documents/\(Int(Date().timeIntervalSince1970)).mp3"
+        
+        let url = URL(fileURLWithPath: mp3Path)
+        do {
+            try self.voiceData.write(to: url, options: .atomic)
+            print(mp3Path)
+            self.stateLabel.setTitle("正在播放...", for: .normal)
+            MSVoiceChatSdk.shared.voiceChat.startPlay()
+            PlayerManager.shared.play(filePath: mp3Path) {[unowned self] success in
+                self.stateLabel.setTitle("结束播放...", for: .normal)
+                MSVoiceChatSdk.shared.voiceChat.endPlay()
+                recordMamager.start()
+            }
+        }
+        catch{
+            print(error)
+        }
+    }
+}
+extension PhoneChatVC:UITableViewDelegate,UITableViewDataSource {
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return dataArray.count
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        var cell = tableView.dequeueReusableCell(withIdentifier: "VoiceChatCell", for: indexPath) as? VoiceChatCell
+        
+        if cell == nil{
+            cell = VoiceChatCell(style: .default, reuseIdentifier: "VoiceChatCell")
+        }
+        
+        cell!.model = dataArray[indexPath.row]
+
+        
+        return cell!
+    }
+    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+
+    }
+}
@@ -9,15 +9,15 @@ import Toast_Swift
 import MSVoiceChatSdk
 
 class ViewController: UIViewController {
-    
+
     let tableView = UITableView(frame:.zero, style: .plain)
     var dataArray = [CBPeripheral]()
         
     override func viewDidLoad() {
         super.viewDidLoad()
-        title = "扫描"
         setupViews()
         setupBle()
+        setupVoiceChatSdk()
     }
     
     override func viewDidAppear(_ animated: Bool) {
@@ -27,7 +27,7 @@ class ViewController: UIViewController {
 
     override func viewDidDisappear(_ animated: Bool) {
         super.viewDidDisappear(animated)
-        BluetoothManager.shared.stopScan()
+        BleManager.shared.stopScan()
     }
     
     func setupViews(){
@@ -47,31 +47,51 @@ class ViewController: UIViewController {
         }
     }
     
+    func setupVoiceChatSdk(){
+        //初始化
+        MSVoiceChatSdk.shared.initSDK()
+        //isDebug为true则打印日志,false则不打印日志
+        MSVoiceChatSdk.shared.isDebug = true
+        //设置sdk蓝牙数据回调
+        MSVoiceChatSdk.shared.ble.sdkToDeviceCallback = {data in
+            //这里将回调的数据发给蓝牙设备
+            BleManager.shared.send(data)
+        }
+        //鉴权成功
+        MSVoiceChatSdk.shared.ble.auth.authCallBack = {[unowned self] in
+            self.view.makeToast("鉴权成功")
+            self.navigationController?.pushViewController(BleChatVC(), animated: true)
+        }
+    }
+    
     func setupBle() {
-        BluetoothManager.shared.discoverCallBack = { [unowned self] peripheral in
+        BleManager.shared.discoverCallBack = { [unowned self] peripheral in
             if dataArray.contains(peripheral){
                 return
             }
             if peripheral.name == nil || (peripheral.name!.isEmpty){
                 return
             }
-            print(peripheral.name)
+//            print(peripheral)
             dataArray.append(peripheral)
             tableView.reloadData()
         }
-        BluetoothManager.shared.didConnectedCallBack = {[unowned self] peripheral in
+        BleManager.shared.didConnectedCallBack = {[unowned self] peripheral in
             self.view.hideToastActivity()
-            let vc = BleChatVC()
-            self.navigationController?.pushViewController(vc, animated: true)
+            MSVoiceChatSdk.shared.ble.didConnectBle()
         }
-        BluetoothManager.shared.disConnectedCallBack = { [unowned self] peripheral in
-            print("蓝牙已经断开!!!!!!!!!!!")
+        BleManager.shared.disConnectedCallBack = { [unowned self] peripheral in
             self.view.makeToast("蓝牙已经断开!")
+            MSVoiceChatSdk.shared.ble.didDisconnectBle()
+        }
+        BleManager.shared.didReceiveDataCallback = {data in
+            // 收到蓝牙设备的数据,转发给sdk处理
+            MSVoiceChatSdk.shared.ble.sendToSdk(data)
         }
     }
     
     @objc func scanAction(){
-        BluetoothManager.shared.startScan()
+        BleManager.shared.startScan()
     }
 }
 
@@ -91,8 +111,6 @@ extension ViewController: UITableViewDelegate, UITableViewDataSource {
     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         view.makeToastActivity(.center)
         let device = dataArray[indexPath.row]
-        BluetoothManager.shared.connect(device)
-//            let vc = BleChatVC()
-//        self.navigationController?.pushViewController(vc, animated: true)
+        BleManager.shared.connect(device)
     }
 }
similarity index 97%
rename from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk
rename to document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk
index d91a8c5..43cbb9d 100644 (file)
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/MSVoiceChatSdk differ
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo
new file mode 100644 (file)
index 0000000..62d2693
Binary files /dev/null and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ
           "RawDocComment"
         ]
       },
+      {
+        "kind": "TypeDecl",
+        "name": "MSAuthManager",
+        "printedName": "MSAuthManager",
+        "children": [
+          {
+            "kind": "Var",
+            "name": "authCallBack",
+            "printedName": "authCallBack",
+            "children": [
+              {
+                "kind": "TypeNominal",
+                "name": "Optional",
+                "printedName": "(() -> ())?",
+                "children": [
+                  {
+                    "kind": "TypeFunc",
+                    "name": "Function",
+                    "printedName": "() -> ()",
+                    "children": [
+                      {
+                        "kind": "TypeNominal",
+                        "name": "Void",
+                        "printedName": "()"
+                      },
+                      {
+                        "kind": "TypeNominal",
+                        "name": "Void",
+                        "printedName": "()"
+                      }
+                    ]
+                  }
+                ],
+                "usr": "s:Sq"
+              }
+            ],
+            "declKind": "Var",
+            "usr": "s:14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvp",
+            "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvp",
+            "moduleName": "MSVoiceChatSdk",
+            "declAttributes": [
+              "HasInitialValue",
+              "HasStorage",
+              "AccessControl",
+              "RawDocComment"
+            ],
+            "hasStorage": true,
+            "accessors": [
+              {
+                "kind": "Accessor",
+                "name": "Get",
+                "printedName": "Get()",
+                "children": [
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Optional",
+                    "printedName": "(() -> ())?",
+                    "children": [
+                      {
+                        "kind": "TypeFunc",
+                        "name": "Function",
+                        "printedName": "() -> ()",
+                        "children": [
+                          {
+                            "kind": "TypeNominal",
+                            "name": "Void",
+                            "printedName": "()"
+                          },
+                          {
+                            "kind": "TypeNominal",
+                            "name": "Void",
+                            "printedName": "()"
+                          }
+                        ]
+                      }
+                    ],
+                    "usr": "s:Sq"
+                  }
+                ],
+                "declKind": "Accessor",
+                "usr": "s:14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvg",
+                "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvg",
+                "moduleName": "MSVoiceChatSdk",
+                "implicit": true,
+                "accessorKind": "get"
+              },
+              {
+                "kind": "Accessor",
+                "name": "Set",
+                "printedName": "Set()",
+                "children": [
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Void",
+                    "printedName": "()"
+                  },
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Optional",
+                    "printedName": "(() -> ())?",
+                    "children": [
+                      {
+                        "kind": "TypeFunc",
+                        "name": "Function",
+                        "printedName": "() -> ()",
+                        "children": [
+                          {
+                            "kind": "TypeNominal",
+                            "name": "Void",
+                            "printedName": "()"
+                          },
+                          {
+                            "kind": "TypeNominal",
+                            "name": "Void",
+                            "printedName": "()"
+                          }
+                        ]
+                      }
+                    ],
+                    "usr": "s:Sq"
+                  }
+                ],
+                "declKind": "Accessor",
+                "usr": "s:14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvs",
+                "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvs",
+                "moduleName": "MSVoiceChatSdk",
+                "implicit": true,
+                "accessorKind": "set"
+              },
+              {
+                "kind": "Accessor",
+                "name": "Modify",
+                "printedName": "Modify()",
+                "children": [
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Void",
+                    "printedName": "()"
+                  }
+                ],
+                "declKind": "Accessor",
+                "usr": "s:14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvM",
+                "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC12authCallBackyycSgvM",
+                "moduleName": "MSVoiceChatSdk",
+                "implicit": true,
+                "accessorKind": "_modify"
+              }
+            ]
+          },
+          {
+            "kind": "Var",
+            "name": "authorized",
+            "printedName": "authorized",
+            "children": [
+              {
+                "kind": "TypeNominal",
+                "name": "Bool",
+                "printedName": "Swift.Bool",
+                "usr": "s:Sb"
+              }
+            ],
+            "declKind": "Var",
+            "usr": "s:14MSVoiceChatSdk13MSAuthManagerC10authorizedSbvp",
+            "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC10authorizedSbvp",
+            "moduleName": "MSVoiceChatSdk",
+            "declAttributes": [
+              "HasInitialValue",
+              "HasStorage",
+              "SetterAccess",
+              "AccessControl",
+              "RawDocComment"
+            ],
+            "hasStorage": true,
+            "accessors": [
+              {
+                "kind": "Accessor",
+                "name": "Get",
+                "printedName": "Get()",
+                "children": [
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Bool",
+                    "printedName": "Swift.Bool",
+                    "usr": "s:Sb"
+                  }
+                ],
+                "declKind": "Accessor",
+                "usr": "s:14MSVoiceChatSdk13MSAuthManagerC10authorizedSbvg",
+                "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC10authorizedSbvg",
+                "moduleName": "MSVoiceChatSdk",
+                "implicit": true,
+                "accessorKind": "get"
+              }
+            ]
+          }
+        ],
+        "declKind": "Class",
+        "usr": "s:14MSVoiceChatSdk13MSAuthManagerC",
+        "mangledName": "$s14MSVoiceChatSdk13MSAuthManagerC",
+        "moduleName": "MSVoiceChatSdk",
+        "declAttributes": [
+          "AccessControl"
+        ],
+        "hasMissingDesignatedInitializers": true
+      },
+      {
+        "kind": "Import",
+        "name": "Foundation",
+        "printedName": "Foundation",
+        "declKind": "Import",
+        "moduleName": "MSVoiceChatSdk",
+        "declAttributes": [
+          "RawDocComment"
+        ]
+      },
       {
         "kind": "TypeDecl",
         "name": "MSAudioConvert",
         "children": [
           {
             "kind": "Var",
-            "name": "authCallBack",
-            "printedName": "authCallBack",
+            "name": "auth",
+            "printedName": "auth",
             "children": [
               {
                 "kind": "TypeNominal",
-                "name": "Optional",
-                "printedName": "(() -> ())?",
-                "children": [
-                  {
-                    "kind": "TypeFunc",
-                    "name": "Function",
-                    "printedName": "() -> ()",
-                    "children": [
-                      {
-                        "kind": "TypeNominal",
-                        "name": "Void",
-                        "printedName": "()"
-                      },
-                      {
-                        "kind": "TypeNominal",
-                        "name": "Void",
-                        "printedName": "()"
-                      }
-                    ]
-                  }
-                ],
-                "usr": "s:Sq"
+                "name": "MSAuthManager",
+                "printedName": "MSVoiceChatSdk.MSAuthManager",
+                "usr": "s:14MSVoiceChatSdk13MSAuthManagerC"
               }
             ],
             "declKind": "Var",
-            "usr": "s:14MSVoiceChatSdk5MSBleC12authCallBackyycSgvp",
-            "mangledName": "$s14MSVoiceChatSdk5MSBleC12authCallBackyycSgvp",
+            "usr": "s:14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvp",
+            "mangledName": "$s14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvp",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "HasInitialValue",
                 "children": [
                   {
                     "kind": "TypeNominal",
-                    "name": "Optional",
-                    "printedName": "(() -> ())?",
-                    "children": [
-                      {
-                        "kind": "TypeFunc",
-                        "name": "Function",
-                        "printedName": "() -> ()",
-                        "children": [
-                          {
-                            "kind": "TypeNominal",
-                            "name": "Void",
-                            "printedName": "()"
-                          },
-                          {
-                            "kind": "TypeNominal",
-                            "name": "Void",
-                            "printedName": "()"
-                          }
-                        ]
-                      }
-                    ],
-                    "usr": "s:Sq"
+                    "name": "MSAuthManager",
+                    "printedName": "MSVoiceChatSdk.MSAuthManager",
+                    "usr": "s:14MSVoiceChatSdk13MSAuthManagerC"
                   }
                 ],
                 "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdk5MSBleC12authCallBackyycSgvg",
-                "mangledName": "$s14MSVoiceChatSdk5MSBleC12authCallBackyycSgvg",
+                "usr": "s:14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvg",
+                "mangledName": "$s14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvg",
                 "moduleName": "MSVoiceChatSdk",
                 "implicit": true,
                 "accessorKind": "get"
                   },
                   {
                     "kind": "TypeNominal",
-                    "name": "Optional",
-                    "printedName": "(() -> ())?",
-                    "children": [
-                      {
-                        "kind": "TypeFunc",
-                        "name": "Function",
-                        "printedName": "() -> ()",
-                        "children": [
-                          {
-                            "kind": "TypeNominal",
-                            "name": "Void",
-                            "printedName": "()"
-                          },
-                          {
-                            "kind": "TypeNominal",
-                            "name": "Void",
-                            "printedName": "()"
-                          }
-                        ]
-                      }
-                    ],
-                    "usr": "s:Sq"
+                    "name": "MSAuthManager",
+                    "printedName": "MSVoiceChatSdk.MSAuthManager",
+                    "usr": "s:14MSVoiceChatSdk13MSAuthManagerC"
                   }
                 ],
                 "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdk5MSBleC12authCallBackyycSgvs",
-                "mangledName": "$s14MSVoiceChatSdk5MSBleC12authCallBackyycSgvs",
+                "usr": "s:14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvs",
+                "mangledName": "$s14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvs",
                 "moduleName": "MSVoiceChatSdk",
                 "implicit": true,
                 "accessorKind": "set"
                   }
                 ],
                 "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdk5MSBleC12authCallBackyycSgvM",
-                "mangledName": "$s14MSVoiceChatSdk5MSBleC12authCallBackyycSgvM",
+                "usr": "s:14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvM",
+                "mangledName": "$s14MSVoiceChatSdk5MSBleC4authAA13MSAuthManagerCvM",
                 "moduleName": "MSVoiceChatSdk",
                 "implicit": true,
                 "accessorKind": "_modify"
             ]
           },
           {
-            "kind": "Var",
-            "name": "didAuth",
-            "printedName": "didAuth",
+            "kind": "Function",
+            "name": "didConnectBle",
+            "printedName": "didConnectBle()",
             "children": [
               {
                 "kind": "TypeNominal",
-                "name": "Bool",
-                "printedName": "Swift.Bool",
-                "usr": "s:Sb"
+                "name": "Void",
+                "printedName": "()"
               }
             ],
-            "declKind": "Var",
-            "usr": "s:14MSVoiceChatSdk5MSBleC7didAuthSbvp",
-            "mangledName": "$s14MSVoiceChatSdk5MSBleC7didAuthSbvp",
+            "declKind": "Func",
+            "usr": "s:14MSVoiceChatSdk5MSBleC13didConnectBleyyF",
+            "mangledName": "$s14MSVoiceChatSdk5MSBleC13didConnectBleyyF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
-              "AccessControl"
+              "AccessControl",
+              "RawDocComment"
             ],
-            "accessors": [
+            "funcSelfKind": "NonMutating"
+          },
+          {
+            "kind": "Function",
+            "name": "didDisconnectBle",
+            "printedName": "didDisconnectBle()",
+            "children": [
               {
-                "kind": "Accessor",
-                "name": "Get",
-                "printedName": "Get()",
-                "children": [
-                  {
-                    "kind": "TypeNominal",
-                    "name": "Bool",
-                    "printedName": "Swift.Bool",
-                    "usr": "s:Sb"
-                  }
-                ],
-                "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdk5MSBleC7didAuthSbvg",
-                "mangledName": "$s14MSVoiceChatSdk5MSBleC7didAuthSbvg",
-                "moduleName": "MSVoiceChatSdk",
-                "accessorKind": "get"
+                "kind": "TypeNominal",
+                "name": "Void",
+                "printedName": "()"
               }
-            ]
+            ],
+            "declKind": "Func",
+            "usr": "s:14MSVoiceChatSdk5MSBleC16didDisconnectBleyyF",
+            "mangledName": "$s14MSVoiceChatSdk5MSBleC16didDisconnectBleyyF",
+            "moduleName": "MSVoiceChatSdk",
+            "declAttributes": [
+              "AccessControl",
+              "RawDocComment"
+            ],
+            "funcSelfKind": "NonMutating"
           },
           {
             "kind": "Var",
           {
             "kind": "Function",
             "name": "sendToSdk",
-            "printedName": "sendToSdk(voiceData:)",
+            "printedName": "sendToSdk(_:)",
             "children": [
               {
                 "kind": "TypeNominal",
               }
             ],
             "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk5MSBleC06sendToC09voiceDatay10Foundation0H0VSg_tF",
-            "mangledName": "$s14MSVoiceChatSdk5MSBleC06sendToC09voiceDatay10Foundation0H0VSg_tF",
+            "usr": "s:14MSVoiceChatSdk5MSBleC06sendToC0yy10Foundation4DataVSgF",
+            "mangledName": "$s14MSVoiceChatSdk5MSBleC06sendToC0yy10Foundation4DataVSgF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "AccessControl",
               "RawDocComment"
             ],
             "funcSelfKind": "NonMutating"
-          },
-          {
-            "kind": "Function",
-            "name": "sendToSdk",
-            "printedName": "sendToSdk(infoData:)",
-            "children": [
-              {
-                "kind": "TypeNominal",
-                "name": "Void",
-                "printedName": "()"
-              },
-              {
-                "kind": "TypeNominal",
-                "name": "Optional",
-                "printedName": "Foundation.Data?",
-                "children": [
-                  {
-                    "kind": "TypeNominal",
-                    "name": "Data",
-                    "printedName": "Foundation.Data",
-                    "usr": "s:10Foundation4DataV"
-                  }
-                ],
-                "usr": "s:Sq"
-              }
-            ],
-            "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk5MSBleC06sendToC08infoDatay10Foundation0H0VSg_tF",
-            "mangledName": "$s14MSVoiceChatSdk5MSBleC06sendToC08infoDatay10Foundation0H0VSg_tF",
-            "moduleName": "MSVoiceChatSdk",
-            "declAttributes": [
-              "AccessControl",
-              "RawDocComment"
-            ],
-            "funcSelfKind": "NonMutating"
-          },
-          {
-            "kind": "Function",
-            "name": "startAuth",
-            "printedName": "startAuth()",
-            "children": [
-              {
-                "kind": "TypeNominal",
-                "name": "Void",
-                "printedName": "()"
-              }
-            ],
-            "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk5MSBleC9startAuthyyF",
-            "mangledName": "$s14MSVoiceChatSdk5MSBleC9startAuthyyF",
-            "moduleName": "MSVoiceChatSdk",
-            "declAttributes": [
-              "AccessControl"
-            ],
-            "isFromExtension": true,
-            "funcSelfKind": "NonMutating"
           }
         ],
         "declKind": "Class",
         "mangledName": "$s14MSVoiceChatSdk5MSBleC",
         "moduleName": "MSVoiceChatSdk",
         "declAttributes": [
-          "AccessControl",
-          "RawDocComment"
+          "AccessControl"
         ],
         "hasMissingDesignatedInitializers": true
       },
       },
       {
         "kind": "TypeDecl",
-        "name": "MSAuth",
-        "printedName": "MSAuth",
+        "name": "MSAuthApi",
+        "printedName": "MSAuthApi",
         "children": [
-          {
-            "kind": "Var",
-            "name": "authorized",
-            "printedName": "authorized",
-            "children": [
-              {
-                "kind": "TypeNominal",
-                "name": "Bool",
-                "printedName": "Swift.Bool",
-                "usr": "s:Sb"
-              }
-            ],
-            "declKind": "Var",
-            "usr": "s:14MSVoiceChatSdk6MSAuthC10authorizedSbvp",
-            "mangledName": "$s14MSVoiceChatSdk6MSAuthC10authorizedSbvp",
-            "moduleName": "MSVoiceChatSdk",
-            "declAttributes": [
-              "HasInitialValue",
-              "HasStorage",
-              "SetterAccess",
-              "AccessControl",
-              "RawDocComment"
-            ],
-            "hasStorage": true,
-            "accessors": [
-              {
-                "kind": "Accessor",
-                "name": "Get",
-                "printedName": "Get()",
-                "children": [
-                  {
-                    "kind": "TypeNominal",
-                    "name": "Bool",
-                    "printedName": "Swift.Bool",
-                    "usr": "s:Sb"
-                  }
-                ],
-                "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdk6MSAuthC10authorizedSbvg",
-                "mangledName": "$s14MSVoiceChatSdk6MSAuthC10authorizedSbvg",
-                "moduleName": "MSVoiceChatSdk",
-                "implicit": true,
-                "accessorKind": "get"
-              }
-            ]
-          },
           {
             "kind": "Function",
             "name": "register",
               }
             ],
             "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk6MSAuthC8register9productId0F3Key06deviceG015completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
-            "mangledName": "$s14MSVoiceChatSdk6MSAuthC8register9productId0F3Key06deviceG015completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
+            "usr": "s:14MSVoiceChatSdk9MSAuthApiC8register9productId0G3Key06deviceH015completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
+            "mangledName": "$s14MSVoiceChatSdk9MSAuthApiC8register9productId0G3Key06deviceH015completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "AccessControl",
               }
             ],
             "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk6MSAuthC5login10productKey8deviceId8password15completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
-            "mangledName": "$s14MSVoiceChatSdk6MSAuthC5login10productKey8deviceId8password15completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
+            "usr": "s:14MSVoiceChatSdk9MSAuthApiC5login10productKey8deviceId8password15completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
+            "mangledName": "$s14MSVoiceChatSdk9MSAuthApiC5login10productKey8deviceId8password15completeHandlerySS_S2SySSSg_AA7MSErrorOSgtctF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "AccessControl",
           }
         ],
         "declKind": "Class",
-        "usr": "s:14MSVoiceChatSdk6MSAuthC",
-        "mangledName": "$s14MSVoiceChatSdk6MSAuthC",
+        "usr": "s:14MSVoiceChatSdk9MSAuthApiC",
+        "mangledName": "$s14MSVoiceChatSdk9MSAuthApiC",
         "moduleName": "MSVoiceChatSdk",
         "declAttributes": [
           "AccessControl",
           "RawDocComment"
         ]
       },
+      {
+        "kind": "Import",
+        "name": "CommonCrypto",
+        "printedName": "CommonCrypto",
+        "declKind": "Import",
+        "moduleName": "MSVoiceChatSdk"
+      },
+      {
+        "kind": "TypeDecl",
+        "name": "MSTool",
+        "printedName": "MSTool",
+        "children": [
+          {
+            "kind": "Function",
+            "name": "hexStringToData",
+            "printedName": "hexStringToData(_:)",
+            "children": [
+              {
+                "kind": "TypeNominal",
+                "name": "Data",
+                "printedName": "Foundation.Data",
+                "usr": "s:10Foundation4DataV"
+              },
+              {
+                "kind": "TypeNominal",
+                "name": "String",
+                "printedName": "Swift.String",
+                "usr": "s:SS"
+              }
+            ],
+            "declKind": "Func",
+            "usr": "s:14MSVoiceChatSdk6MSToolC15hexStringToDatay10Foundation0H0VSSFZ",
+            "mangledName": "$s14MSVoiceChatSdk6MSToolC15hexStringToDatay10Foundation0H0VSSFZ",
+            "moduleName": "MSVoiceChatSdk",
+            "static": true,
+            "declAttributes": [
+              "Final",
+              "AccessControl"
+            ],
+            "funcSelfKind": "NonMutating"
+          }
+        ],
+        "declKind": "Class",
+        "usr": "s:14MSVoiceChatSdk6MSToolC",
+        "mangledName": "$s14MSVoiceChatSdk6MSToolC",
+        "moduleName": "MSVoiceChatSdk",
+        "declAttributes": [
+          "AccessControl"
+        ],
+        "hasMissingDesignatedInitializers": true
+      },
       {
         "kind": "Import",
         "name": "Foundation",
               }
             ]
           },
-          {
-            "kind": "Var",
-            "name": "auth",
-            "printedName": "auth",
-            "children": [
-              {
-                "kind": "TypeNominal",
-                "name": "MSAuth",
-                "printedName": "MSVoiceChatSdk.MSAuth",
-                "usr": "s:14MSVoiceChatSdk6MSAuthC"
-              }
-            ],
-            "declKind": "Var",
-            "usr": "s:14MSVoiceChatSdkAAC4authAA6MSAuthCvp",
-            "mangledName": "$s14MSVoiceChatSdkAAC4authAA6MSAuthCvp",
-            "moduleName": "MSVoiceChatSdk",
-            "declAttributes": [
-              "HasInitialValue",
-              "Final",
-              "HasStorage",
-              "AccessControl",
-              "RawDocComment"
-            ],
-            "isLet": true,
-            "hasStorage": true,
-            "accessors": [
-              {
-                "kind": "Accessor",
-                "name": "Get",
-                "printedName": "Get()",
-                "children": [
-                  {
-                    "kind": "TypeNominal",
-                    "name": "MSAuth",
-                    "printedName": "MSVoiceChatSdk.MSAuth",
-                    "usr": "s:14MSVoiceChatSdk6MSAuthC"
-                  }
-                ],
-                "declKind": "Accessor",
-                "usr": "s:14MSVoiceChatSdkAAC4authAA6MSAuthCvg",
-                "mangledName": "$s14MSVoiceChatSdkAAC4authAA6MSAuthCvg",
-                "moduleName": "MSVoiceChatSdk",
-                "implicit": true,
-                "declAttributes": [
-                  "Final"
-                ],
-                "accessorKind": "get"
-              }
-            ]
-          },
           {
             "kind": "Var",
             "name": "ble",
           "RawDocComment"
         ]
       },
+      {
+        "kind": "Import",
+        "name": "Foundation",
+        "printedName": "Foundation",
+        "declKind": "Import",
+        "moduleName": "MSVoiceChatSdk",
+        "declAttributes": [
+          "RawDocComment"
+        ]
+      },
       {
         "kind": "TypeDecl",
         "name": "MSCode",
                 "accessorKind": "get"
               }
             ]
+          },
+          {
+            "kind": "Var",
+            "name": "payload",
+            "printedName": "payload",
+            "children": [
+              {
+                "kind": "TypeNominal",
+                "name": "Data",
+                "printedName": "Foundation.Data",
+                "usr": "s:10Foundation4DataV"
+              }
+            ],
+            "declKind": "Var",
+            "usr": "s:14MSVoiceChatSdk10MSResponseC7payload10Foundation4DataVvp",
+            "mangledName": "$s14MSVoiceChatSdk10MSResponseC7payload10Foundation4DataVvp",
+            "moduleName": "MSVoiceChatSdk",
+            "declAttributes": [
+              "AccessControl"
+            ],
+            "accessors": [
+              {
+                "kind": "Accessor",
+                "name": "Get",
+                "printedName": "Get()",
+                "children": [
+                  {
+                    "kind": "TypeNominal",
+                    "name": "Data",
+                    "printedName": "Foundation.Data",
+                    "usr": "s:10Foundation4DataV"
+                  }
+                ],
+                "declKind": "Accessor",
+                "usr": "s:14MSVoiceChatSdk10MSResponseC7payload10Foundation4DataVvg",
+                "mangledName": "$s14MSVoiceChatSdk10MSResponseC7payload10Foundation4DataVvg",
+                "moduleName": "MSVoiceChatSdk",
+                "accessorKind": "get"
+              }
+            ]
           }
         ],
         "declKind": "Class",
           },
           {
             "kind": "Function",
-            "name": "startSpeedch",
-            "printedName": "startSpeedch()",
+            "name": "startSpeech",
+            "printedName": "startSpeech()",
             "children": [
               {
                 "kind": "TypeNominal",
               }
             ],
             "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk0aB0C12startSpeedchyyF",
-            "mangledName": "$s14MSVoiceChatSdk0aB0C12startSpeedchyyF",
+            "usr": "s:14MSVoiceChatSdk0aB0C11startSpeechyyF",
+            "mangledName": "$s14MSVoiceChatSdk0aB0C11startSpeechyyF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "AccessControl",
           },
           {
             "kind": "Function",
-            "name": "endSpeedch",
-            "printedName": "endSpeedch()",
+            "name": "endSpeech",
+            "printedName": "endSpeech()",
             "children": [
               {
                 "kind": "TypeNominal",
               }
             ],
             "declKind": "Func",
-            "usr": "s:14MSVoiceChatSdk0aB0C10endSpeedchyyF",
-            "mangledName": "$s14MSVoiceChatSdk0aB0C10endSpeedchyyF",
+            "usr": "s:14MSVoiceChatSdk0aB0C9endSpeechyyF",
+            "mangledName": "$s14MSVoiceChatSdk0aB0C9endSpeechyyF",
             "moduleName": "MSVoiceChatSdk",
             "declAttributes": [
               "AccessControl",
       "length": 4,
       "value": "0x80"
     },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "BooleanLiteral",
+      "offset": 269,
+      "length": 5,
+      "value": "false"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 349,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 563,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "BooleanLiteral",
+      "offset": 587,
+      "length": 5,
+      "value": "false"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 784,
+      "length": 29,
+      "value": "\"开始获取设备信息...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 978,
+      "length": 35,
+      "value": "\"获取设备信息失败!!!\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1175,
+      "length": 36,
+      "value": "\"设备信息 = \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1210,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1371,
+      "length": 14,
+      "value": "\"28110687C456\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1417,
+      "length": 22,
+      "value": "\"WTxAKo2qD2pXOZZLW3zz\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1472,
+      "length": 34,
+      "value": "\"YqggeKCxfEOVQGjUYrpQQdEstGpvojzn\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1537,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 1806,
+      "length": 41,
+      "value": "\"************鉴权成功***************\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3565,
+      "length": 20,
+      "value": "\"请求Mac地址...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3606,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3634,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3789,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3811,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3915,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3940,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3970,
+      "length": 20,
+      "value": "\"MAC地址 \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 3989,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4228,
+      "length": 20,
+      "value": "\"请求产品key...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 4269,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 4297,
+      "length": 1,
+      "value": "3"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4452,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4474,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 4578,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4603,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4633,
+      "length": 20,
+      "value": "\"产品key \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4652,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 4890,
+      "length": 23,
+      "value": "\"请求产品密钥...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 4934,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 4962,
+      "length": 1,
+      "value": "4"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5117,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5139,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 5243,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5268,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5298,
+      "length": 23,
+      "value": "\"产品密钥 \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5320,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5561,
+      "length": 23,
+      "value": "\"请求设备密码...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 5605,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 5633,
+      "length": 1,
+      "value": "5"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5788,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5810,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 5914,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5939,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5969,
+      "length": 23,
+      "value": "\"设备密码 \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 5991,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6344,
+      "length": 23,
+      "value": "\"设置设备密码...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 6388,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 6416,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6509,
+      "length": 60,
+      "value": "\"设置设备密码失败,密码转data出错,\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6568,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6776,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6798,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6861,
+      "length": 51,
+      "value": "\"设置设备密码结果 \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 6904,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 6911,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7134,
+      "length": 23,
+      "value": "\"设置品牌名称...\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 7178,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 7206,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7295,
+      "length": 62,
+      "value": "\"设置品牌名称失败,品牌名称转data出错,\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7356,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7564,
+      "length": 23,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7586,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7649,
+      "length": 51,
+      "value": "\"设置品牌名称结果 \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 7692,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "StringLiteral",
+      "offset": 7699,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthManager.swift",
+      "kind": "IntegerLiteral",
+      "offset": 9033,
+      "length": 5,
+      "value": "50021"
+    },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/AudioDecode\/MSAudioConvert.swift",
       "kind": "IntegerLiteral",
       "value": "false"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "BooleanLiteral",
-      "offset": 376,
-      "length": 5,
-      "value": "false"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 208,
+      "length": 1,
+      "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 847,
-      "length": 15,
-      "value": "\"[recv][voice]\""
+      "offset": 422,
+      "length": 17,
+      "value": "\"蓝牙已连接\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "IntegerLiteral",
-      "offset": 1153,
-      "length": 2,
-      "value": "16"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "FloatLiteral",
+      "offset": 499,
+      "length": 3,
+      "value": "2.0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 1484,
-      "length": 14,
-      "value": "\"[recv][info]\""
+      "offset": 672,
+      "length": 17,
+      "value": "\"蓝牙已断开\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 1548,
-      "length": 15,
-      "value": "\"[recv][info] \""
+      "offset": 1062,
+      "length": 8,
+      "value": "\"[recv]\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 1578,
+      "offset": 1085,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 1664,
-      "length": 26,
-      "value": "\"7b2272737369223a2230227d\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "BooleanLiteral",
-      "offset": 2595,
-      "length": 4,
-      "value": "true"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1123,
+      "length": 2,
+      "value": "12"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 2763,
-      "length": 35,
-      "value": "\"获取设备信息失败!!!\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "BooleanLiteral",
-      "offset": 2828,
-      "length": 5,
-      "value": "false"
+      "offset": 1150,
+      "length": 32,
+      "value": "\"接收到的蓝牙数据异常\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 2894,
-      "length": 36,
-      "value": "\"设备信息 = \""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1332,
+      "length": 2,
+      "value": "12"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 2929,
-      "length": 2,
-      "value": "\"\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1374,
+      "length": 1,
+      "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 3010,
-      "length": 14,
-      "value": "\"28110687C456\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1408,
+      "length": 1,
+      "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 3061,
-      "length": 22,
-      "value": "\"WTxAKo2qD2pXOZZLW3zz\""
+      "offset": 1434,
+      "length": 29,
+      "value": "\"cmd = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 3121,
-      "length": 34,
-      "value": "\"YqggeKCxfEOVQGjUYrpQQdEstGpvojzn\""
+      "offset": 1447,
+      "length": 4,
+      "value": "\" type = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 3191,
+      "offset": 1462,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "BooleanLiteral",
-      "offset": 3526,
-      "length": 5,
-      "value": "false"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1992,
+      "length": 4,
+      "value": "0x02"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 5238,
-      "length": 5,
-      "value": "\"cmd\""
+      "offset": 2021,
+      "length": 16,
+      "value": "\"AI语音对话\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 5244,
-      "length": 9,
-      "value": "\"get_MAC\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2090,
+      "length": 2,
+      "value": "13"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 5319,
-      "length": 23,
-      "value": "\"\""
+      "offset": 2209,
+      "length": 17,
+      "value": "\"未定义指令\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 5341,
-      "length": 2,
-      "value": "\"\""
+      "offset": 2340,
+      "length": 23,
+      "value": "\"请求开始录音...\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 5428,
-      "length": 5,
-      "value": "\"MAC\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2384,
+      "length": 1,
+      "value": "2"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 5705,
-      "length": 5,
-      "value": "\"cmd\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2412,
+      "length": 1,
+      "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 5711,
-      "length": 16,
-      "value": "\"get_productKey\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2443,
+      "length": 1,
+      "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 5793,
+      "offset": 2671,
       "length": 23,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 5815,
+      "offset": 2693,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 5902,
-      "length": 12,
-      "value": "\"productKey\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6185,
-      "length": 5,
-      "value": "\"cmd\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2772,
+      "length": 1,
+      "value": "2"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6191,
-      "length": 15,
-      "value": "\"get_secretKey\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2782,
+      "length": 4,
+      "value": "0x01"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 6272,
-      "length": 23,
-      "value": "\"\""
+      "offset": 2814,
+      "length": 29,
+      "value": "\"开始录音响应 \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 6294,
+      "offset": 2842,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6381,
-      "length": 11,
-      "value": "\"secretKey\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6666,
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "BooleanLiteral",
+      "offset": 2934,
       "length": 5,
-      "value": "\"cmd\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6672,
-      "length": 18,
-      "value": "\"get_deviceSecret\""
+      "value": "false"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 6756,
+      "offset": 3073,
       "length": 23,
-      "value": "\"\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6778,
-      "length": 2,
-      "value": "\"\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 6865,
-      "length": 14,
-      "value": "\"deviceSecret\""
+      "value": "\"请求停止录音...\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 7234,
-      "length": 29,
-      "value": "\"有命令正在执行中...\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3117,
+      "length": 1,
+      "value": "2"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "FloatLiteral",
-      "offset": 7408,
-      "length": 4,
-      "value": "0.02"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3145,
+      "length": 1,
+      "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "IntegerLiteral",
-      "offset": 7791,
+      "offset": 3178,
       "length": 1,
-      "value": "5"
+      "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "BooleanLiteral",
-      "offset": 7803,
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3268,
       "length": 5,
-      "value": "false"
+      "value": "16000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 8567,
-      "length": 34,
-      "value": "\"[send][info][all][string] \""
+      "offset": 3446,
+      "length": 23,
+      "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 8600,
+      "offset": 3468,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "IntegerLiteral",
-      "offset": 8627,
+      "offset": 3547,
       "length": 1,
-      "value": "1"
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 8708,
-      "length": 7,
-      "value": "\"-$$\u0000\""
+      "value": "2"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "IntegerLiteral",
-      "offset": 8761,
-      "length": 1,
-      "value": "0"
+      "offset": 3557,
+      "length": 4,
+      "value": "0x01"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 8831,
-      "length": 14,
-      "value": "\"\""
+      "offset": 3589,
+      "length": 29,
+      "value": "\"停止录音响应 \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 8842,
-      "length": 1,
-      "value": "\"\u0000\""
+      "offset": 3617,
+      "length": 2,
+      "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 8939,
-      "length": 7,
-      "value": "\"$$-\u0000\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "BooleanLiteral",
+      "offset": 3709,
+      "length": 5,
+      "value": "false"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "StringLiteral",
-      "offset": 9007,
-      "length": 16,
-      "value": "\"-$$\""
+      "offset": 3972,
+      "length": 29,
+      "value": "\"有命令正在执行中...\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "StringLiteral",
-      "offset": 9017,
-      "length": 2,
-      "value": "\"$$-\n\""
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "FloatLiteral",
+      "offset": 4146,
+      "length": 4,
+      "value": "0.02"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "IntegerLiteral",
-      "offset": 9337,
-      "length": 2,
-      "value": "30"
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "StringLiteral",
+      "offset": 4257,
+      "length": 8,
+      "value": "\"[send]\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
       "kind": "IntegerLiteral",
-      "offset": 9366,
+      "offset": 4507,
       "length": 1,
-      "value": "0"
+      "value": "5"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBle.swift",
-      "kind": "IntegerLiteral",
-      "offset": 10687,
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBle.swift",
+      "kind": "BooleanLiteral",
+      "offset": 4519,
       "length": 5,
-      "value": "50021"
+      "value": "false"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/CryptoSwift\/ASN1\/ASN1Decoder.swift",
       "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
-      "kind": "BooleanLiteral",
-      "offset": 432,
-      "length": 5,
-      "value": "false"
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 465,
-      "length": 2,
-      "value": "\"\""
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
-      "kind": "StringLiteral",
-      "offset": 809,
+      "offset": 888,
       "length": 43,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "IntegerLiteral",
-      "offset": 846,
+      "offset": 925,
       "length": 4,
       "value": "1000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 851,
+      "offset": 930,
       "length": 1,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1018,
+      "offset": 1177,
       "length": 5,
       "value": "\"pid\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1047,
+      "offset": 1206,
       "length": 10,
       "value": "\"deviceId\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1117,
+      "offset": 1276,
       "length": 6,
       "value": "\"sign\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1147,
+      "offset": 1306,
       "length": 11,
       "value": "\"timeStamp\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1219,
+      "offset": 1378,
       "length": 17,
       "value": "\"dev\/auth\/active\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1257,
+      "offset": 1416,
       "length": 9,
       "value": "\"text = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1293,
+      "offset": 1452,
       "length": 15,
       "value": "\"productKey = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1340,
+      "offset": 1499,
       "length": 14,
       "value": "\"signValue = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1861,
+      "offset": 2020,
       "length": 9,
       "value": "\"success\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "BooleanLiteral",
-      "offset": 1891,
+      "offset": 2050,
       "length": 4,
       "value": "true"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 1916,
+      "offset": 2075,
       "length": 6,
       "value": "\"data\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2038,
+      "offset": 2197,
       "length": 10,
       "value": "\"deviceId\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2064,
+      "offset": 2223,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2113,
+      "offset": 2272,
       "length": 10,
       "value": "\"password\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2139,
+      "offset": 2298,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2185,
+      "offset": 2344,
       "length": 7,
       "value": "\"nonce\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2208,
+      "offset": 2367,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2556,
+      "offset": 2715,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2670,
+      "offset": 2829,
       "length": 6,
       "value": "\"code\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "IntegerLiteral",
-      "offset": 2689,
+      "offset": 2848,
       "length": 1,
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2696,
+      "offset": 2855,
       "length": 5,
       "value": "\"msg\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 2717,
+      "offset": 2876,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3422,
+      "offset": 3581,
       "length": 10,
       "value": "\"deviceId\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3455,
+      "offset": 3614,
       "length": 10,
       "value": "\"password\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3483,
+      "offset": 3642,
       "length": 7,
       "value": "\"nonce\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3547,
+      "offset": 3706,
       "length": 18,
       "value": "\"dev\/auth\/sign_in\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3586,
+      "offset": 3745,
       "length": 28,
       "value": "\"productKey = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3613,
+      "offset": 3772,
       "length": 3,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3615,
+      "offset": 3774,
       "length": 24,
       "value": "\"deviceId = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3638,
+      "offset": 3797,
       "length": 3,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3640,
+      "offset": 3799,
       "length": 24,
       "value": "\"password = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3663,
+      "offset": 3822,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3694,
+      "offset": 3853,
       "length": 9,
       "value": "\"text = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3733,
+      "offset": 3892,
       "length": 8,
       "value": "\"key = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3766,
+      "offset": 3925,
       "length": 10,
       "value": "\"nonce = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 3803,
+      "offset": 3962,
       "length": 9,
       "value": "\"sign = \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4331,
+      "offset": 4490,
       "length": 9,
       "value": "\"success\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "BooleanLiteral",
-      "offset": 4361,
+      "offset": 4520,
       "length": 4,
       "value": "true"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4386,
+      "offset": 4545,
       "length": 6,
       "value": "\"data\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
-      "kind": "BooleanLiteral",
-      "offset": 4450,
-      "length": 4,
-      "value": "true"
-    },
-    {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4503,
+      "offset": 4663,
       "length": 7,
       "value": "\"token\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4526,
+      "offset": 4686,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4772,
+      "offset": 4848,
       "length": 6,
       "value": "\"code\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "IntegerLiteral",
-      "offset": 4791,
+      "offset": 4867,
       "length": 1,
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4798,
+      "offset": 4874,
       "length": 5,
       "value": "\"msg\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuth.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuth.swift",
       "kind": "StringLiteral",
-      "offset": 4819,
+      "offset": 4895,
       "length": 2,
       "value": "\"\""
     },
       "length": 4,
       "value": "\"\n\""
     },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "StringLiteral",
+      "offset": 270,
+      "length": 2,
+      "value": "\"\""
+    },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "BooleanLiteral",
-      "offset": 1266,
+      "offset": 1444,
       "length": 4,
       "value": "true"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "BooleanLiteral",
-      "offset": 1345,
+      "offset": 1523,
       "length": 5,
       "value": "false"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 1658,
+      "offset": 1836,
       "length": 2,
       "value": "16"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "StringLiteral",
-      "offset": 1696,
+      "offset": 1874,
       "length": 64,
       "value": "\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "StringLiteral",
-      "offset": 1796,
+      "offset": 1974,
       "length": 2,
       "value": "\"\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 1816,
+      "offset": 1994,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 1874,
+      "offset": 2052,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 1894,
+      "offset": 2072,
       "length": 1,
       "value": "1"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 2092,
+      "offset": 2270,
       "length": 2,
       "value": "16"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "StringLiteral",
-      "offset": 2130,
+      "offset": 2308,
       "length": 18,
       "value": "\"abcdef0123456789\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "StringLiteral",
-      "offset": 2184,
+      "offset": 2362,
       "length": 2,
       "value": "\"\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 2204,
+      "offset": 2382,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 2262,
+      "offset": 2440,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
       "kind": "IntegerLiteral",
-      "offset": 2282,
+      "offset": 2460,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2814,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "StringLiteral",
+      "offset": 2971,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2991,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "StringLiteral",
+      "offset": 3060,
+      "length": 6,
+      "value": "\"%02X\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "StringLiteral",
+      "offset": 3260,
+      "length": 3,
+      "value": "\" \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "StringLiteral",
+      "offset": 3271,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3398,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3578,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3588,
+      "length": 1,
+      "value": "3"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3608,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3618,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3638,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3710,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3735,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3807,
+      "length": 1,
+      "value": "2"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3815,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3864,
+      "length": 2,
+      "value": "16"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/MSTool.swift",
+      "kind": "IntegerLiteral",
+      "offset": 3910,
       "length": 1,
       "value": "1"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "Array",
-      "offset": 308,
+      "offset": 317,
       "length": 6,
       "value": "[0, 0]"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 337,
+      "offset": 346,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 341,
+      "offset": 350,
       "length": 1,
       "value": "2"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 404,
+      "offset": 413,
       "length": 3,
       "value": "256"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 434,
+      "offset": 443,
       "length": 1,
       "value": "8"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 564,
+      "offset": 571,
       "length": 6,
       "value": "0xffff"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 601,
+      "offset": 608,
       "length": 6,
       "value": "0xa001"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 671,
+      "offset": 678,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 745,
+      "offset": 752,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 749,
+      "offset": 756,
       "length": 1,
       "value": "8"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 782,
+      "offset": 789,
       "length": 6,
       "value": "0x0001"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 793,
+      "offset": 800,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 836,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 933,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1084,
+      "length": 6,
+      "value": "0x0000"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1113,
+      "length": 6,
+      "value": "0x1021"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1167,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1175,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1200,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 829,
+      "offset": 1204,
+      "length": 1,
+      "value": "7"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1247,
+      "length": 1,
+      "value": "7"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1256,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1262,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1304,
+      "length": 2,
+      "value": "15"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1309,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1315,
       "length": 1,
       "value": "1"
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
       "kind": "IntegerLiteral",
-      "offset": 926,
+      "offset": 1346,
       "length": 1,
       "value": "1"
     },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1480,
+      "length": 6,
+      "value": "0xFFFF"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/Tools\/CRC16.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1506,
+      "length": 6,
+      "value": "0x0000"
+    },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/CryptoSwift\/MD5.swift",
       "kind": "IntegerLiteral",
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 139,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 162,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 186,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 208,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 267,
       "length": 105,
       "value": "\"MSBleInfo(deviceId:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 298,
       "length": 1,
       "value": "\", productId:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 322,
       "length": 1,
       "value": "\", productKey:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 348,
       "length": 1,
       "value": "\", password:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleInfo.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleInfo.swift",
       "kind": "StringLiteral",
       "offset": 370,
       "length": 1,
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuthModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthModel.swift",
       "kind": "StringLiteral",
       "offset": 207,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuthModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthModel.swift",
       "kind": "StringLiteral",
       "offset": 264,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSAuthModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/auth\/MSAuthModel.swift",
       "kind": "StringLiteral",
       "offset": 335,
       "length": 2,
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
       "kind": "StringLiteral",
-      "offset": 824,
-      "length": 29,
-      "value": "\"ws:\/\/118.145.158.207:22080\/\""
+      "offset": 728,
+      "length": 77,
+      "value": "\"?platform=aliyun&is_auth=1&dt=\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
       "kind": "StringLiteral",
-      "offset": 862,
-      "length": 12,
-      "value": "\"?is_auth=0\""
+      "offset": 804,
+      "length": 1,
+      "value": "\"\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
       "kind": "StringLiteral",
-      "offset": 1187,
+      "offset": 1186,
       "length": 25,
       "value": "\"MSVoiceChatSdk version:\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
       "kind": "StringLiteral",
-      "offset": 1376,
-      "length": 7,
-      "value": "\"1.0.0\""
+      "offset": 1375,
+      "length": 28,
+      "value": "\"MSVoiceChatSdk_v2024120401\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
+      "kind": "StringLiteral",
+      "offset": 1572,
+      "length": 38,
+      "value": "\"************\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
+      "kind": "StringLiteral",
+      "offset": 1595,
+      "length": 14,
+      "value": "\"**************\""
     },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatSdk.swift",
       "kind": "BooleanLiteral",
-      "offset": 1439,
+      "offset": 1459,
       "length": 5,
       "value": "false"
     },
       "value": "\" bits)\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 145,
+      "length": 4,
+      "value": "0x00"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 171,
+      "length": 4,
+      "value": "0x00"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "Array",
-      "offset": 231,
+      "offset": 282,
       "length": 2,
       "value": "[]"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 337,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 363,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 403,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 475,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 623,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 648,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 701,
+      "length": 1,
+      "value": "0"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "StringLiteral",
+      "offset": 937,
+      "length": 31,
+      "value": "\"payload = \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "StringLiteral",
+      "offset": 967,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "StringLiteral",
+      "offset": 989,
+      "length": 35,
+      "value": "\"crc = \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "StringLiteral",
+      "offset": 1023,
+      "length": 2,
+      "value": "\"\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 1439,
+      "length": 1,
+      "value": "1"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 605,
+      "offset": 1759,
       "length": 50,
       "value": "\"MSCode(rawValue:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 633,
+      "offset": 1787,
       "length": 1,
       "value": "\", message:\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 653,
+      "offset": 1807,
       "length": 1,
       "value": "\")\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 707,
-      "length": 4,
-      "value": "1000"
+      "offset": 1861,
+      "length": 5,
+      "value": "10000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 752,
-      "length": 4,
-      "value": "1001"
+      "offset": 1907,
+      "length": 5,
+      "value": "10001"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 797,
-      "length": 4,
-      "value": "1004"
+      "offset": 1953,
+      "length": 5,
+      "value": "10004"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 841,
-      "length": 4,
-      "value": "1005"
+      "offset": 1998,
+      "length": 5,
+      "value": "10005"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 939,
+      "offset": 2097,
       "length": 8,
       "value": "\"失败\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 990,
+      "offset": 2148,
       "length": 8,
       "value": "\"成功\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 1041,
+      "offset": 2199,
       "length": 8,
       "value": "\"超时\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 1086,
+      "offset": 2244,
       "length": 14,
       "value": "\"未知错误\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 707,
-      "length": 4,
-      "value": "1000"
+      "offset": 1861,
+      "length": 5,
+      "value": "10000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 752,
-      "length": 4,
-      "value": "1001"
+      "offset": 1907,
+      "length": 5,
+      "value": "10001"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 797,
-      "length": 4,
-      "value": "1004"
+      "offset": 1953,
+      "length": 5,
+      "value": "10004"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 841,
-      "length": 4,
-      "value": "1005"
+      "offset": 1998,
+      "length": 5,
+      "value": "10005"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 707,
-      "length": 4,
-      "value": "1000"
+      "offset": 1861,
+      "length": 5,
+      "value": "10000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 752,
-      "length": 4,
-      "value": "1001"
+      "offset": 1907,
+      "length": 5,
+      "value": "10001"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 797,
-      "length": 4,
-      "value": "1004"
+      "offset": 1953,
+      "length": 5,
+      "value": "10004"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "IntegerLiteral",
-      "offset": 841,
-      "length": 4,
-      "value": "1005"
+      "offset": 1998,
+      "length": 5,
+      "value": "10005"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSBleSender.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
       "kind": "StringLiteral",
-      "offset": 1454,
+      "offset": 2617,
       "length": 9,
       "value": "\"data = \""
     },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2708,
+      "length": 2,
+      "value": "12"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "StringLiteral",
+      "offset": 2735,
+      "length": 12,
+      "value": "\"payload = \""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2766,
+      "length": 2,
+      "value": "12"
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/ble\/MSBleSender.swift",
+      "kind": "IntegerLiteral",
+      "offset": 2822,
+      "length": 2,
+      "value": "12"
+    },
     {
       "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/CryptoSwift\/ZeroPadding.swift",
       "kind": "IntegerLiteral",
       "value": "0x80"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChatModel.swift",
       "kind": "StringLiteral",
       "offset": 438,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChatModel.swift",
       "kind": "StringLiteral",
       "offset": 477,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChatModel.swift",
       "kind": "IntegerLiteral",
       "offset": 535,
       "length": 1,
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChatModel.swift",
       "kind": "StringLiteral",
       "offset": 586,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChatModel.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChatModel.swift",
       "kind": "StringLiteral",
       "offset": 979,
       "length": 2,
       "value": "true"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
       "offset": 220,
       "length": 12,
       "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
       "offset": 220,
       "length": 12,
       "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
       "offset": 220,
       "length": 12,
       "value": "1"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1012,
+      "offset": 1010,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
+      "kind": "StringLiteral",
+      "offset": 1539,
+      "length": 20,
+      "value": "\"开启任务失败\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 1468,
+      "offset": 1693,
       "length": 5,
       "value": "10100"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1482,
+      "offset": 1707,
       "length": 14,
       "value": "\"正常结束\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1539,
+      "offset": 1763,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1876,
+      "offset": 2073,
+      "length": 14,
+      "value": "\"还未鉴权\""
+    },
+    {
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
+      "kind": "StringLiteral",
+      "offset": 2174,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1903,
+      "offset": 2201,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1943,
+      "offset": 2241,
       "length": 7,
       "value": "\"event\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1951,
+      "offset": 2249,
       "length": 12,
       "value": "\"SendSpeech\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 1991,
+      "offset": 2289,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2019,
+      "offset": 2317,
       "length": 11,
       "value": "\"dialog_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2105,
+      "offset": 2403,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2127,
+      "offset": 2425,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2417,
+      "offset": 2712,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2444,
+      "offset": 2739,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2484,
+      "offset": 2779,
       "length": 7,
       "value": "\"event\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2492,
+      "offset": 2787,
       "length": 12,
       "value": "\"StopSpeech\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2532,
+      "offset": 2827,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2560,
+      "offset": 2855,
       "length": 11,
       "value": "\"dialog_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2646,
+      "offset": 2941,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 2668,
+      "offset": 2963,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3032,
+      "offset": 3325,
       "length": 11,
       "value": "\"Listening\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3068,
+      "offset": 3361,
       "length": 17,
       "value": "\"send \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3084,
+      "offset": 3377,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3586,
+      "offset": 3877,
       "length": 17,
       "value": "\"send \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3602,
+      "offset": 3893,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3754,
+      "offset": 4045,
       "length": 20,
       "value": "\"开始请求说话\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3832,
+      "offset": 4123,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3859,
+      "offset": 4150,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3899,
+      "offset": 4190,
       "length": 7,
       "value": "\"event\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3907,
+      "offset": 4198,
       "length": 16,
       "value": "\"RequestToSpeak\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3951,
+      "offset": 4242,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 3979,
+      "offset": 4270,
       "length": 11,
       "value": "\"dialog_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4065,
+      "offset": 4356,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4087,
+      "offset": 4378,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4249,
+      "offset": 4540,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4276,
+      "offset": 4567,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4316,
+      "offset": 4607,
       "length": 7,
       "value": "\"event\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4324,
+      "offset": 4615,
       "length": 24,
       "value": "\"LocalRespondingStarted\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4376,
+      "offset": 4667,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4404,
+      "offset": 4695,
       "length": 11,
       "value": "\"dialog_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4490,
+      "offset": 4781,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4512,
+      "offset": 4803,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4677,
+      "offset": 4968,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4704,
+      "offset": 4995,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4744,
+      "offset": 5035,
       "length": 7,
       "value": "\"event\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4752,
+      "offset": 5043,
       "length": 22,
       "value": "\"LocalRespondingEnded\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4802,
+      "offset": 5093,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4830,
+      "offset": 5121,
       "length": 11,
       "value": "\"dialog_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4916,
+      "offset": 5207,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 4938,
+      "offset": 5229,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 5089,
+      "offset": 5380,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 5175,
+      "offset": 5466,
       "length": 15,
       "value": "\"voice-chat\/ws\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "BooleanLiteral",
-      "offset": 5204,
+      "offset": 5495,
       "length": 5,
       "value": "false"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "BooleanLiteral",
-      "offset": 5457,
+      "offset": 5748,
       "length": 4,
       "value": "true"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 5812,
+      "offset": 6103,
       "length": 43,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 5849,
+      "offset": 6140,
       "length": 4,
       "value": "1000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 5854,
+      "offset": 6145,
       "length": 21,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6646,
+      "offset": 6937,
       "length": 11,
       "value": "\"device_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6658,
+      "offset": 6949,
       "length": 16,
       "value": "\"test_device_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6688,
+      "offset": 6979,
       "length": 12,
       "value": "\"user_agent\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6701,
+      "offset": 6992,
       "length": 8,
       "value": "\"python\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6723,
+      "offset": 7014,
       "length": 11,
       "value": "\"in_format\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6735,
+      "offset": 7026,
       "length": 5,
       "value": "\"pcm\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6754,
+      "offset": 7045,
       "length": 16,
       "value": "\"in_sample_rate\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 6771,
+      "offset": 7062,
       "length": 5,
       "value": "16000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6790,
+      "offset": 7081,
       "length": 12,
       "value": "\"out_format\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6803,
+      "offset": 7094,
       "length": 5,
       "value": "\"mp3\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6822,
+      "offset": 7113,
       "length": 13,
       "value": "\"sample_rate\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 6836,
+      "offset": 7127,
       "length": 5,
       "value": "16000"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6879,
+      "offset": 7170,
       "length": 12,
       "value": "\"space_time\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 6892,
+      "offset": 7183,
       "length": 1,
       "value": "0"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6907,
+      "offset": 7198,
       "length": 8,
       "value": "\"volume\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6916,
+      "offset": 7207,
       "length": 4,
       "value": "\"10\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6934,
+      "offset": 7225,
       "length": 7,
       "value": "\"voice\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 6943,
+      "offset": 7234,
       "length": 14,
       "value": "\"longxiaochun\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7151,
+      "offset": 7442,
       "length": 17,
       "value": "\"voice_detection\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7170,
+      "offset": 7461,
       "length": 7,
       "value": "\"false\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7282,
+      "offset": 7573,
       "length": 8,
       "value": "\"header\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7309,
+      "offset": 7600,
       "length": 10,
       "value": "\"trace_id\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7387,
+      "offset": 7678,
       "length": 9,
       "value": "\"payload\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7456,
+      "offset": 7747,
       "length": 2,
       "value": "\"\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7478,
+      "offset": 7769,
       "length": 6,
       "value": "\"send\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "IntegerLiteral",
-      "offset": 7626,
+      "offset": 7917,
       "length": 5,
       "value": "10100"
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7640,
+      "offset": 7931,
       "length": 14,
       "value": "\"任务失败\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7763,
+      "offset": 8054,
       "length": 27,
       "value": "\"MSVoiceChat webSocketOpen\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 7955,
+      "offset": 8246,
       "length": 28,
       "value": "\"MSVoiceChat webSocketClose\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8125,
+      "offset": 8416,
       "length": 28,
       "value": "\"MSVoiceChat webSocketError\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8239,
+      "offset": 8530,
       "length": 21,
       "value": "\"MSVoiceChat receive\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8422,
+      "offset": 8713,
       "length": 12,
       "value": "\"TaskFailed\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8525,
+      "offset": 8816,
       "length": 9,
       "value": "\"Started\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8654,
+      "offset": 8945,
       "length": 20,
       "value": "\"DialogStateChanged\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8763,
+      "offset": 9054,
       "length": 11,
       "value": "\"Listening\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 8918,
+      "offset": 9208,
       "length": 27,
       "value": "\"MSVoiceChat receive data \""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 9300,
+      "offset": 9590,
       "length": 26,
       "value": "\"MSVoiceChat webSocketEnd\""
     },
     {
-      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/MSVoiceChat.swift",
+      "filePath": "\/Users\/apple\/Desktop\/code\/VoiceChatSdk_iOS\/MixSdk\/MixSdk\/MixSdk\/chat\/MSVoiceChat.swift",
       "kind": "StringLiteral",
-      "offset": 9357,
+      "offset": 9647,
       "length": 2,
       "value": "\"\""
     },
@@ -15,6 +15,13 @@ import _Concurrency
 import _StringProcessing
 import _SwiftConcurrencyShims
 @_exported import __ObjC
+@_hasMissingDesignatedInitializers public class MSAuthManager {
+  public var authCallBack: (() -> Swift.Void)?
+  public var authorized: Swift.Bool {
+    get
+  }
+  @objc deinit
+}
 public typealias MSAudioConvertCallBack = (_ data: Foundation.Data) -> Swift.Void
 @_hasMissingDesignatedInitializers public class MSAudioConvert {
   public static func sbcTopcm(_ data: Foundation.Data) -> Foundation.Data
@@ -26,28 +33,24 @@ public typealias MSAudioConvertCallBack = (_ data: Foundation.Data) -> Swift.Voi
   @objc deinit
 }
 @_hasMissingDesignatedInitializers public class MSBle {
-  public var authCallBack: (() -> Swift.Void)?
-  public var didAuth: Swift.Bool {
-    get
-  }
+  public var auth: MSVoiceChatSdk.MSAuthManager
+  public func didConnectBle()
+  public func didDisconnectBle()
   public var sdkToDeviceCallback: ((_ data: Foundation.Data) -> Swift.Void)?
-  public func sendToSdk(voiceData data: Foundation.Data?)
-  public func sendToSdk(infoData data: Foundation.Data?)
+  public func sendToSdk(_ data: Foundation.Data?)
   @objc deinit
 }
-extension MSVoiceChatSdk.MSBle {
-  public func startAuth()
-}
 public typealias MSRegisterCallBack = (_ password: Swift.String?, _ error: MSVoiceChatSdk.MSError?) -> Swift.Void
 public typealias MSLoginCallBack = (_ token: Swift.String?, _ error: MSVoiceChatSdk.MSError?) -> Swift.Void
-@_hasMissingDesignatedInitializers public class MSAuth {
-  public var authorized: Swift.Bool {
-    get
-  }
+@_hasMissingDesignatedInitializers public class MSAuthApi {
   public func register(productId: Swift.String, productKey: Swift.String, deviceId: Swift.String, completeHandler: @escaping MSVoiceChatSdk.MSRegisterCallBack)
   public func login(productKey: Swift.String, deviceId: Swift.String, password: Swift.String, completeHandler: @escaping MSVoiceChatSdk.MSLoginCallBack)
   @objc deinit
 }
+@_hasMissingDesignatedInitializers public class MSTool {
+  public static func hexStringToData(_ hexStr: Swift.String) -> Foundation.Data
+  @objc deinit
+}
 public enum MSError : Swift.Error {
   case invalidRequest
   case parsingError
@@ -152,7 +155,6 @@ final internal class BlockEncryptor {
     get
     set
   }
-  final public let auth: MSVoiceChatSdk.MSAuth
   final public let ble: MSVoiceChatSdk.MSBle
   final public let voiceChat: MSVoiceChatSdk.MSVoiceChat
   public func cleanLog()
@@ -215,6 +217,9 @@ public enum MSCode : Swift.Int, Swift.CustomStringConvertible {
   public var description: Swift.String {
     get
   }
+  public var payload: Foundation.Data {
+    get
+  }
   @objc deinit
 }
 @_hasMissingDesignatedInitializers public class MSVoiceChatEvent : Swift.Codable {
@@ -258,8 +263,8 @@ public typealias MSVoiceChatEventCallBack = (_ model: MSVoiceChatSdk.MSVoiceChat
   }
   public func start()
   public func finish()
-  public func startSpeedch()
-  public func endSpeedch()
+  public func startSpeech()
+  public func endSpeech()
   public func sendVoice(pcmData: Foundation.Data)
   public func sendVoice(sbcData: Foundation.Data)
   public func requestToSpeak()
similarity index 66%
rename from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc
rename to document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc
index 51ecc24..9a116f3 100644 (file)
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc differ
@@ -15,6 +15,13 @@ import _Concurrency
 import _StringProcessing
 import _SwiftConcurrencyShims
 @_exported import __ObjC
+@_hasMissingDesignatedInitializers public class MSAuthManager {
+  public var authCallBack: (() -> Swift.Void)?
+  public var authorized: Swift.Bool {
+    get
+  }
+  @objc deinit
+}
 public typealias MSAudioConvertCallBack = (_ data: Foundation.Data) -> Swift.Void
 @_hasMissingDesignatedInitializers public class MSAudioConvert {
   public static func sbcTopcm(_ data: Foundation.Data) -> Foundation.Data
@@ -26,28 +33,24 @@ public typealias MSAudioConvertCallBack = (_ data: Foundation.Data) -> Swift.Voi
   @objc deinit
 }
 @_hasMissingDesignatedInitializers public class MSBle {
-  public var authCallBack: (() -> Swift.Void)?
-  public var didAuth: Swift.Bool {
-    get
-  }
+  public var auth: MSVoiceChatSdk.MSAuthManager
+  public func didConnectBle()
+  public func didDisconnectBle()
   public var sdkToDeviceCallback: ((_ data: Foundation.Data) -> Swift.Void)?
-  public func sendToSdk(voiceData data: Foundation.Data?)
-  public func sendToSdk(infoData data: Foundation.Data?)
+  public func sendToSdk(_ data: Foundation.Data?)
   @objc deinit
 }
-extension MSVoiceChatSdk.MSBle {
-  public func startAuth()
-}
 public typealias MSRegisterCallBack = (_ password: Swift.String?, _ error: MSVoiceChatSdk.MSError?) -> Swift.Void
 public typealias MSLoginCallBack = (_ token: Swift.String?, _ error: MSVoiceChatSdk.MSError?) -> Swift.Void
-@_hasMissingDesignatedInitializers public class MSAuth {
-  public var authorized: Swift.Bool {
-    get
-  }
+@_hasMissingDesignatedInitializers public class MSAuthApi {
   public func register(productId: Swift.String, productKey: Swift.String, deviceId: Swift.String, completeHandler: @escaping MSVoiceChatSdk.MSRegisterCallBack)
   public func login(productKey: Swift.String, deviceId: Swift.String, password: Swift.String, completeHandler: @escaping MSVoiceChatSdk.MSLoginCallBack)
   @objc deinit
 }
+@_hasMissingDesignatedInitializers public class MSTool {
+  public static func hexStringToData(_ hexStr: Swift.String) -> Foundation.Data
+  @objc deinit
+}
 public enum MSError : Swift.Error {
   case invalidRequest
   case parsingError
@@ -152,7 +155,6 @@ final internal class BlockEncryptor {
     get
     set
   }
-  final public let auth: MSVoiceChatSdk.MSAuth
   final public let ble: MSVoiceChatSdk.MSBle
   final public let voiceChat: MSVoiceChatSdk.MSVoiceChat
   public func cleanLog()
@@ -215,6 +217,9 @@ public enum MSCode : Swift.Int, Swift.CustomStringConvertible {
   public var description: Swift.String {
     get
   }
+  public var payload: Foundation.Data {
+    get
+  }
   @objc deinit
 }
 @_hasMissingDesignatedInitializers public class MSVoiceChatEvent : Swift.Codable {
@@ -258,8 +263,8 @@ public typealias MSVoiceChatEventCallBack = (_ model: MSVoiceChatSdk.MSVoiceChat
   }
   public func start()
   public func finish()
-  public func startSpeedch()
-  public func endSpeedch()
+  public func startSpeech()
+  public func endSpeech()
   public func sendVoice(pcmData: Foundation.Data)
   public func sendVoice(sbcData: Foundation.Data)
   public func requestToSpeak()
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule
new file mode 100644 (file)
index 0000000..da2782c
Binary files /dev/null and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule differ
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory
new file mode 100644 (file)
index 0000000..6dfd57e
Binary files /dev/null and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeDirectory differ
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1
new file mode 100644 (file)
index 0000000..3ee2c1c
Binary files /dev/null and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeRequirements-1 differ
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo</key>
                <data>
-               ysqCHXDZjdXSQ1+15wrbqdVwhtc=
+               w9JDcO/sGZ8i4YBHjzySjrh0jSg=
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.abi.json</key>
                <data>
-               7u30ZGk/dDmvGgLoQGMyRDIEeg0=
+               zfdcQ47i4erbtkHVh/YKzscKPZQ=
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
                <data>
-               DZiRVsA0Qt7tANIXRTIfg1H8y8c=
+               BmE2SuanvtMCHm+YToxh1i5rNnE=
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc</key>
                <data>
-               0BhI0csBe2wfy1EHX+bB4JiwI+k=
+               gf+WxB6jLNHd92xSGLgPye0ISTU=
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftinterface</key>
                <data>
-               DZiRVsA0Qt7tANIXRTIfg1H8y8c=
+               BmE2SuanvtMCHm+YToxh1i5rNnE=
                </data>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule</key>
                <data>
-               qVyhmiuSzmh+y7uOxagCcV1Zyss=
+               myOUSoKA/l5LXHmUcuV3uaW5k6k=
                </data>
                <key>Modules/module.modulemap</key>
                <data>
                <dict>
                        <key>hash</key>
                        <data>
-                       ysqCHXDZjdXSQ1+15wrbqdVwhtc=
+                       w9JDcO/sGZ8i4YBHjzySjrh0jSg=
                        </data>
                        <key>hash2</key>
                        <data>
-                       1gNUJRQp1HJ0ANyKUD9dViuOrnuaNHdVvePE3LI+IMg=
+                       ZYnjjTKd0l/ZuVK49XnHjB/EHWXl0M5+62/jDwMZSk4=
                        </data>
                </dict>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.abi.json</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       7u30ZGk/dDmvGgLoQGMyRDIEeg0=
+                       zfdcQ47i4erbtkHVh/YKzscKPZQ=
                        </data>
                        <key>hash2</key>
                        <data>
-                       7P9IQuwz5eEMafW2+kpwh8Uozo4DypLMMgF87syfyw4=
+                       reN0SEBSC+8w8fuubm/KEkYVle7lDkrGLnvnbV3jyQw=
                        </data>
                </dict>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       DZiRVsA0Qt7tANIXRTIfg1H8y8c=
+                       BmE2SuanvtMCHm+YToxh1i5rNnE=
                        </data>
                        <key>hash2</key>
                        <data>
-                       5ciE/Dl/EeJXFRJCMN2NaQ1qmh/IUmfRYlGv2lhsMbQ=
+                       T6SBhYhxnosjIi0xcAs820F2AmaXV7BZ9mBQTayPzbM=
                        </data>
                </dict>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftdoc</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       0BhI0csBe2wfy1EHX+bB4JiwI+k=
+                       gf+WxB6jLNHd92xSGLgPye0ISTU=
                        </data>
                        <key>hash2</key>
                        <data>
-                       xXhjRg2Vzt2F0UP4qSb4ty7brLxx1JMYr053/Fwgsws=
+                       sJXIljPxA5Lg6DwiPMnhzgQknGWhb81WaXjEWWSesZM=
                        </data>
                </dict>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftinterface</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       DZiRVsA0Qt7tANIXRTIfg1H8y8c=
+                       BmE2SuanvtMCHm+YToxh1i5rNnE=
                        </data>
                        <key>hash2</key>
                        <data>
-                       5ciE/Dl/EeJXFRJCMN2NaQ1qmh/IUmfRYlGv2lhsMbQ=
+                       T6SBhYhxnosjIi0xcAs820F2AmaXV7BZ9mBQTayPzbM=
                        </data>
                </dict>
                <key>Modules/MSVoiceChatSdk.swiftmodule/arm64-apple-ios.swiftmodule</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       qVyhmiuSzmh+y7uOxagCcV1Zyss=
+                       myOUSoKA/l5LXHmUcuV3uaW5k6k=
                        </data>
                        <key>hash2</key>
                        <data>
-                       dgrmMnByLeTpuwNGgdMrqaVkeHb/ckUr76ymCmuBIjE=
+                       TzrImXZdgam6+sYKrA4nWol7AlU1VtUCqD5oumYAoT0=
                        </data>
                </dict>
                <key>Modules/module.modulemap</key>
similarity index 87%
rename from document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature
rename to document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature
index 0090dcb..ab8c3aa 100644 (file)
Binary files a/document/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature and b/document/MSVoiceChatSdk/MSVoiceChatSdk/Example/MSVoiceChatSdk.framework/_CodeSignature/CodeSignature differ
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk/MixSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/document/MSVoiceChatSdk/MSVoiceChatSdk/MixSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644 (file)
index 0000000..18d9810
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>IDEDidComputeMac32BitWarning</key>
+       <true/>
+</dict>
+</plist>
diff --git a/document/MSVoiceChatSdk/MSVoiceChatSdk接口文档.pdf b/document/MSVoiceChatSdk/MSVoiceChatSdk接口文档.pdf
deleted file mode 100644 (file)
index ae4074d..0000000
Binary files "a/document/MSVoiceChatSdk/MSVoiceChatSdk\346\216\245\345\217\243\346\226\207\346\241\243.pdf" and /dev/null differ
diff --git a/document/MSVoiceChatSdk_iOS_v2024120401.zip b/document/MSVoiceChatSdk_iOS_v2024120401.zip
new file mode 100644 (file)
index 0000000..c174e54
Binary files /dev/null and b/document/MSVoiceChatSdk_iOS_v2024120401.zip differ
diff --git a/document/WX20241206-163809@2x.png b/document/WX20241206-163809@2x.png
new file mode 100644 (file)
index 0000000..031634e
Binary files /dev/null and b/document/WX20241206-163809@2x.png differ