18862B302C806BD900D3564D /* hwcontext.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7BFE2BD8FC4E008558E8 /* hwcontext.h */; };
18862B312C806BD900D3564D /* dovi_meta.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C272BD8FC4E008558E8 /* dovi_meta.h */; };
18862B322C806BD900D3564D /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 184A71012BDA4C040025A332 /* AFHTTPSessionManager.h */; };
- 18862B332C806BD900D3564D /* TlwConnectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF62C7603E800AC5223 /* TlwConnectManager.h */; };
+ 18862B332C806BD900D3564D /* AiConnectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF62C7603E800AC5223 /* AiConnectManager.h */; };
18862B342C806BD900D3564D /* dirac.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C732BD8FC4E008558E8 /* dirac.h */; };
18862B352C806BD900D3564D /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 184A70F52BDA4C040025A332 /* AFNetworkReachabilityManager.h */; };
18862B362C806BD900D3564D /* AiSecretModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 184A71222BDE2DA60025A332 /* AiSecretModel.h */; };
18862B792C806BD900D3564D /* TlwAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */; };
18862B7A2C806BD900D3564D /* time.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7BFF2BD8FC4E008558E8 /* time.h */; };
18862B7B2C806BD900D3564D /* bprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C492BD8FC4E008558E8 /* bprint.h */; };
- 18862B7C2C806BD900D3564D /* AiMouseAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 18FCA3952C7F2AD100C44A37 /* AiMouseAuth.h */; };
18862B7D2C806BD900D3564D /* timecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C262BD8FC4E008558E8 /* timecode.h */; };
18862B7E2C806BD900D3564D /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C1A2BD8FC4E008558E8 /* md5.h */; };
18862B7F2C806BD900D3564D /* avio.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C5B2BD8FC4E008558E8 /* avio.h */; };
18862BA92C806BD900D3564D /* vorbis_parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C762BD8FC4E008558E8 /* vorbis_parser.h */; };
18862BAB2C806BD900D3564D /* avcodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C622BD8FC4E008558E8 /* avcodec.h */; };
18862BAC2C806BD900D3564D /* pixdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C0C2BD8FC4E008558E8 /* pixdesc.h */; };
- 18862BAE2C806BD900D3564D /* AiMouseAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 18FCA3962C7F2AD100C44A37 /* AiMouseAuth.m */; };
18862BAF2C806BD900D3564D /* TimerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18862A202C8064E300D3564D /* TimerManager.m */; };
18862BB02C806BD900D3564D /* HidManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18862A192C8064E300D3564D /* HidManager.m */; };
18862BB22C806BD900D3564D /* AiMouseTools2.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B4F2BD7BD81008558E8 /* AiMouseTools2.m */; };
18862BC42C806BD900D3564D /* TlwMouseSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */; };
18862BC52C806BD900D3564D /* BleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18862A1E2C8064E300D3564D /* BleManager.m */; };
18862BC62C806BD900D3564D /* AiMouseConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B492BD7BD80008558E8 /* AiMouseConfig.m */; };
- 18862BC72C806BD900D3564D /* TlwConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */; };
+ 18862BC72C806BD900D3564D /* AiConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* AiConnectManager.m */; };
18862BC82C806BD900D3564D /* AiAliAuthManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 181CE5C02C6EED9900EF8D07 /* AiAliAuthManager.m */; };
18862BC92C806BD900D3564D /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 184A70FF2BDA4C040025A332 /* AFSecurityPolicy.m */; };
18862BCA2C806BD900D3564D /* DeviceManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 18862A1D2C8064E300D3564D /* DeviceManger.m */; };
18EF7AF92C7603E800AC5223 /* adpcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEA2C7603E800AC5223 /* adpcm.h */; };
18EF7AFA2C7603E800AC5223 /* TlwMouseSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */; };
18EF7AFB2C7603E800AC5223 /* TlwTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEC2C7603E800AC5223 /* TlwTools.m */; };
- 18EF7AFC2C7603E800AC5223 /* TlwConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */; };
+ 18EF7AFC2C7603E800AC5223 /* AiConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* AiConnectManager.m */; };
18EF7AFD2C7603E800AC5223 /* TlwAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */; };
18EF7B012C7603E800AC5223 /* adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF22C7603E800AC5223 /* adpcm.c */; };
18EF7B022C7603E800AC5223 /* TlwTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF32C7603E800AC5223 /* TlwTools.h */; };
18EF7B032C7603E800AC5223 /* TlwMouseSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF42C7603E800AC5223 /* TlwMouseSdk.h */; settings = {ATTRIBUTES = (Public, ); }; };
18EF7B042C7603E800AC5223 /* TlwAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */; };
- 18EF7B052C7603E800AC5223 /* TlwConnectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF62C7603E800AC5223 /* TlwConnectManager.h */; };
- 18FCA3972C7F2AD100C44A37 /* AiMouseAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 18FCA3952C7F2AD100C44A37 /* AiMouseAuth.h */; };
- 18FCA3982C7F2AD100C44A37 /* AiMouseAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 18FCA3962C7F2AD100C44A37 /* AiMouseAuth.m */; };
+ 18EF7B052C7603E800AC5223 /* AiConnectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF62C7603E800AC5223 /* AiConnectManager.h */; };
3FCF534F2D1A5C97007EC52F /* LogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF534E2D1A5C97007EC52F /* LogManager.m */; };
3FCF53502D1A5C97007EC52F /* LogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF534D2D1A5C97007EC52F /* LogManager.h */; };
3FCF53512D1A5C97007EC52F /* LogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF534D2D1A5C97007EC52F /* LogManager.h */; };
3FCF53522D1A5C97007EC52F /* LogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF534E2D1A5C97007EC52F /* LogManager.m */; };
- 3FCF53552D1A8DBA007EC52F /* AiMouseSdk1.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF53542D1A8DBA007EC52F /* AiMouseSdk1.m */; };
- 3FCF53562D1A8DBA007EC52F /* AiMouseSdk1.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF53532D1A8DBA007EC52F /* AiMouseSdk1.h */; };
- 3FCF53572D1A8DBA007EC52F /* AiMouseSdk1.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF53532D1A8DBA007EC52F /* AiMouseSdk1.h */; };
- 3FCF53582D1A8DBA007EC52F /* AiMouseSdk1.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF53542D1A8DBA007EC52F /* AiMouseSdk1.m */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
18EF7AEA2C7603E800AC5223 /* adpcm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adpcm.h; sourceTree = "<group>"; };
18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwMouseSdk.m; sourceTree = "<group>"; };
18EF7AEC2C7603E800AC5223 /* TlwTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwTools.m; sourceTree = "<group>"; };
- 18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwConnectManager.m; sourceTree = "<group>"; };
+ 18EF7AED2C7603E800AC5223 /* AiConnectManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiConnectManager.m; sourceTree = "<group>"; };
18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwAudioManager.h; sourceTree = "<group>"; };
18EF7AF22C7603E800AC5223 /* adpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adpcm.c; sourceTree = "<group>"; };
18EF7AF32C7603E800AC5223 /* TlwTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwTools.h; sourceTree = "<group>"; };
18EF7AF42C7603E800AC5223 /* TlwMouseSdk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwMouseSdk.h; sourceTree = "<group>"; };
18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwAudioManager.m; sourceTree = "<group>"; };
- 18EF7AF62C7603E800AC5223 /* TlwConnectManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwConnectManager.h; sourceTree = "<group>"; };
- 18FCA3952C7F2AD100C44A37 /* AiMouseAuth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AiMouseAuth.h; sourceTree = "<group>"; };
- 18FCA3962C7F2AD100C44A37 /* AiMouseAuth.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AiMouseAuth.m; sourceTree = "<group>"; };
- 3FCF534C2D1A4E38007EC52F /* libAiMouseSdk copy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libAiMouseSdk copy.a"; path = "/Users/yaozuopan/Documents/code/MouseSdk-MacOS/MouseSdk/AiMouseSdk/build/Debug/libAiMouseSdk copy.a"; sourceTree = "<absolute>"; };
+ 18EF7AF62C7603E800AC5223 /* AiConnectManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiConnectManager.h; sourceTree = "<group>"; };
+ 3F5CE3E62D1E7BCA00A5628A /* libAiMouseSdk copy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libAiMouseSdk copy.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3FCF534D2D1A5C97007EC52F /* LogManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogManager.h; sourceTree = "<group>"; };
3FCF534E2D1A5C97007EC52F /* LogManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LogManager.m; sourceTree = "<group>"; };
- 3FCF53532D1A8DBA007EC52F /* AiMouseSdk1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AiMouseSdk1.h; sourceTree = "<group>"; };
- 3FCF53542D1A8DBA007EC52F /* AiMouseSdk1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AiMouseSdk1.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
180E7AA82BD7BB12008558E8 /* AiMouseSdk */,
180E7AA72BD7BB12008558E8 /* Products */,
180E7D092BD8FEB2008558E8 /* Frameworks */,
+ 3F5CE3E62D1E7BCA00A5628A /* libAiMouseSdk copy.a */,
);
sourceTree = "<group>";
};
180E7BF62BD8FC4E008558E8 /* ffmpeg */,
180E7AA92BD7BB12008558E8 /* AiMouseSdk.h */,
180E7AAB2BD7BB12008558E8 /* AiMouseSdk.m */,
- 3FCF53532D1A8DBA007EC52F /* AiMouseSdk1.h */,
- 3FCF53542D1A8DBA007EC52F /* AiMouseSdk1.m */,
180E7B472BD7BD7F008558E8 /* AiAuthManager.h */,
180E7B522BD7BD82008558E8 /* AiAuthManager.m */,
188814BB2C85BB76009299A9 /* AiBkzhAuthManager.h */,
188814BC2C85BB76009299A9 /* AiBkzhAuthManager.m */,
181CE5BF2C6EED9900EF8D07 /* AiAliAuthManager.h */,
181CE5C02C6EED9900EF8D07 /* AiAliAuthManager.m */,
- 18FCA3952C7F2AD100C44A37 /* AiMouseAuth.h */,
- 18FCA3962C7F2AD100C44A37 /* AiMouseAuth.m */,
18AD83232BFAE8B9009BDE3B /* AiDeviceInfoManager.h */,
18AD83242BFAE8B9009BDE3B /* AiDeviceInfoManager.m */,
18AD83272BFB22DE009BDE3B /* AiSender.h */,
18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */,
18EF7AF32C7603E800AC5223 /* TlwTools.h */,
18EF7AEC2C7603E800AC5223 /* TlwTools.m */,
- 18EF7AF62C7603E800AC5223 /* TlwConnectManager.h */,
- 18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */,
+ 18EF7AF62C7603E800AC5223 /* AiConnectManager.h */,
+ 18EF7AED2C7603E800AC5223 /* AiConnectManager.m */,
18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */,
18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */,
18EF7AEA2C7603E800AC5223 /* adpcm.h */,
180E7C882BD8FC4E008558E8 /* hwcontext.h in Headers */,
180E7CB12BD8FC4E008558E8 /* dovi_meta.h in Headers */,
184A710F2BDA4C050025A332 /* AFHTTPSessionManager.h in Headers */,
- 18EF7B052C7603E800AC5223 /* TlwConnectManager.h in Headers */,
+ 18EF7B052C7603E800AC5223 /* AiConnectManager.h in Headers */,
180E7CF92BD8FC4F008558E8 /* dirac.h in Headers */,
18E0C5932D0FF8E40093BA8F /* stb_app.h in Headers */,
3FCF53502D1A5C97007EC52F /* LogManager.h in Headers */,
18EF7AFD2C7603E800AC5223 /* TlwAudioManager.h in Headers */,
180E7C892BD8FC4E008558E8 /* time.h in Headers */,
180E7CD32BD8FC4E008558E8 /* bprint.h in Headers */,
- 18FCA3972C7F2AD100C44A37 /* AiMouseAuth.h in Headers */,
180E7CB02BD8FC4E008558E8 /* timecode.h in Headers */,
180E7CA42BD8FC4E008558E8 /* md5.h in Headers */,
180E7CE32BD8FC4E008558E8 /* avio.h in Headers */,
180E7CA22BD8FC4E008558E8 /* frame.h in Headers */,
180E7CB32BD8FC4E008558E8 /* sha512.h in Headers */,
180E7C952BD8FC4E008558E8 /* samplefmt.h in Headers */,
- 3FCF53562D1A8DBA007EC52F /* AiMouseSdk1.h in Headers */,
180E7C8E2BD8FC4E008558E8 /* fifo.h in Headers */,
180E7CC72BD8FC4E008558E8 /* cpu.h in Headers */,
180E7CF22BD8FC4F008558E8 /* d3d11va.h in Headers */,
18862B302C806BD900D3564D /* hwcontext.h in Headers */,
18862B312C806BD900D3564D /* dovi_meta.h in Headers */,
18862B322C806BD900D3564D /* AFHTTPSessionManager.h in Headers */,
- 18862B332C806BD900D3564D /* TlwConnectManager.h in Headers */,
+ 18862B332C806BD900D3564D /* AiConnectManager.h in Headers */,
18862B342C806BD900D3564D /* dirac.h in Headers */,
18862B352C806BD900D3564D /* AFNetworkReachabilityManager.h in Headers */,
18862B362C806BD900D3564D /* AiSecretModel.h in Headers */,
18862B512C806BD900D3564D /* rational.h in Headers */,
18862B522C806BD900D3564D /* TlwTools.h in Headers */,
18862B532C806BD900D3564D /* codec_id.h in Headers */,
- 3FCF53572D1A8DBA007EC52F /* AiMouseSdk1.h in Headers */,
18862B542C806BD900D3564D /* avconfig.h in Headers */,
18862B552C806BD900D3564D /* avassert.h in Headers */,
18862B562C806BD900D3564D /* channel_layout.h in Headers */,
18862B792C806BD900D3564D /* TlwAudioManager.h in Headers */,
18862B7A2C806BD900D3564D /* time.h in Headers */,
18862B7B2C806BD900D3564D /* bprint.h in Headers */,
- 18862B7C2C806BD900D3564D /* AiMouseAuth.h in Headers */,
18862B7D2C806BD900D3564D /* timecode.h in Headers */,
18862B7E2C806BD900D3564D /* md5.h in Headers */,
18862B7F2C806BD900D3564D /* avio.h in Headers */,
);
name = "AiMouseSdk copy";
productName = AiMouseSdk;
- productReference = 3FCF534C2D1A4E38007EC52F /* libAiMouseSdk copy.a */;
+ productReference = 3F5CE3E62D1E7BCA00A5628A /* libAiMouseSdk copy.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 18FCA3982C7F2AD100C44A37 /* AiMouseAuth.m in Sources */,
189365552CEB115200023B62 /* KeyboardHidManager.m in Sources */,
18862A2A2C8064E300D3564D /* TimerManager.m in Sources */,
18862A232C8064E300D3564D /* HidManager.m in Sources */,
18862A282C8064E300D3564D /* BleManager.m in Sources */,
188814C42C85C2BB009299A9 /* AESCBCHelper.m in Sources */,
180E7BDF2BD7BD84008558E8 /* AiMouseConfig.m in Sources */,
- 18EF7AFC2C7603E800AC5223 /* TlwConnectManager.m in Sources */,
+ 18EF7AFC2C7603E800AC5223 /* AiConnectManager.m in Sources */,
181CE5C22C6EED9900EF8D07 /* AiAliAuthManager.m in Sources */,
18D57A032C917385003D5714 /* NMouseSdk.m in Sources */,
- 3FCF53552D1A8DBA007EC52F /* AiMouseSdk1.m in Sources */,
184A710D2BDA4C050025A332 /* AFSecurityPolicy.m in Sources */,
18862A272C8064E300D3564D /* DeviceManger.m in Sources */,
180E7B552BD7BD83008558E8 /* AiAudioDecoder.m in Sources */,
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 18862BAE2C806BD900D3564D /* AiMouseAuth.m in Sources */,
18862BAF2C806BD900D3564D /* TimerManager.m in Sources */,
18862BB02C806BD900D3564D /* HidManager.m in Sources */,
18862BB22C806BD900D3564D /* AiMouseTools2.m in Sources */,
18862BB42C806BD900D3564D /* AiSender.m in Sources */,
18862BB52C806BD900D3564D /* AiTrippleModel.m in Sources */,
18862BB62C806BD900D3564D /* AiMouseSdk.m in Sources */,
- 3FCF53582D1A8DBA007EC52F /* AiMouseSdk1.m in Sources */,
188814912C85766B009299A9 /* AiDeviceAuthManager.m in Sources */,
18862BB82C806BD900D3564D /* AFHTTPSessionManager.m in Sources */,
18862BB92C806BD900D3564D /* AiMouseTools.m in Sources */,
18862BC52C806BD900D3564D /* BleManager.m in Sources */,
188814C52C85C2BB009299A9 /* AESCBCHelper.m in Sources */,
18862BC62C806BD900D3564D /* AiMouseConfig.m in Sources */,
- 18862BC72C806BD900D3564D /* TlwConnectManager.m in Sources */,
+ 18862BC72C806BD900D3564D /* AiConnectManager.m in Sources */,
18862BC82C806BD900D3564D /* AiAliAuthManager.m in Sources */,
18862BC92C806BD900D3564D /* AFSecurityPolicy.m in Sources */,
18862BCA2C806BD900D3564D /* DeviceManger.m in Sources */,
<key>AiMouseSdk copy.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
- <integer>4</integer>
+ <integer>2</integer>
</dict>
<key>AiMouseSdk.xcscheme_^#shared#^_</key>
<dict>
@property (nonatomic, strong) void (^deviceInfoBlock)(AiMouseDeviceInfo *deviceInfo,NSError *error);
@property (nonatomic, strong) void (^getRSSIBlock)(NSString *value,NSError *error);
@property (nonatomic, strong) void (^getVersionBlock)(NSString *version,NSError *error);
-@property (nonatomic, strong) void (^authBlock)(AiMouseAuthState state);
+@property (nonatomic, strong) void (^authBlock)(BOOL state);
@property (nonatomic, strong) AiCmdFinishBlock setDsBlock;
@property (nonatomic, strong) void (^setBrandBlock)(BOOL isSuccess,NSError *error);
+++ /dev/null
-////
-//// AiMouseSdk.h
-//// AiMouseSdk
-////
-//// Created by incar on 2024/4/23.
-////
-//
-//#import <Foundation/Foundation.h>
-//
-//@interface AiMouseDeviceInfo : NSObject
-//@property (nonatomic, strong) NSString *battery_power;/// 电池百分百电量,0-100
-//@property (nonatomic, strong) NSString *CPI;/// CPI值
-//@property (nonatomic, strong) NSString *CPI_list;/// 可设置的CPI参数列表
-//@property (nonatomic, strong) NSString *version;///软件版本
-//@property (nonatomic, strong) NSString *brand;/// 品牌名称
-//@property (nonatomic, strong) NSString *sn;/// 设备序列号
-//@property (nonatomic, strong) NSString *mac;///设备MAC地址
-//@end
-//
-//typedef NS_ENUM(NSInteger,AiMouseErrorCode) {
-// AiMouseErrorCode_timeOut = 1001,///请求超时
-// AiMouseErrorCode_busy = 1002,/// 繁忙,有命令未执行完
-// AiMouseErrorCode_unknown = 1003,/// 未知错误
-//};
-//
-///// 日志等级
-//typedef NS_ENUM(NSInteger,AiMouseLogLevel) {
-// AiMouseLogLevel_none = 0,
-// AiMouseLogLevel_error,
-// AiMouseLogLevel_info,
-//};
-//
-//typedef NS_ENUM(NSInteger,AiMouseConnectType) {
-// AiMouseConnectType_bluetooth = 0,///蓝牙
-// AiMouseConnectType_hid = 1,///hid
-//};
-//
-//typedef NS_ENUM(NSInteger,AiMouseAuthState) {
-// AiMouseAuthState_Unknow = 0,///未知
-// AiMouseAuthState_Success,///鉴权成功
-// AiMouseAuthState_Failure///鉴权失败
-//};
-//
-//@protocol AiMouseDelegate <NSObject>
-//
-///// 设备连接状态
-///// - Parameter connected: 是否连接
-//- (void)aiMouseConnectStateDidChange:(BOOL)connected;
-//
-///// 鉴权结果返回
-///// - Parameter authState: 鉴权状态
-//- (void)aiMouseAuthenticationResult:(AiMouseAuthState)authState;
-//
-///// 设备信息数据回调,需要将此数据通过设备信息特征转发给蓝牙设备
-///// - Parameter data: 数据
-//- (void)aiMouseSendDeviceInfoData:(NSData *)data;
-//
-///// 鼠标按键指令回调
-///// - Parameter data: 数据。
-///// 前 第一次单击31(开始录音), 第二次单击32(结束录音) , 按下21(开始录音)抬起22(结束录音)
-///// 中 单击42, 按下25(开始录音)抬起26(结束录音)
-///// 后 单击43,按下27(开始录音)抬起28(结束录音)
-///// 其他未定义
-//- (void)aiMouseSendCmdData:(NSData *)data;
-//
-///// 录音回调
-///// - Parameter data: pcm格式语音数据
-//- (void)aiMouseSendRecordData:(NSData *)data;
-//
-//@optional
-///// 输出sdk日志
-///// - Parameter log: 日志
-//- (void)aiMouseAddLog:(NSString *)log;
-//
-///// hid数据异常,需要重新开启监听usb设备
-//- (void)hidDataError;
-//@end
-//
-//@interface AiMouse : NSObject
-//@property (nonatomic, readonly) NSString *version;/// 版本号
-//@property (nonatomic, weak) id<AiMouseDelegate> delegate;/// 代理
-//@property (nonatomic, readonly) AiMouseConnectType connectType;//连接类型
-//@property (nonatomic, readonly) BOOL connected;//是否已连接
-//@property (nonatomic, readonly) AiMouseAuthState authState;/// 鉴权状态,默认是Unknow。所以必须在连上蓝牙设备找到鉴权特征后,需要主动调用startAuthentication方法去鉴权。(只有鉴权成功,AI功能才可用)
-//
-///// 单利
-//+(AiMouse *)shared;
-//
-///// 设置日志等级
-///// - Parameter level: 等级
-//- (void)setLogLevel:(AiMouseLogLevel)level;
-//
-//
-///// 断开连接
-//- (void)didDisconnect;
-//
-///// 切换连接类型
-///// - Parameter type: 连接类型
-//- (void)switchConnect:(AiMouseConnectType)type;
-//
-/////// 开始鉴权
-/////// - Parameter finished: 鉴权结果回调
-////- (void)startAuthentication:(void (^)(AiMouseAuthState state))complete;
-//
-///// 传输业务数据给sdk
-///// - Parameter data:ai特征传过来的数据
-//- (void)sendAiDataToSdk:(NSData *)data;
-//
-///// 传输设备信息数据给sdk
-///// - Parameter data:设备信息特征传过来的数据
-//- (void)sendDeviceDataToSdk:(NSData *)data;
-//
-///// 获取设备信息
-///// - Parameter completation: 如果获取成功,则deviceInfo有值,否则为nil
-//- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))complete;
-//
-///// 获取信号强度
-///// - Parameter completation: 信号强度回调,如果获取成功,则value有值,否则为nil
-//- (void)getRSSI:(void (^)(NSString *value,NSError *error))complete;
-//
-///// 设置品牌名称
-///// - Parameters:
-///// - value: 品牌名称
-///// - finished: 设置结果回调
-//- (void)setBrand:(NSString *)brand completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置CPI
-///// - Parameters:
-///// - value: AiMouseDeviceInfo 中可以设置的值CPI_list
-///// - finished: 设置结果回调
-//- (void)setCPI:(NSInteger)value completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置录音模式
-///// - Parameters:
-///// - value: 0:常规模式,按按键打开关闭录音 1:命令模式,发命令打开关闭录音
-///// - finished: 设置结果回调
-//- (void)setRecordMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置长按滚轮弹出的网页地址
-///// - Parameters:
-///// - url: 最大长度:49字节
-///// - finished: 设置结果回调
-//- (void)setUrl:(NSString *)url completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置长按滚轮弹出网页开关
-///// - Parameters:
-///// - state: 0关闭,1打开
-///// - finished: 设置结果回调
-//- (void)setUrlState:(int)state completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置鼠标连接模式
-///// - Parameters:
-///// - mode: 0:2.4G模式,1:蓝牙1模式,2:蓝牙2模式
-///// - finished: 设置结果回调
-//- (void)setMouseMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 获取录音模式
-///// - Parameter complete: mode 0:常规模式,按按键打开关闭录音 1:命令模式,发命令打开关闭录音 。error为nil才代表获取成功
-//- (void)getRecordMode:(void (^)(int mode,NSError *error))complete;
-//
-///// 获取长按滚轮弹出的网页地址
-///// - Parameter complete: url地址 。error为nil才代表获取成功
-//- (void)getUrl:(void (^)(NSString *url,NSError *error))complete;
-//
-///// 获取长按滚轮弹出的网页地址开关状态
-///// - Parameter complete: state 0关闭,1打开。 error为nil才代表获取成功
-//- (void)getUrlState:(void (^)(int state,NSError *error))complete;
-//
-///// 获取鼠标连接模式
-///// - Parameter complete: mode 0:2.4G模式,1:蓝牙1模式,2:蓝牙2模式 。error为nil才代表获取成功
-//- (void)getMouseModel:(void (^)(int mode,NSError *error))complete;
-//
-///// 打开录音
-///// - finished: 执行结果回调
-//- (void)openRecord:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 关闭录音
-///// - finished: 执行结果回调
-//- (void)closeRecord:(void (^)(BOOL isSuccess,NSError *error))finished;
-//@end
+++ /dev/null
-////
-//// AiMouseSdk.m
-//// AiMouseSdk
-////
-//// Created by incar on 2024/4/23.
-////
-//
-//#import "AiMouseSdk.h"
-//#import "AiDeviceInfoManager.h"
-//#import "AiAuthManager.h"
-//#import "AiAliAuthManager.h"
-//#import "AiAudioManager.h"
-//#import "AiMouseTools.h"
-//#import "AiMouseTools2.h"
-//#import "AiMouseConfig.h"
-//#import "AiRecordManager.h"
-//#import "AiConnectManager.h"
-//
-//#define kIsAliChannal true
-//
-//@interface AiMouseDeviceInfo()
-//@property (nonatomic, strong) NSString *productKey;/// 品牌key
-//@property (nonatomic, strong) NSString *secretKey;/// 品牌Secret
-//@property (nonatomic, strong) NSString *deviceSecret;///设备Secret
-//@end
-//@implementation AiMouseDeviceInfo
-//-(NSString *)description{
-//// NSString *info = [NSString stringWithFormat:@"\n battery_power = %@\n CPI = %@\n CPI_list = %@\n version = %@\n brand = %@\n sn = %@\n mac = %@\n productKey = %@\n secretKey = %@\n deviceSecret = %@ \n record_mode = %@ \n mouse_mode = %@ \n url = %@ \n urlActive = %@ ",self.battery_power,self.CPI,self.CPI_list,self.version,self.brand,self.sn,self.mac,self.productKey,self.secretKey,self.deviceSecret,self.record_mode,self.mouse_mode,self.url,self.urlActive];
-//
-// NSString *info = [NSString stringWithFormat:@"\n battery_power = %@\n CPI = %@\n CPI_list = %@\n version = %@\n brand = %@\n sn = %@\n mac = %@\n productKey = %@\n secretKey = %@\n deviceSecret = %@ ",self.battery_power,self.CPI,self.CPI_list,self.version,self.brand,self.sn,self.mac,self.productKey,self.secretKey,self.deviceSecret];
-// return info;
-//}
-//@end
-//
-//@interface AiMouse()<AiConnectManagerDelegate>
-//@property (nonatomic, assign) AiMouseLogLevel logLevel;
-//@property (nonatomic, strong) AiAuthManager *authManager;
-//@property (nonatomic, strong) AiAliAuthManager *aliAuthManager;
-//@property (nonatomic, strong) AiAudioManager *audioManager;
-//@property (nonatomic, strong) AiRecordManager *recordManager;
-//@property (nonatomic, strong) void (^authBlock)(AiMouseAuthState state);
-//@property (nonatomic, strong) AiDeviceInfoManager *deviceInfoManager;
-//@property (nonatomic, strong) NSString *updateDeviceSecret;//更新的deviceSecret
-//
-//@property (nonatomic, strong) AiConnectManager *connectManager;
-//@property (nonatomic, assign) BOOL isAuthing;
-//@end
-//
-//@implementation AiMouse
-//+(AiMouse *)shared{
-// static AiMouse *manager = nil;
-// static dispatch_once_t oncePredicate;
-// dispatch_once(&oncePredicate, ^{
-// manager = [[AiMouse alloc]init];
-// });
-// return manager;
-//}
-//
-//-(instancetype)init{
-// if (self = [super init]) {
-// _logLevel = AiMouseLogLevel_none;
-// _authState = AiMouseAuthState_Unknow;
-// _connectType = AiMouseConnectType_bluetooth;
-// [self.connectManager start];
-// NSLog(@"[AiMouseSdk]%@",[NSString stringWithFormat:@"AiMouseSdk_v%@",self.version]);
-// }
-// return self;
-//}
-//
-//-(NSString *)version{
-// return @"1.0.32";
-//}
-//
-//-(AiDeviceInfoManager *)deviceInfoManager{
-// if (!_deviceInfoManager) {
-// _deviceInfoManager = [[AiDeviceInfoManager alloc] init];
-// __weak typeof(self) ws = self;
-// _deviceInfoManager.sendToBleBlock = ^(NSData * _Nonnull data) {
-// if (ws.delegate) {
-// [ws showLog:[NSString stringWithFormat:@"[send][info] %@",data]];
-// [ws.delegate aiMouseSendDeviceInfoData:data];
-// }
-// };
-// _deviceInfoManager.outputLogBlock = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// }
-// return _deviceInfoManager;;
-//}
-//
-//-(AiAuthManager *)authManager{
-// if (!_authManager) {
-// _authManager = [[AiAuthManager alloc] init];
-// __weak typeof(self) ws = self;
-// _authManager.outputLog = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// _authManager.setDeviceSecret = ^(NSString * _Nonnull value, AiCmdFinishBlock _Nonnull finished) {
-// [ws setDeviceSecret:value completation:finished];
-// };
-// _authManager.authCallBack = ^(BOOL isSuccess) {
-// [ws authResult:isSuccess];
-//// [ws setDeviceSecret:@"" completation:nil];
-// };
-// }
-// return _authManager;
-//}
-//
-//-(AiAliAuthManager *)aliAuthManager{
-// if (!_aliAuthManager) {
-// _aliAuthManager = [[AiAliAuthManager alloc] init];
-// __weak typeof(self) ws = self;
-// _aliAuthManager.outputLog = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// _aliAuthManager.setDeviceSecret = ^(NSString * _Nonnull value, AiAliCmdFinishBlock _Nonnull finished) {
-// [ws setDeviceSecret:value completation:finished];
-// };
-// _aliAuthManager.authCallBack = ^(BOOL isSuccess) {
-// [ws authResult:isSuccess];
-//// [ws setDeviceSecret:@"" completation:nil];
-// };
-// }
-// return _aliAuthManager;
-//}
-//
-//-(AiAudioManager *)audioManager{
-// if (!_audioManager) {
-// _audioManager = [[AiAudioManager alloc] init];
-// __weak typeof(self) ws = self;
-// _audioManager.decodeCallBack = ^(NSData * _Nonnull data) {
-// [ws sendRecordData:data];
-// };
-// _audioManager.outputLog = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// }
-// return _audioManager;
-//}
-//
-//- (AiRecordManager *)recordManager{
-// if (!_recordManager) {
-// _recordManager = [[AiRecordManager alloc] init];
-// __weak typeof(self) ws = self;
-// _recordManager.didRecordData = ^(NSData * _Nonnull data) {
-// [ws showLog:[NSString stringWithFormat:@"%@",data]];
-// [ws sendRecordData:data];
-// };
-// }
-// return _recordManager;
-//}
-//
-//-(AiConnectManager *)connectManager{
-// if (!_connectManager) {
-// _connectManager = [[AiConnectManager alloc] init];
-// _connectManager.delegate = self;
-// }
-// return _connectManager;
-//}
-//#pragma mark - pub Api
-//- (void)setLogLevel:(AiMouseLogLevel)level{
-// _logLevel = level;
-//}
-//- (void)didDisconnect{
-// [self showLog:@"系统断开连接"];
-// [self stopRecord:true];
-// [self.connectManager disConnected];
-//
-//}
-//- (void)switchConnect:(AiMouseConnectType)type{
-// if(type != _connectType && self.connected){
-// [self.connectManager disConnected];
-// }
-// _connectType = type;
-// [self showLog:type == AiMouseConnectType_bluetooth?@"sdk切换到蓝牙模式":@"sdk切换到usb模式"];
-//
-//
-// if (type == AiMouseConnectType_hid) {
-// [self.recordManager checkPermissions];
-// }
-//}
-////开始鉴权
-//- (void)startAuthentication:(void (^)(AiMouseAuthState))complete{
-//// [self showLog:@"获取设备信息"];
-//// _authState = AiMouseAuthState_Unknow;
-// [self showLog:@"开始鉴权"];
-// self.authBlock = complete;
-// __block typeof(self) ws = self;
-// [self getDeviceInfo:^(AiMouseDeviceInfo *deviceInfo, NSError *error) {
-// if (error ) {
-// ws.authBlock(AiMouseAuthState_Failure);
-// }
-// else{
-// if(kIsAliChannal){
-// [ws.aliAuthManager loginWith:deviceInfo];
-// }
-// else{
-// [ws.authManager loginWith:deviceInfo];
-// }
-// }
-// }];
-//}
-//
-//- (void)sendAiDataToSdk:(NSData *)data{
-// [self.connectManager resetTimeOut];
-//
-// [self showLog:[NSString stringWithFormat:@"[receive][Ai] %@",data]];
-//
-// if (self.authState != AiMouseAuthState_Success){
-// [self showLog:@"设备还未鉴权!!!"];
-// [self checkAuthState];
-// return;
-// }
-// if(self.connectType == AiMouseConnectType_hid){
-//// 0AFFFF12BC32
-// if(data.length == 6){
-// NSData *subData = [data subdataWithRange:NSMakeRange(5, 1)];
-// [self sendCmdData:subData];
-// uint8 cmd;
-// [subData getBytes:&cmd length:1];
-//// [self showLog:[NSString stringWithFormat:@"cmd = %X",cmdInt]];
-// if(cmd == 0x31 || cmd == 0x21 || cmd == 0x25 ||cmd == 0x27){
-// self.recordManager.startCmd = subData;
-// [self startRecord];
-// }
-// else if(cmd == 0x32 || cmd == 0x22 || cmd == 0x26 ||cmd == 0x28){
-// [self stopRecord:false];
-// }
-// }
-// else{
-// [self showLog:@"未实现指令"];
-// }
-// }
-// else if (self.connectType == AiMouseConnectType_bluetooth){
-// if(data.length == 16){
-// //0A65004E003200010101C0C10000A5A5
-// NSData *cmd = [data subdataWithRange:NSMakeRange(5, 1)];
-// [self sendCmdData:cmd];
-// return;
-// }
-// NSString *cmd = [[AiMouseTools dataToHexString:data] lowercaseString];
-// if([cmd hasPrefix:@"9c31"]){
-// //声音
-// [self.audioManager receiveData:data];
-// }
-// else{
-// [self showLog:@"未实现指令"];
-// }
-// }
-//}
-//
-//#pragma mark - deviceInfoManager
-//-(void)sendDeviceDataToSdk:(NSData *)data{
-// [self showLog:[NSString stringWithFormat:@"[receive][info] %@",data]];
-// if (self.connected == false) {
-// if([AiMouseTools dataToHexString:data].length < 10){
-// if (self.delegate && [self.delegate respondsToSelector:@selector(hidDataError)]) [self.delegate hidDataError];
-// return;
-// }
-// }
-//
-// [self.connectManager resetTimeOut];
-// [self.deviceInfoManager receiveData:data];
-// [self checkAuthState];
-//}
-//- (void)setDeviceSecret:(NSString *)value completation:(AiCmdFinishBlock)complete{
-// self.updateDeviceSecret = value;
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager setDeviceSecret:value completation:^(BOOL isSuccess) {
-// if (isSuccess) {
-// [ws showLog:@"写入deviceSecret成功,查询是否获读取成功..."];
-// //更新成功,检查是否读取到
-// [ws.deviceInfoManager getDeviceInfo:^(AiMouseDeviceInfo * _Nonnull deviceInfo, NSError * _Nonnull error) {
-// if ([deviceInfo.deviceSecret isEqualToString:value]) {
-// [ws showLog:@"写入deviceSecret成功,读取成功!"];
-// complete(true);
-// }
-// else{
-// //查不到,继续写入
-// [ws showLog:@"查询不到deviceSecret,继续写入!!!"];
-// [ws setDeviceSecret:ws.updateDeviceSecret completation:complete];
-// }
-// }];
-// }
-// else{
-// [ws showLog:@"写入deviceSecret失败!"];
-// [ws setDeviceSecret:ws.updateDeviceSecret completation:complete];
-// }
-// }];
-//}
-//- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))complete{
-// [self.deviceInfoManager getDeviceInfo:complete];
-//}
-//- (void)getRSSI:(void (^)(NSString *value,NSError *error))complete{
-// [self.deviceInfoManager getRSSI:complete];
-//}
-//- (void)setBrand:(NSString *)brand completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setBrand:brand completation:finished];
-//}
-//- (void)setCPI:(NSInteger)value completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setCPI:value completation:finished];
-//}
-///// 设置录音模式
-//- (void)setRecordMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setRecordMode:mode completation:finished];
-//}
-///// 设置长按滚轮弹出的网页地址
-//- (void)setUrl:(NSString *)url completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setUrl:url completation:finished];
-//}
-///// 设置长按滚轮弹出网页开关
-//- (void)setUrlState:(int)state completation:(void (^)(BOOL, NSError *))finished{
-// [self.deviceInfoManager setUrlState:state completation:finished];
-//}
-///// 设置鼠标连接模式
-//- (void)setMouseMode:(int)mode completation:(void (^)(BOOL, NSError *))finished{
-// [self.deviceInfoManager setMouseMode: mode completation:finished];
-//}
-///// 获取录音模式
-//- (void)getRecordMode:(void (^)(int mode,NSError *error))complete{
-// [self.deviceInfoManager getRecordMode:complete];
-//}
-///// 获取长按滚轮弹出的网页地址
-//- (void)getUrl:(void (^)(NSString *url,NSError *error))complete{
-// [self.deviceInfoManager getUrl:complete];
-//}
-///// 获取长按滚轮弹出的网页地址开关状态
-//- (void)getUrlState:(void (^)(int state,NSError *error))complete{
-// [self.deviceInfoManager getUrlState:complete];
-//}
-///// 获取鼠标连接模式
-//- (void)getMouseModel:(void (^)(int mode,NSError *error))complete{
-// [self.deviceInfoManager getMouseModel:complete];
-//}
-///// 开始录音
-//- (void)openRecord:(void (^)(BOOL isSuccess,NSError *error))finished{
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager openRecord:^(BOOL isSuccess, NSError * _Nonnull error) {
-// finished(isSuccess,error);
-// if (isSuccess) {
-// uint8 value = 0x31;
-// NSData *cmd = [NSData dataWithBytes:&value length:1];
-// [ws sendCmdData:cmd];
-//
-// if(self.connectType == AiMouseConnectType_hid){
-// [ws startRecord];
-// }
-// }
-// }];
-//}
-///// 结束录音
-//- (void)closeRecord:(void (^)(BOOL isSuccess,NSError *error))finished{
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager closeRecord:^(BOOL isSuccess, NSError * _Nonnull error) {
-// finished(isSuccess,error);
-//
-// if (isSuccess) {
-// uint8 value = 0x32;
-// NSData *cmd = [NSData dataWithBytes:&value length:1];
-// [ws sendCmdData:cmd];
-//
-// if(self.connectType == AiMouseConnectType_hid){
-// [ws stopRecord:false];
-// }
-// }
-// }];
-//}
-//#pragma mark - other
-//- (void)sendRecordData:(NSData *)data{
-//// if (self.authState != AiMouseAuthState_Success){
-//// [self showLog:@"设备还未鉴权!!!"];
-//// return;
-//// };
-//// [self showLog:[NSString stringWithFormat:@"[audio] %@",data]];
-// if (self.delegate) [self.delegate aiMouseSendRecordData:data];
-//}
-//- (void)sendCmdData:(NSData *)data{
-//// if (self.authState != AiMouseAuthState_Success){
-//// [self showLog:@"设备还未鉴权!!!"];
-//// return;
-//// }
-// [self showLog:[NSString stringWithFormat:@"[send] %@",data]];
-// if (self.delegate) [self.delegate aiMouseSendCmdData:data];
-//}
-//
-//- (void)authResult:(BOOL)isSuccess{
-// _authState = isSuccess ? AiMouseAuthState_Success:AiMouseAuthState_Failure;
-// [self.deviceInfoManager setAuthStateToDevice:isSuccess];
-//
-// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-// if(self.authBlock) self.authBlock(self->_authState);
-// });
-//}
-//- (void)showLog:(NSString *)log{
-// if (self.delegate && [self.delegate respondsToSelector:@selector(aiMouseAddLog:)]) {
-// [self.delegate aiMouseAddLog:log];
-// }
-// if(self.logLevel == AiMouseLogLevel_info){
-// NSLog(@"[AiMouseSdk]%@",log);
-// }
-//}
-//
-//- (void)checkAuthState{
-// if (self.authState != AiMouseAuthState_Success) {
-// if (self.isAuthing) {
-// return;
-// }
-// self.isAuthing = true;
-// __weak typeof(self) ws = self;
-// [self startAuthentication:^(AiMouseAuthState state) {
-// ws.isAuthing = false;
-// [ws showLog:state == AiMouseAuthState_Success? @"鉴权成功":@"鉴权失败"];
-// if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:state];
-// }];
-// }
-//}
-//#pragma mark - deviceInfo
-//- (void)startRecord{
-//// [self showLog:@"开始录音"];
-// [self.recordManager start];
-//}
-//
-//- (void)stopRecord:(BOOL)sendCmd{
-// if (self.recordManager.recording ) {
-// [self.recordManager stop];
-// }
-// if (sendCmd) {
-// [self sendCmdData:self.recordManager.stopCmd];
-// }
-//// [self showLog:@"结束录音"];
-//}
-//
-//#pragma mark - AiConnectManagerDelegate
-//-(void)aiConnectManager:(AiConnectManager *)manager connectStateDidChange:(BOOL)connected{
-// if (connected == false) {
-// _authState = AiMouseAuthState_Unknow;
-// }
-// _connected = connected;
-// if([self.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [self.delegate aiMouseConnectStateDidChange:connected];
-//}
-//-(void)aiConnectManagerReSendData:(AiConnectManager *)manager{
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager getVersion:^(NSString * _Nonnull version, NSError * _Nonnull error) {
-// if (error.code == AiMouseErrorCode_timeOut) {
-// [ws.connectManager addTimeOut];
-// }
-// }];
-//}
-//-(void)aiConnectManager:(AiConnectManager *)manager outputLog:(NSString *)log{
-// [self showLog:log];
-//}
-//@end
-//
@interface AiMouseDeviceInfo : NSObject
@property (nonatomic, assign) int type;/// 产品类型,0鼠标,1键盘
-
@property (nonatomic, strong) NSString *battery_power;/// 电池百分百电量,0-100
@property (nonatomic, strong) NSString *CPI;/// CPI值
@property (nonatomic, strong) NSString *CPI_list;/// 可设置的CPI参数列表
AiMouseConnectType_hid = 1,///hid
};
-typedef NS_ENUM(NSInteger,AiMouseAuthState) {
- AiMouseAuthState_Unknow = 0,///未知
- AiMouseAuthState_Success,///鉴权成功
- AiMouseAuthState_Failure///鉴权失败
-};
-
@protocol AiMouseDelegate <NSObject>
/// 设备连接状态
/// 鉴权结果返回
/// - Parameter authState: 鉴权状态
-- (void)aiMouseAuthenticationResult:(AiMouseAuthState)authState;
+- (void)aiMouseAuthenticationResult:(BOOL)authState;
/// 设备信息数据回调,需要将此数据通过设备信息特征转发给蓝牙设备
/// - Parameter data: 数据
/// 单利
+(AiMouse *)shared;
-
/// 断开连接
- (void)didDisconnect;
#import "ByteDanceSdk.h"
#import "DeviceManger.h"
+#import "AiConnectManager.h"
@implementation ByteDanceInfo
@end
@property (nonatomic, strong) ByteDanceSdk *byteSdk;
@property (nonatomic, strong) AiAudioManager *audioManager;
@property (nonatomic, strong) AiRecordManager *recordManager;
-@property (nonatomic, strong) void (^authBlock)(AiMouseAuthState state);
@property (nonatomic, strong) AiDeviceInfoManager *deviceInfoManager;
-@property (nonatomic, strong) NSString *updateDeviceSecret;//更新的deviceSecret
-
+@property (nonatomic, strong) AiConnectManager *connectdManager;
@end
@implementation AiMouse
self.byteSdk = [ByteDanceSdk shared];
[self.byteSdk initSdk];
}
-
}
return self;
}
return _recordManager;
}
+-(AiConnectManager *)connectdManager{
+ if (!_connectdManager) {
+ _connectdManager = [[AiConnectManager alloc] init];
+ __weak typeof(self) ws = self;
+// _connectdManager.needSendToBleCallBack = ^{
+// [ws.deviceInfoManager getVersion:^(NSString * _Nonnull version, NSError * _Nonnull error) {
+//
+// }];
+// };
+// _connectdManager.didDisConnectedCallBack = ^{
+// [ws switchConnect:AiMouseConnectType_hid isConnected:false];
+// };
+ }
+ return _connectdManager;
+}
#pragma mark - pub Api
- (void)didDisconnect{
[self stopRecord:true];
// [self.connectManager disConnected];
-
}
- (void)switchConnect:(AiMouseConnectType)type isConnected:(BOOL)isConneted{
if(isConneted ){
deviceInfo.byteAuthInfo = info;
[ws showLog:deviceInfo.description];
if([self.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [self.delegate aiMouseConnectStateDidChange:self.connected];
- if(self.delegate) [self.delegate aiMouseAuthenticationResult:AiMouseAuthState_Success];
+ if(self.delegate) [self.delegate aiMouseAuthenticationResult:true];
}];
}
else{
if([ws.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [ws.delegate aiMouseConnectStateDidChange:ws.connected];
- if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:AiMouseAuthState_Success];
+ if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:true];
}
}];
}
}
- (void)sendAiDataToSdk:(NSData *)data{
- [self showLog:[NSString stringWithFormat:@"[receive][Voice] %@",data]];
+ if (self.connectType == AiMouseConnectType_hid ) {
+ [self.connectdManager didConnected];
+ }
+ [self showLog:[NSString stringWithFormat:@"[receive][Voice] %@",data]];
if(self.connectType == AiMouseConnectType_hid){
// 0AFFFF12BC32
if(data.length == 6){
#pragma mark - deviceInfoManager
-(void)sendDeviceDataToSdk:(NSData *)data{
+ if (self.connectType == AiMouseConnectType_hid ) {
+ [self.connectdManager didConnected];
+ }
if (data.length == 0 || (data.length == 6 && [[AiMouseTools dataToHexString:data] hasSuffix:@"f77f"])) {
[self showLog:[NSString stringWithFormat:@"[receive][info] %@",data]];
[self showLog:@"收到异常数据!!!"];
[self showLog:[NSString stringWithFormat:@"[receive][info] %@",[AiMouseTools dataToHexString:data]]];
[self showLog:[NSString stringWithFormat:@"[receive][info] %@",[AiMouseTools dataToUtf8String:data]]];
-
if ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) {
if([self.deviceInfoManager receiveData:data]){
else{
[self.deviceInfoManager receiveData:data];
}
-
}
- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))complete{
-
__weak typeof(self) ws = self;
[self.deviceInfoManager getDeviceInfo:^(AiMouseDeviceInfo * _Nonnull deviceInfo, NSError * _Nonnull error) {
if (deviceInfo && ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4)) {
[ws switchConnect:ws.connectType isConnected:false];
}
}];
-
}
- (void)getRSSI:(void (^)(NSString *value,NSError *error))complete{
[self.deviceInfoManager getRSSI:complete];
if (self.delegate) [self.delegate aiMouseSendCmdData:data];
}
-- (void)authResult:(BOOL)isSuccess{
- [self.deviceInfoManager setAuthStateToDevice:isSuccess];
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- if(self.authBlock) self.authBlock(isSuccess);
- });
-}
- (void)showLog:(NSString *)log{
if (self.delegate && [self.delegate respondsToSelector:@selector(aiMouseAddLog:)]) {
[self.delegate aiMouseAddLog:[NSString stringWithFormat:@"[frk]%@",log]];
// [self showLog:@"结束录音"];
}
-
- (void)sendToBle:(NSData *)data{
- [self showLog:[NSString stringWithFormat:@"[send][info] %@",[AiMouseTools dataToHexString:data]]];
+ [self showLog:[NSString stringWithFormat:@"[send] %@",[AiMouseTools dataToHexString:data]]];
if (self.delegate) {
[self.delegate aiMouseSendDeviceInfoData:data];
};
+++ /dev/null
-////
-//// AiMouseSdk.h
-//// AiMouseSdk
-////
-//// Created by incar on 2024/4/23.
-////
-//
-//#import <Foundation/Foundation.h>
-//
-//@interface AiMouseDeviceInfo : NSObject
-//@property (nonatomic, assign) int type;/// 产品类型,0鼠标,1键盘
-//
-//@property (nonatomic, strong) NSString *battery_power;/// 电池百分百电量,0-100
-//@property (nonatomic, strong) NSString *CPI;/// CPI值
-//@property (nonatomic, strong) NSString *CPI_list;/// 可设置的CPI参数列表
-//@property (nonatomic, strong) NSString *version;///软件版本
-//@property (nonatomic, strong) NSString *brand;/// 品牌名称
-//@property (nonatomic, strong) NSString *sn;/// 设备序列号
-//@property (nonatomic, strong) NSString *mac;///设备MAC地址
-//@end
-//
-//typedef NS_ENUM(NSInteger,AiMouseErrorCode) {
-// AiMouseErrorCode_timeOut = 1001,///请求超时
-// AiMouseErrorCode_busy = 1002,/// 繁忙,有命令未执行完
-// AiMouseErrorCode_unknown = 1003,/// 未知错误
-//};
-//
-//typedef NS_ENUM(NSInteger,AiMouseConnectType) {
-// AiMouseConnectType_bluetooth = 0,///蓝牙
-// AiMouseConnectType_hid = 1,///hid
-//};
-//
-//typedef NS_ENUM(NSInteger,AiMouseAuthState) {
-// AiMouseAuthState_Unknow = 0,///未知
-// AiMouseAuthState_Success,///鉴权成功
-// AiMouseAuthState_Failure///鉴权失败
-//};
-//
-//@protocol AiMouseDelegate <NSObject>
-//
-///// 设备连接状态
-///// - Parameter connected: 是否连接
-//- (void)aiMouseConnectStateDidChange:(BOOL)connected;
-//
-///// 鉴权结果返回
-///// - Parameter authState: 鉴权状态
-//- (void)aiMouseAuthenticationResult:(AiMouseAuthState)authState;
-//
-///// 设备信息数据回调,需要将此数据通过设备信息特征转发给蓝牙设备
-///// - Parameter data: 数据
-//- (void)aiMouseSendDeviceInfoData:(NSData *)data;
-//
-///// 鼠标按键指令回调
-///// - Parameter data: 数据。
-///// 前 第一次单击31(开始录音), 第二次单击32(结束录音) , 按下21(开始录音)抬起22(结束录音)
-///// 中 单击42, 按下25(开始录音)抬起26(结束录音)
-///// 后 单击43,按下27(开始录音)抬起28(结束录音)
-///// 其他未定义
-//- (void)aiMouseSendCmdData:(NSData *)data;
-//
-///// 录音回调
-///// - Parameter data: pcm格式语音数据
-//- (void)aiMouseSendRecordData:(NSData *)data;
-//
-///// hid数据异常,需要重新开启监听usb设备
-//- (void)aiMouseHidDataError;
-//
-///// 输出sdk日志
-///// - Parameter log: 日志
-//- (void)aiMouseAddLog:(NSString *)log;
-//
-//@end
-//
-//@interface AiMouse : NSObject
-//@property (nonatomic, weak) id<AiMouseDelegate> delegate;/// 代理
-//@property (nonatomic, readonly) AiMouseConnectType connectType;//连接类型
-//@property (nonatomic, assign) BOOL connected;//是否已连接
-//
-///// 单利
-//+(AiMouse *)shared;
-//
-//
-///// 断开连接
-//- (void)didDisconnect;
-//
-///// 切换连接类型
-///// - Parameter type: 连接类型
-//- (void)switchConnect:(AiMouseConnectType)type isConnected:(BOOL)isConneted;
-//
-///// 传输业务数据给sdk
-///// - Parameter data:ai特征传过来的数据
-//- (void)sendAiDataToSdk:(NSData *)data;
-//
-///// 传输设备信息数据给sdk
-///// - Parameter data:设备信息特征传过来的数据
-//- (void)sendDeviceDataToSdk:(NSData *)data;
-//
-///// 获取设备信息
-///// - Parameter completation: 如果获取成功,则deviceInfo有值,否则为nil
-//- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))complete;
-//
-///// 获取信号强度
-///// - Parameter completation: 信号强度回调,如果获取成功,则value有值,否则为nil
-//- (void)getRSSI:(void (^)(NSString *value,NSError *error))complete;
-//
-///// 设置品牌名称
-///// - Parameters:
-///// - value: 品牌名称
-///// - finished: 设置结果回调
-//- (void)setBrand:(NSString *)brand completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置CPI
-///// - Parameters:
-///// - value: AiMouseDeviceInfo 中可以设置的值CPI_list
-///// - finished: 设置结果回调
-//- (void)setCPI:(NSInteger)value completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置录音模式
-///// - Parameters:
-///// - value: 0:常规模式,按按键打开关闭录音 1:命令模式,发命令打开关闭录音
-///// - finished: 设置结果回调
-//- (void)setRecordMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置长按滚轮弹出的网页地址
-///// - Parameters:
-///// - url: 最大长度:49字节
-///// - finished: 设置结果回调
-//- (void)setUrl:(NSString *)url completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置长按滚轮弹出网页开关
-///// - Parameters:
-///// - state: 0关闭,1打开
-///// - finished: 设置结果回调
-//- (void)setUrlState:(int)state completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 设置鼠标连接模式
-///// - Parameters:
-///// - mode: 0:2.4G模式,1:蓝牙1模式,2:蓝牙2模式
-///// - finished: 设置结果回调
-//- (void)setMouseMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 获取录音模式
-///// - Parameter complete: mode 0:常规模式,按按键打开关闭录音 1:命令模式,发命令打开关闭录音 。error为nil才代表获取成功
-//- (void)getRecordMode:(void (^)(int mode,NSError *error))complete;
-//
-///// 获取长按滚轮弹出的网页地址
-///// - Parameter complete: url地址 。error为nil才代表获取成功
-//- (void)getUrl:(void (^)(NSString *url,NSError *error))complete;
-//
-///// 获取长按滚轮弹出的网页地址开关状态
-///// - Parameter complete: state 0关闭,1打开。 error为nil才代表获取成功
-//- (void)getUrlState:(void (^)(int state,NSError *error))complete;
-//
-///// 获取鼠标连接模式
-///// - Parameter complete: mode 0:2.4G模式,1:蓝牙1模式,2:蓝牙2模式 。error为nil才代表获取成功
-//- (void)getMouseModel:(void (^)(int mode,NSError *error))complete;
-//
-///// 打开录音
-///// - finished: 执行结果回调
-//- (void)openRecord:(void (^)(BOOL isSuccess,NSError *error))finished;
-//
-///// 关闭录音
-///// - finished: 执行结果回调
-//- (void)closeRecord:(void (^)(BOOL isSuccess,NSError *error))finished;
-//@end
+++ /dev/null
-////
-//// AiMouseSdk.m
-//// AiMouseSdk
-////
-//// Created by incar on 2024/4/23.
-////
-//
-//#import "AiMouseSdk.h"
-//
-//#import "AiAuthManager.h"
-//#import "AiAliAuthManager.h"
-//#import "AiBkzhAuthManager.h"
-//
-//#import "AiDeviceInfoManager.h"
-//#import "AiAudioManager.h"
-//#import "AiMouseTools.h"
-//#import "AiMouseTools2.h"
-//#import "AiMouseConfig.h"
-//#import "AiRecordManager.h"
-//
-//
-//@interface AiMouseDeviceInfo()
-//@property (nonatomic, strong) NSString *productKey;/// 品牌key
-//@property (nonatomic, strong) NSString *secretKey;/// 品牌Secret
-//@property (nonatomic, strong) NSString *deviceSecret;///设备Secret
-//@end
-//@implementation AiMouseDeviceInfo
-//-(NSString *)description{
-// NSString *info = [NSString stringWithFormat:@"\n type = %d \n battery_power = %@\n CPI = %@\n CPI_list = %@\n version = %@\n brand = %@\n sn = %@\n mac = %@\n productKey = %@\n secretKey = %@\n deviceSecret = %@ ",self.type,self.battery_power,self.CPI,self.CPI_list,self.version,self.brand,self.sn,self.mac,self.productKey,self.secretKey,self.deviceSecret];
-// return info;
-//}
-//@end
-//
-//@interface AiMouse()
-//
-//@property (nonatomic, strong) AiAudioManager *audioManager;
-//@property (nonatomic, strong) AiRecordManager *recordManager;
-//@property (nonatomic, strong) void (^authBlock)(AiMouseAuthState state);
-//@property (nonatomic, strong) AiDeviceInfoManager *deviceInfoManager;
-//@property (nonatomic, strong) NSString *updateDeviceSecret;//更新的deviceSecret
-//
-//@end
-//
-//@implementation AiMouse
-//+(AiMouse *)shared{
-// static AiMouse *manager = nil;
-// static dispatch_once_t oncePredicate;
-// dispatch_once(&oncePredicate, ^{
-// manager = [[AiMouse alloc]init];
-// });
-// return manager;
-//}
-//
-//-(instancetype)init{
-// if (self = [super init]) {
-// _connectType = AiMouseConnectType_bluetooth;
-// [self.recordManager checkPermissions];
-// }
-// return self;
-//}
-//
-//
-//-(AiDeviceInfoManager *)deviceInfoManager{
-// if (!_deviceInfoManager) {
-// _deviceInfoManager = [[AiDeviceInfoManager alloc] init];
-// __weak typeof(self) ws = self;
-// _deviceInfoManager.sendToBleBlock = ^(NSData * _Nonnull data) {
-// if (ws.delegate) {
-// [ws showLog:[NSString stringWithFormat:@"[send][info][json] %@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]]];
-// [ws showLog:[NSString stringWithFormat:@"[send][info][byte] %@",[AiMouseTools dataToHexString:data]]];
-// [ws.delegate aiMouseSendDeviceInfoData:data];
-// }
-// };
-// _deviceInfoManager.outputLogBlock = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// _deviceInfoManager.timeOutBlock = ^{
-// [ws switchConnect:ws.connectType isConnected:false];
-// };
-// }
-// return _deviceInfoManager;;
-//}
-//
-//-(AiAudioManager *)audioManager{
-// if (!_audioManager) {
-// _audioManager = [[AiAudioManager alloc] init];
-// __weak typeof(self) ws = self;
-// _audioManager.decodeCallBack = ^(NSData * _Nonnull data) {
-// [ws sendRecordData:data];
-// };
-// _audioManager.outputLog = ^(NSString * _Nonnull log) {
-// [ws showLog:log];
-// };
-// }
-// return _audioManager;
-//}
-//
-//- (AiRecordManager *)recordManager{
-// if (!_recordManager) {
-// _recordManager = [[AiRecordManager alloc] init];
-// __weak typeof(self) ws = self;
-// _recordManager.didRecordData = ^(NSData * _Nonnull data) {
-// [ws sendRecordData:data];
-// };
-// }
-// return _recordManager;
-//}
-//
-//#pragma mark - pub Api
-//- (void)didDisconnect{
-// [self stopRecord:true];
-// // [self.connectManager disConnected];
-//
-//}
-//- (void)switchConnect:(AiMouseConnectType)type isConnected:(BOOL)isConneted{
-// if(isConneted ){
-// _connected = true;
-// _connectType = type;
-// [self showLog:type == AiMouseConnectType_bluetooth?@"sdk切换到蓝牙模式":@"sdk切换到usb模式"];
-//
-// if (type == AiMouseConnectType_hid ) {
-// [self.recordManager checkPermissions];
-// }
-// if([self.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [self.delegate aiMouseConnectStateDidChange:self.connected];
-// [self checkAuthState];
-// }
-// else{
-// if (self.connected) {
-// [self stopRecord:true];
-// _connected = false;
-// if([self.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [self.delegate aiMouseConnectStateDidChange:self.connected];
-// }
-// }
-//}
-//
-//- (void)sendAiDataToSdk:(NSData *)data{
-// // [self showLog:[NSString stringWithFormat:@"[receive][Voice] %@",data]];
-//
-// if(self.connectType == AiMouseConnectType_hid){
-// // 0AFFFF12BC32
-// if(data.length == 6){
-// NSData *subData = [data subdataWithRange:NSMakeRange(5, 1)];
-// [self sendCmdData:subData];
-// uint8 cmd;
-// [subData getBytes:&cmd length:1];
-// // [self showLog:[NSString stringWithFormat:@"cmd = %X",cmdInt]];
-// if(cmd == 0x31 || cmd == 0x21 || cmd == 0x25 ||cmd == 0x27){
-// self.recordManager.startCmd = subData;
-// [self startRecord];
-// }
-// else if(cmd == 0x32 || cmd == 0x22 || cmd == 0x26 ||cmd == 0x28){
-// [self stopRecord:false];
-// }
-// }
-// else{
-// [self showLog:@"未实现指令"];
-// }
-// }
-// else if (self.connectType == AiMouseConnectType_bluetooth){
-// if(data.length == 16){
-// //0A65004E003200010101C0C10000A5A5
-// NSData *cmd = [data subdataWithRange:NSMakeRange(5, 1)];
-// [self sendCmdData:cmd];
-// return;
-// }
-// NSString *cmd = [[AiMouseTools dataToHexString:data] lowercaseString];
-// if([cmd hasPrefix:@"9c31"]){
-// //声音
-// [self.audioManager receiveData:data];
-// }
-// else{
-// [self showLog:@"未实现指令"];
-// }
-// }
-//}
-//
-//#pragma mark - deviceInfoManager
-//-(void)sendDeviceDataToSdk:(NSData *)data{
-// if (data.length == 0 || (data.length == 6 && [[AiMouseTools dataToHexString:data] hasSuffix:@"f77f"])) {
-// [self showLog:[NSString stringWithFormat:@"[receive][info] %@",data]];
-// [self showLog:@"收到异常数据!!!"];
-// // [self switchConnect:self.connectType isConnected:false];
-// return;
-// }
-// [self showLog:[NSString stringWithFormat:@"[receive][info][json] %@",[AiMouseTools dataToHexString:data]]];
-// [self showLog:[NSString stringWithFormat:@"[receive][info][byte] %@",[AiMouseTools dataToUtf8String:data]]];
-// if (self.connected == false) {
-// if([AiMouseTools dataToHexString:data].length < 10){
-// // [self switchConnect:AiMouseConnectType_hid isConnected:false ];
-// if (self.delegate && [self.delegate respondsToSelector:@selector(aiMouseHidDataError)]) [self.delegate aiMouseHidDataError];
-// return;
-// }
-// }
-//
-// [self.deviceInfoManager receiveData:data];
-//}
-//
-//- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))complete{
-//
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager getDeviceInfo:^(AiMouseDeviceInfo * _Nonnull deviceInfo, NSError * _Nonnull error) {
-// complete(deviceInfo,error);
-// if (error != nil) {
-// [ws switchConnect:ws.connectType isConnected:false];
-// }
-// }];
-//
-//}
-//- (void)getRSSI:(void (^)(NSString *value,NSError *error))complete{
-// [self.deviceInfoManager getRSSI:complete];
-//}
-//- (void)setBrand:(NSString *)brand completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setBrand:brand completation:finished];
-//}
-//- (void)setCPI:(NSInteger)value completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setCPI:value completation:finished];
-//}
-///// 设置录音模式
-//- (void)setRecordMode:(int)mode completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setRecordMode:mode completation:finished];
-//}
-///// 设置长按滚轮弹出的网页地址
-//- (void)setUrl:(NSString *)url completation:(void (^)(BOOL isSuccess,NSError *error))finished{
-// [self.deviceInfoManager setUrl:url completation:finished];
-//}
-///// 设置长按滚轮弹出网页开关
-//- (void)setUrlState:(int)state completation:(void (^)(BOOL, NSError *))finished{
-// [self.deviceInfoManager setUrlState:state completation:finished];
-//}
-///// 设置鼠标连接模式
-//- (void)setMouseMode:(int)mode completation:(void (^)(BOOL, NSError *))finished{
-// [self.deviceInfoManager setMouseMode: mode completation:finished];
-//}
-///// 获取录音模式
-//- (void)getRecordMode:(void (^)(int mode,NSError *error))complete{
-// [self.deviceInfoManager getRecordMode:complete];
-//}
-///// 获取长按滚轮弹出的网页地址
-//- (void)getUrl:(void (^)(NSString *url,NSError *error))complete{
-// [self.deviceInfoManager getUrl:complete];
-//}
-///// 获取长按滚轮弹出的网页地址开关状态
-//- (void)getUrlState:(void (^)(int state,NSError *error))complete{
-// [self.deviceInfoManager getUrlState:complete];
-//}
-///// 获取鼠标连接模式
-//- (void)getMouseModel:(void (^)(int mode,NSError *error))complete{
-// [self.deviceInfoManager getMouseModel:complete];
-//}
-///// 开始录音
-//- (void)openRecord:(void (^)(BOOL isSuccess,NSError *error))finished{
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager openRecord:^(BOOL isSuccess, NSError * _Nonnull error) {
-// finished(isSuccess,error);
-// if (isSuccess) {
-// uint8 value = 0x31;
-// NSData *cmd = [NSData dataWithBytes:&value length:1];
-// [ws sendCmdData:cmd];
-//
-// if(self.connectType == AiMouseConnectType_hid){
-// [ws startRecord];
-// }
-// }
-// }];
-//}
-///// 结束录音
-//- (void)closeRecord:(void (^)(BOOL isSuccess,NSError *error))finished{
-// __weak typeof(self) ws = self;
-// [self.deviceInfoManager closeRecord:^(BOOL isSuccess, NSError * _Nonnull error) {
-// finished(isSuccess,error);
-//
-// if (isSuccess) {
-// uint8 value = 0x32;
-// NSData *cmd = [NSData dataWithBytes:&value length:1];
-// [ws sendCmdData:cmd];
-//
-// if(self.connectType == AiMouseConnectType_hid){
-// [ws stopRecord:false];
-// }
-// }
-// }];
-//}
-//#pragma mark - other
-//- (void)sendRecordData:(NSData *)data{
-// // [self showLog:[NSString stringWithFormat:@"[audio] %@",data]];
-// if (self.delegate) [self.delegate aiMouseSendRecordData:data];
-//}
-//- (void)sendCmdData:(NSData *)data{
-// [self showLog:[NSString stringWithFormat:@"[send] %@",data]];
-// if (self.delegate) [self.delegate aiMouseSendCmdData:data];
-//}
-//
-//- (void)authResult:(BOOL)isSuccess{
-// [self.deviceInfoManager setAuthStateToDevice:isSuccess];
-//
-// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-// if(self.authBlock) self.authBlock(isSuccess);
-// });
-//}
-//- (void)showLog:(NSString *)log{
-// if (self.delegate && [self.delegate respondsToSelector:@selector(aiMouseAddLog:)]) {
-// [self.delegate aiMouseAddLog:[NSString stringWithFormat:@"[frk]%@",log]];
-// }
-//}
-//
-//- (void)checkAuthState{
-// if(self.delegate) [self.delegate aiMouseAuthenticationResult:AiMouseAuthState_Success];
-//}
-//#pragma mark - deviceInfo
-//- (void)startRecord{
-// // [self showLog:@"开始录音"];
-// [self.recordManager start];
-//}
-//
-//- (void)stopRecord:(BOOL)sendCmd{
-// if (self.recordManager.recording ) {
-// [self.recordManager stop];
-// }
-// if (sendCmd) {
-// [self sendCmdData:self.recordManager.stopCmd];
-// }
-// // [self showLog:@"结束录音"];
-//}
-//
-//@end
-//
- (void)checkAuthSuccess{
if (self.info.urlParams && self.info.expireTime && self.info.token && self.info.host) {
if(self.byteDanceAuthInfoCallback)self.byteDanceAuthInfoCallback(self.info);
+ stb_app_stop_identify();
}
}
- (void)sendCmdToBle:(NSDictionary *)dict{
//- (void)stopScan;
-- (void)start;
+//- (void)start;
+
+- (void)open;
-(void)writeToDevice:(NSData *)data;
@end
// [[NSRunLoop currentRunLoop] run];
// });
// self.timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
- self.timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
+ self.timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(checkConnected) userInfo:nil repeats:true];
}
-- (void)timerAction{
+- (void)open{
if([DeviceManger shared].isConneted){
return;
}
@property (nonatomic, copy)void (^recordingCallBack)(NSString *data);/// 录音进行中回调
@property (nonatomic, copy)void (^finishRecoredCallBack)(NSString *data);/// 录音结束回调
-@property (nonatomic, copy)void (^aiMouseAddLogCallBack)(NSString *log);///输出日志
+//@property (nonatomic, copy)void (^aiMouseAddLogCallBack)(NSString *log);///输出日志
#pragma mark ------- 接口
// [self.hid close];
}
else{
+ [self.ble open];
[self.hid open];
}
};
- (void)begainMonitorAiMouseConnectStateDidChange:(NSString *)mouseName callBack:(void(^)(int connectType, BOOL connected))callBack{
self.aiMouseConnectStateDidChangeCallBack = callBack;
- [self.ble start];
+ [self.ble open];
[self.hid open];
}
///获取设备信息
/// 鉴权结果返回
/// - Parameter authState: 鉴权状态
-- (void)aiMouseAuthenticationResult:(AiMouseAuthState)authState{
- if(self.authCallBack )self.authCallBack(AiMouseAuthState_Success == authState);
+- (void)aiMouseAuthenticationResult:(BOOL)authState{
+ if(self.authCallBack )self.authCallBack(authState);
}
/// 设备信息数据回调,需要将此数据通过设备信息特征转发给蓝牙设备
}
#pragma mark - other
- (void)showLog:(NSString *)log{
- if (self.aiMouseAddLogCallBack) {
- self.aiMouseAddLogCallBack(log);
- }
+// if (self.aiMouseAddLogCallBack) {
+// self.aiMouseAddLogCallBack(log);
+// }
[LogManager log:log];
// NSLog(@"[AiMouseSdk]%@",log);
}
/// 匹配到设备回调
static void hidAppearDevice(void *inContext,IOReturn inResult,void *inSender,IOHIDDeviceRef inIOHIDDeviceRef) {
if ([DeviceManger shared].isConneted) {
- // [[HidManager shared] showLog:(@"当前处于连接状态,对监听到有USB 插入 的事件不做处理")];
+ [[HidManager shared] showLog:(@"当前处于连接状态,对监听到有USB 插入 的事件不做处理")];
return;
}
// 1ea7 0064
|| (vid == 0x1ea7 && pid == 0x0066)
|| (vid == 0x32c2 && pid == 0x0066)
){
- // 现在确认是这三款:sdsdsdsffg`
- // VID 0x1EA7 PID 0x0064
- // VID 0x1EA7 PID 0x0066
- // VID 0x32C2 PID 0x0066
-
[[HidManager shared] showLog:([NSString stringWithFormat:@"发现设备%@,pid = %d,vid = %d ,page = %d, usage = %d",inIOHIDDeviceRef,pid,vid,PrimaryUsagePage,PrimaryUsage])];
[HidManager shared].productType = AiMouseProductType_n;
[HidManager shared].deviceInfoCha = inIOHIDDeviceRef;
[[AiDeviceAuthManager shared] showHidAlert];
return;
}else{
- // CFRetain(inIOHIDDeviceRef);
- // IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
[HidManager shared].deviceInfoCha = inIOHIDDeviceRef;
[[HidManager shared] showLog:@"打开设备信息成功!"];
[[HidManager shared] showLog:[NSString stringWithFormat:@"打开设备voice失败! %d",result]];
[[AiDeviceAuthManager shared] showHidAlert];
return;
- return;
}else{
- // CFRetain(inIOHIDDeviceRef);
- // IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
[HidManager shared].voiceCha = inIOHIDDeviceRef;
[[HidManager shared] showLog:@"打开设备voice成功!"];
}
[self showLog:@"关闭hid"];
-
- // if (self.deviceInfoCha ) {
- // IOReturn result = IOHIDDeviceSetReport(self.deviceInfoCha, kIOHIDReportTypeInput, 0, NULL, 0);
- // if (result!= kIOReturnSuccess) {
- // [self showLog:(@"关闭deviceInfoCha 失败!")];
- // return;
- // }
- // }
- // if (self.voiceCha ) {
- // IOReturn result = IOHIDDeviceSetReport(self.voiceCha, kIOHIDReportTypeInput, 0, NULL, 0);
- // if (result!= kIOReturnSuccess) {
- // [self showLog:(@"关闭 voiceCha 失败!")];
- // return;
- // }
- // }
-
IOReturn ret = IOHIDManagerClose(self.hidManager, 0);
self.hidManager = nil;
return url_len;
}
-- (NSString *)dataToHexString:(NSData *)data {
- NSUInteger length = data.length;
- NSMutableString *result = [NSMutableString stringWithCapacity:length * 2];
- const unsigned char *byte = data.bytes;
- for (int i = 0; i < length; i++, byte++) {
- [result appendFormat:@"%02X", *byte];
- }
- return result;
-}
-
-
/// 获取对应属性值
static uint32_t IOHIDDevGetUInt32Property(IOHIDDeviceRef inIOHIDDeviceRef, CFStringRef inKey) {
uint32_t outValue = 0;
if (tCFTypeRef != NULL && (CFNumberGetTypeID() == CFGetTypeID(tCFTypeRef)) ) {
Boolean result = CFNumberGetValue((CFNumberRef) tCFTypeRef, kCFNumberSInt32Type, &outValue);
if (!result) {
- [[HidManager shared] showLog:[NSString stringWithFormat:@"(HidManager)IOHIDDevGetUInt32Property:get %@ failed.", inKey]];
+ [[HidManager shared] showLog:[NSString stringWithFormat:@"HidManager IOHIDDevGetUInt32Property:get %@ failed.", inKey]];
}
}
}
return outValue;
}
-
-
-
-//// 判断输入监控权限的方法
-//-(BOOL)checkInputMonitoringPermission{
-// AuthorizationRef authorizationRef;
-// OSStatus status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
-// if (status!= errAuthorizationSuccess) {
-// return NO;
-// }
-//
-// CFDictionaryRef query = CFDictionaryCreate(NULL,
-// (const void **)&kSecClass,
-// (const void **)&kSecClassGenericPassword,
-// (const void **)&kSecMatchLimit,
-// (const void **)&kSecMatchLimitOne,
-// (const void **)&kSecReturnAttributes,
-// (const void **)&kCFBooleanTrue,
-// (const void **)&kSecUseDataProtectionKeychain,
-// (const void **)&kCFBooleanFalse,
-// NULL);
-//
-// CFArrayRef resultArray = NULL;
-// status = SecItemCopyMatching(query, (CFTypeRef *)&resultArray);
-// CFRelease(query);
-//
-// if (status!= errSecSuccess) {
-// AuthorizationFree(authorizationRef, kAuthorizationFlagDestroyRights);
-// return NO;
-// }
-//
-// BOOL hasInputMonitoring = NO;
-// if (resultArray && CFArrayGetCount(resultArray) > 0) {
-// CFDictionaryRef itemDict = CFArrayGetValueAtIndex(resultArray, 0);
-// CFBooleanRef inputMonitoringValue = (CFBooleanRef)CFDictionaryGetValue(itemDict, CFSTR("kSecAttrCanAccessWhenUnlocked"));
-// if (inputMonitoringValue && CFBooleanGetValue(inputMonitoringValue)) {
-// hasInputMonitoring = YES;
-// }
-// }
-//
-// if (resultArray) {
-// CFRelease(resultArray);
-// }
-// AuthorizationFree(authorizationRef, kAuthorizationFlagDestroyRights);
-//
-// return hasInputMonitoring;
-//}
@end
- (void)timerAction{
if(self.timerCallBack) self.timerCallBack();
}
-
-
@end
--- /dev/null
+//
+// TlwConnectManager.h
+// AiMouseSdk
+//
+// Created by incar on 2024/5/28.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface AiConnectManager : NSObject
+@property (nonatomic, copy)void (^needSendToBleCallBack)(void);/// 发送给蓝牙设备
+@property (nonatomic, copy)void (^didDisConnectedCallBack)(void);/// 断开连接
+
+- (void)didConnected;
+@end
+
--- /dev/null
+//
+// TlwConnectManager.m
+// AiMouseSdk
+//
+// Created by incar on 2024/5/28.
+//
+
+#import "AiConnectManager.h"
+#import "LogManager.h"
+@interface AiConnectManager()
+@property (nonatomic, assign) NSInteger currentValue;//当前计数
+@property (nonatomic, assign) NSInteger times;//超时次数
+@property (nonatomic, strong) NSTimer *timer;
+@property (nonatomic, assign) int connecteState;//连接状态0未知,1连上,2断开连接
+@end
+
+@implementation AiConnectManager
+-(instancetype)init{
+ if (self = [super init]) {
+ self.connecteState = 0;
+ }
+ return self;
+}
+
+- (void)didConnected{
+// self.currentValue = 0;
+// self.times = 0;
+// self.connecteState = 1;
+//
+// [self removeSendTimer];
+// [self addSendTimer];
+}
+
+
+#pragma mark - timer
+- (void)addSendTimer{
+// dispatch_async(dispatch_queue_create("timeoutQueue", DISPATCH_QUEUE_SERIAL), ^{
+// self.timer = [NSTimer timerWithTimeInterval:2000 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
+// [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
+// [[NSRunLoop currentRunLoop] run];
+// });
+ self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
+ [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
+}
+
+- (void)removeSendTimer{
+ if (self.timer && [self.timer isValid]) {
+ [self.timer invalidate];
+ }
+}
+
+- (void)timerAction{
+ self.currentValue++;
+ [self showLog:[NSString stringWithFormat:@"times = %ld, currentValue = %ld",self.times,self.currentValue]];
+ if (self.times >= 3) {
+ [self showLog:@"连续超时3次,已断开连接。。。"];
+ if (self.didDisConnectedCallBack) {
+ self.didDisConnectedCallBack();
+ [self removeSendTimer];
+ }
+ return;
+ }
+
+ if (self.currentValue >= 3) {
+ self.times++;
+ self.currentValue = 0;
+ if (self.needSendToBleCallBack) {
+ self.needSendToBleCallBack();
+ }
+ }
+}
+
+- (void)showLog:(NSString *)log{
+ [LogManager log:log];
+}
+@end
+++ /dev/null
-//
-// TlwConnectManager.h
-// AiMouseSdk
-//
-// Created by incar on 2024/5/28.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-@class TlwConnectManager;
-@protocol TlwConnectManagerDelegate <NSObject>
-
-- (void)TlwConnectManager:(TlwConnectManager *)manager connectStateDidChange:(BOOL)connected;
-
-- (void)TlwConnectManagerReSendData:(TlwConnectManager *)manager;
-
-- (void)TlwConnectManager:(TlwConnectManager *)manager outputLog:(NSString *)log;
-
-@end
-@interface TlwConnectManager : NSObject
-@property (nonatomic, weak) id<TlwConnectManagerDelegate> delegate;
-
-- (void)start;
-
-//重置
-- (void)resetTimeOut;
-
-/// 增加超时
-- (void)addTimeOut;
-
-- (void)disConnected;
-@end
-
-NS_ASSUME_NONNULL_END
+++ /dev/null
-//
-// TlwConnectManager.m
-// AiMouseSdk
-//
-// Created by incar on 2024/5/28.
-//
-
-#import "TlwConnectManager.h"
-
-@interface TlwConnectManager()
-@property (nonatomic, assign) NSInteger currentValue;//当前计数
-@property (nonatomic, assign) NSInteger timeOut;//超时次数
-@property (nonatomic, strong) NSTimer *timer;
-@property (nonatomic, assign) int connecteState;//连接状态0未知,1连上,2断开连接
-@end
-
-@implementation TlwConnectManager
--(instancetype)init{
- if (self = [super init]) {
-
- }
- return self;
-}
-
-- (void)start{
- self.timeOut = 0;
- self.connecteState = 0;
-
- [self addSendTimer];
-}
-
-- (void)resetTimeOut{
- self.timeOut = 0;
- self.currentValue = 0;
-
- if (self.connecteState != 1) {
- [self showLog:@"连上设备。。。"];
- [self.delegate TlwConnectManager:self connectStateDidChange:true];
- }
- self.connecteState = 1;
-}
-
-- (void)addTimeOut{
- self.timeOut++;
-
- if (self.timeOut >= 3) {
- if (self.connecteState != 2) {
- [self showLog:@"设备断开连接!!!"];
- [self.delegate TlwConnectManager:self connectStateDidChange:false];
- }
- self.connecteState = 2;
- }
-}
-
-- (void)disConnected{
- [self showLog:@"设备断开连接!!!"];
- [self.delegate TlwConnectManager:self connectStateDidChange:false];
- self.connecteState = 2;
-}
-#pragma mark - timer
-- (void)addSendTimer{
- dispatch_async(dispatch_queue_create("timeoutQueue", DISPATCH_QUEUE_SERIAL), ^{
- self.timer = [NSTimer timerWithTimeInterval:1000 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
- [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
- [[NSRunLoop currentRunLoop] run];
- });
-// self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
-// [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
-}
-
-//- (void)removeSendTimer{
-// if (self.timer && [self.timer isValid]) {
-// [self.timer invalidate];
-// }
-//}
-
-- (void)timerAction{
- self.currentValue++;
-// [self showLog:[NSString stringWithFormat:@"time = %ld",self.currentValue]];
- if (self.currentValue >= 3) {
- self.currentValue = 0;
- if (self.delegate && [self.delegate respondsToSelector:@selector(TlwConnectManagerReSendData:)]) {
-// [self showLog:@"检查是否断开连接"];
- [self.delegate TlwConnectManagerReSendData:self];
- }
- }
-}
-
-- (void)showLog:(NSString *)log{
- if (self.delegate && [self.delegate respondsToSelector:@selector(TlwConnectManager:outputLog:)]) {
- [self.delegate TlwConnectManager:self outputLog:log];
- }
-}
-@end
@property (nonatomic, strong) NSString *mac;/// mac地址
@end
-/// 日志等级
-typedef NS_ENUM(NSInteger,TlwMouseLogLevel) {
- TlwMouseLogLevel_none = 0,
- TlwMouseLogLevel_error,
- TlwMouseLogLevel_info,
-};
-
@protocol TlwMouseDelegate <NSObject>
/// 设备连接状态
type = "0"
version = "2.0">
<Breakpoints>
- <BreakpointProxy
- BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
- <BreakpointContent
- uuid = "29992B05-B7B9-4589-B0E7-DBA20489906A"
- shouldBeEnabled = "No"
- ignoreCount = "0"
- continueAfterRunningActions = "No"
- filePath = "AiMouseSdk/Manager/BleManager.m"
- startingColumnNumber = "9223372036854775807"
- endingColumnNumber = "9223372036854775807"
- startingLineNumber = "207"
- endingLineNumber = "207"
- landmarkName = "-writeToDevice:"
- landmarkType = "7">
- </BreakpointContent>
- </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
self.deviceInfoLabel = label;
[self.view addSubview:label];
}
-
- {
- NSButton *btn = [[NSButton alloc]initWithFrame:NSMakeRect(50, self.view.bounds.size.height - 300, 100, 45)];
- btn.bordered = true;
- btn.title = @"字节";
- [btn setTarget:self];
- [btn setAction:@selector(byteDanceAction:)];
- btn.state = 1;
- [self.view addSubview:btn];
- }
}
#pragma mark - action
- (void)setupDeviceManger{
-// [AiHidManager shared];
DeviceManger *manager = [DeviceManger shared];
[manager initSdk:1];
manager.debugLevel = 1;
}
}];
}
-
-#pragma mark - byteDance
-- (void)byteDanceAction:(NSButton *)sender {
- NSMenu *popupMenu = [[NSMenu alloc] initWithTitle:@"Popup Menu"];
- NSMenuItem *item1 = [[NSMenuItem alloc] initWithTitle:@"鉴权" action:@selector(startAuth:) keyEquivalent:@"1"];
-// NSMenuItem *item2 = [[NSMenuItem alloc] initWithTitle:@"语音停止" action:@selector(voiceStop:) keyEquivalent:@"2"];
-// NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:@"设置DPI" action:@selector(setDPI:) keyEquivalent:@"3"];
-// NSMenuItem *item4 = [[NSMenuItem alloc] initWithTitle:@"鼠标状态查询" action:@selector(searchState:) keyEquivalent:@"4"];
-// NSMenuItem *item5 = [[NSMenuItem alloc] initWithTitle:@"设置滚轮开关" action:@selector(setUrlState:) keyEquivalent:@"5"];
-// NSMenuItem *item6 = [[NSMenuItem alloc] initWithTitle:@"获取滚轮开关" action:@selector(getUrlState:) keyEquivalent:@"6"];
-
- [popupMenu addItem:item1];
-// [popupMenu addItem:item2];
-// [popupMenu addItem:item3];
-// [popupMenu addItem:item4];
-// [popupMenu addItem:item5];
-// [popupMenu addItem:item6];
-
- NSPoint buttonLocation = [sender convertPoint:NSZeroPoint toView:self.view];
- [popupMenu popUpMenuPositioningItem:nil atLocation:buttonLocation inView:self.view];
-}
-
-- (void)startAuth:(NSMenuItem*)sender {
-// [[DeviceManger shared] startByteDanceAuth];
-}
-
-
@end
<key>Pods-MouseSdk.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
- <integer>2</integer>
+ <integer>4</integer>
</dict>
</dict>
</dict>