mirror of
https://github.com/DKJone/DKWechatHelper.git
synced 2025-05-23 10:49:58 +08:00
V1.0.5功能新增及bug修复
[v1.0.5] what's new * 新增好友关系检测 * 新增自动收取个人红包 * 修复集赞助手自定义评论时可能会发生闪退的BUG * 支持7.0.15 * 更新越狱包7.0.15 * 更新已注入助手的7.0.15未签名包 * 更新越狱源安装包
This commit is contained in:
parent
c1f35fec36
commit
6fe71e584e
|
@ -1,4 +1,13 @@
|
|||
# DKWechatHelper ChangeLog
|
||||
[v1.0.5](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4) / 2020-09-29
|
||||
what's new
|
||||
* 新增好友关系检测
|
||||
* 新增自动收取个人红包
|
||||
* 修复集赞助手自定义评论时可能会发生闪退的BUG
|
||||
* 支持7.0.15
|
||||
* 更新越狱包7.0.15
|
||||
* 更新已注入助手的7.0.15未签名包
|
||||
* 更新越狱源安装包
|
||||
[v1.0.4](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4) / 2020-07-07
|
||||
what's new
|
||||
* 新增集赞助手
|
||||
|
|
BIN
IMG_0223.png
BIN
IMG_0223.png
Binary file not shown.
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 531 KiB |
10
README.md
10
README.md
|
@ -2,6 +2,7 @@
|
|||
|
||||
不止于抢红包,功能丰富的微信插件。本软件已成功运行在(iphone7-iphone11、iPad)
|
||||
给个⭐️不迷路↗️
|
||||
[v1.0.5](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.5)适用微信7.0.14~7.0.15
|
||||
[v1.0.4](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4)适用微信7.0.14
|
||||
[v1.0.3](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.3)适用微信7.0.13
|
||||
[v1.0.2](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.2)适用微信7.0.11
|
||||
|
@ -26,6 +27,7 @@
|
|||
* [x] 小游戏作弊(剪刀石头布和掷骰子)
|
||||
* [x] CallKit锁屏接视频语音
|
||||
* [x] 集赞助手
|
||||
* [x] 好友关系检测
|
||||
|
||||
安装后在微信设置中点击“微信小助手”
|
||||
更多请查看下图:
|
||||
|
@ -41,6 +43,8 @@
|
|||
* [7.0.11-*提取码: 2igg*](https://pan.baidu.com/s/1mU_mezsWhqL2-AY0PB-vVg)
|
||||
* [7.0.13-*提取码: nx4m*](https://pan.baidu.com/s/1rqB0pV4zMEB6Z3VJTsTa8Q)
|
||||
* [7.0.14](https://n802.com/file/24576815-452231690)
|
||||
* [7.0.15](https://n802.com/file/24576815-463029595)
|
||||
|
||||
|
||||
将下载的微信放到'/dkhelper/dkhelper/TargetApp/'目录下该目录下有一个空白文件’put ipa or app here‘,和它放在同一文件夹下即可,修改项目BundleId及签名信息,选择真机设备运行即可
|
||||
|
||||
|
@ -49,7 +53,8 @@
|
|||
* [未签名版7.0.0](https://pan.baidu.com/s/1-zEUQRGn3H4bZVqHpyffzQ)
|
||||
* [未签名版7.0.11-*提取码: fe9f*](https://pan.baidu.com/s/1sOPCqnCPxSdIKq7TKuHK9g)
|
||||
* [未签名版7.0.13-*提取码: fhes*](https://pan.baidu.com/s/1DgSl5u0Gip3cNdqZmRFEWw)
|
||||
* [未签名版7.0.14](https://n802.com/file/24576815-452232682)
|
||||
* [未签名版7.0.14](https://n802.com/file/24576815-452232682)
|
||||
* [未签名版7.0.15](https://n802.com/file/24576815-463034104)
|
||||
注:推荐使用[ios-app-signer](https://github.com/DanTheMan827/ios-app-signer)签名,使用方法自行百度
|
||||
|
||||
3.普通用户:
|
||||
|
@ -57,8 +62,7 @@
|
|||
下载后使用 [Cydia Impactor](http://www.cydiaimpactor.com/)安装
|
||||
|
||||
4.越狱用户:
|
||||
[deb安装包地址 ](https://n802.com/file/24576815-452232684)
|
||||
或添加源`https://dkjone.github.io/`下载
|
||||
添加源`https://dkjone.github.io/`下载
|
||||
|
||||
|
||||
### 请我喝杯☕️
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1138B1C7251D9049008A6629 /* DKCleanFriendsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1138B1C5251D9049008A6629 /* DKCleanFriendsController.h */; };
|
||||
1138B1C8251D9049008A6629 /* DKCleanFriendsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1138B1C6251D9049008A6629 /* DKCleanFriendsController.m */; };
|
||||
114CCC2F21F817D500A4646E /* MDConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = 114CCC2E21F817D500A4646E /* MDConfig.plist */; };
|
||||
114CCC3921F817D500A4646E /* libdkhelperDylib.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 114CCC3821F817D500A4646E /* libdkhelperDylib.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
114CCC3E21F817D500A4646E /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 114CCC3D21F817D500A4646E /* JavaScriptCore.framework */; };
|
||||
|
@ -49,6 +51,8 @@
|
|||
114CCC9D21F831EB00A4646E /* DKHelperSettingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 114CCC9B21F831EA00A4646E /* DKHelperSettingController.h */; };
|
||||
114CCCA021F8323E00A4646E /* DKGroupFilterController.h in Headers */ = {isa = PBXBuildFile; fileRef = 114CCC9E21F8323D00A4646E /* DKGroupFilterController.h */; };
|
||||
114CCCA121F8323E00A4646E /* DKGroupFilterController.m in Sources */ = {isa = PBXBuildFile; fileRef = 114CCC9F21F8323D00A4646E /* DKGroupFilterController.m */; };
|
||||
11D27C9E25208FC800AE6337 /* NSArray+Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 11D27C9C25208FC800AE6337 /* NSArray+Utils.h */; };
|
||||
11D27C9F25208FC800AE6337 /* NSArray+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D27C9D25208FC800AE6337 /* NSArray+Utils.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
@ -75,12 +79,13 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1138B1C5251D9049008A6629 /* DKCleanFriendsController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DKCleanFriendsController.h; sourceTree = "<group>"; };
|
||||
1138B1C6251D9049008A6629 /* DKCleanFriendsController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DKCleanFriendsController.m; sourceTree = "<group>"; };
|
||||
114CCC2721F817D500A4646E /* dkhelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dkhelper.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
114CCC2A21F817D500A4646E /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
|
||||
114CCC2C21F817D500A4646E /* quick-resign.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "quick-resign.sh"; path = "Scripts/quick-resign.sh"; sourceTree = "<group>"; };
|
||||
114CCC2E21F817D500A4646E /* MDConfig.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = MDConfig.plist; path = Config/MDConfig.plist; sourceTree = "<group>"; };
|
||||
114CCC3121F817D500A4646E /* put ipa or app here */ = {isa = PBXFileReference; lastKnownFileType = text; name = "put ipa or app here"; path = "TargetApp/put ipa or app here"; sourceTree = "<group>"; };
|
||||
114CCC3221F817D500A4646E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
114CCC3821F817D500A4646E /* libdkhelperDylib.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libdkhelperDylib.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
114CCC3D21F817D500A4646E /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
114CCC3F21F817D500A4646E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
|
@ -125,6 +130,8 @@
|
|||
114CCC9B21F831EA00A4646E /* DKHelperSettingController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DKHelperSettingController.h; sourceTree = "<group>"; };
|
||||
114CCC9E21F8323D00A4646E /* DKGroupFilterController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DKGroupFilterController.h; sourceTree = "<group>"; };
|
||||
114CCC9F21F8323D00A4646E /* DKGroupFilterController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DKGroupFilterController.m; sourceTree = "<group>"; };
|
||||
11D27C9C25208FC800AE6337 /* NSArray+Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSArray+Utils.h"; sourceTree = "<group>"; };
|
||||
11D27C9D25208FC800AE6337 /* NSArray+Utils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Utils.m"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -171,7 +178,6 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
114CCC2A21F817D500A4646E /* icon.png */,
|
||||
114CCC3221F817D500A4646E /* Info.plist */,
|
||||
114CCC2B21F817D500A4646E /* Scripts */,
|
||||
114CCC2D21F817D500A4646E /* Config */,
|
||||
114CCC3021F817D500A4646E /* TargetApp */,
|
||||
|
@ -224,6 +230,8 @@
|
|||
114CCC9A21F831EA00A4646E /* DKHelperSettingController.m */,
|
||||
114CCC9E21F8323D00A4646E /* DKGroupFilterController.h */,
|
||||
114CCC9F21F8323D00A4646E /* DKGroupFilterController.m */,
|
||||
1138B1C5251D9049008A6629 /* DKCleanFriendsController.h */,
|
||||
1138B1C6251D9049008A6629 /* DKCleanFriendsController.m */,
|
||||
114CCC4421F817D500A4646E /* Logos */,
|
||||
114CCC4821F817D500A4646E /* Config */,
|
||||
114CCC5521F817D500A4646E /* Trace */,
|
||||
|
@ -317,6 +325,8 @@
|
|||
114CCC9721F831D400A4646E /* DKHelperConfig.m */,
|
||||
114CCC9221F831C200A4646E /* DKHelper.h */,
|
||||
114CCC9321F831C200A4646E /* DKHelper.m */,
|
||||
11D27C9C25208FC800AE6337 /* NSArray+Utils.h */,
|
||||
11D27C9D25208FC800AE6337 /* NSArray+Utils.m */,
|
||||
);
|
||||
path = MyUtils;
|
||||
sourceTree = "<group>";
|
||||
|
@ -348,12 +358,14 @@
|
|||
114CCC9421F831C200A4646E /* DKHelper.h in Headers */,
|
||||
114CCC9021F830D200A4646E /* WechatHeaders.h in Headers */,
|
||||
114CCC9D21F831EB00A4646E /* DKHelperSettingController.h in Headers */,
|
||||
11D27C9E25208FC800AE6337 /* NSArray+Utils.h in Headers */,
|
||||
114CCC8F21F830D200A4646E /* WCUIAlertView.h in Headers */,
|
||||
114CCC7B21F817D500A4646E /* fishhook.h in Headers */,
|
||||
114CCC6F21F817D500A4646E /* LLDBTools.h in Headers */,
|
||||
114CCC4A21F817D500A4646E /* MDConfigManager.h in Headers */,
|
||||
114CCC6921F817D500A4646E /* OCSelectorTrampolines.h in Headers */,
|
||||
114CCC9121F830D200A4646E /* UiUtil.h in Headers */,
|
||||
1138B1C7251D9049008A6629 /* DKCleanFriendsController.h in Headers */,
|
||||
114CCC6521F817D500A4646E /* OCMethodTrace.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -516,10 +528,12 @@
|
|||
114CCC5921F817D500A4646E /* a1a2-selectortramps-arm64.s in Sources */,
|
||||
114CCC5721F817D500A4646E /* a1a2-selectortramps-arm.s in Sources */,
|
||||
114CCC5D21F817D500A4646E /* a1a2-selectortramps-x86_64.s in Sources */,
|
||||
11D27C9F25208FC800AE6337 /* NSArray+Utils.m in Sources */,
|
||||
114CCC6721F817D500A4646E /* OCMethodTrace.m in Sources */,
|
||||
114CCC9921F831D400A4646E /* DKHelperConfig.m in Sources */,
|
||||
114CCC4C21F817D500A4646E /* MDConfigManager.m in Sources */,
|
||||
114CCC9C21F831EB00A4646E /* DKHelperSettingController.m in Sources */,
|
||||
1138B1C8251D9049008A6629 /* DKCleanFriendsController.m in Sources */,
|
||||
114CCC7921F817D500A4646E /* fishhook.c in Sources */,
|
||||
114CCC7621F817D500A4646E /* AntiAntiDebug.m in Sources */,
|
||||
114CCC6B21F817D500A4646E /* OCSelectorTrampolines.mm in Sources */,
|
||||
|
@ -790,11 +804,12 @@
|
|||
DEVELOPMENT_TEAM = NL54V6A3P5;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = dkhelper/Info.plist;
|
||||
MARKETING_VERSION = 7.0.14;
|
||||
MONKEYDEV_ADD_SUBSTRATE = YES;
|
||||
MONKEYDEV_CLASS_DUMP = NO;
|
||||
MONKEYDEV_DEFAULT_BUNDLEID = YES;
|
||||
MONKEYDEV_INSERT_DYLIB = YES;
|
||||
MONKEYDEV_RESTORE_SYMBOL = NO;
|
||||
MONKEYDEV_RESTORE_SYMBOL = YES;
|
||||
MONKEYDEV_TARGET_APP = Optional;
|
||||
PODS_CONFIGURATION_BUILD_DIR = "$BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||
PODS_ROOT = "${SRCROOT}/Pods";
|
||||
|
@ -811,11 +826,12 @@
|
|||
DEVELOPMENT_TEAM = NL54V6A3P5;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = dkhelper/Info.plist;
|
||||
MARKETING_VERSION = 7.0.14;
|
||||
MONKEYDEV_ADD_SUBSTRATE = YES;
|
||||
MONKEYDEV_CLASS_DUMP = NO;
|
||||
MONKEYDEV_DEFAULT_BUNDLEID = YES;
|
||||
MONKEYDEV_INSERT_DYLIB = YES;
|
||||
MONKEYDEV_RESTORE_SYMBOL = NO;
|
||||
MONKEYDEV_RESTORE_SYMBOL = YES;
|
||||
MONKEYDEV_TARGET_APP = Optional;
|
||||
PODS_CONFIGURATION_BUILD_DIR = "$BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||
PODS_ROOT = "${SRCROOT}/Pods";
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VariablesViewState
|
||||
version = "1.0">
|
||||
<ContextStates>
|
||||
<ContextState
|
||||
contextName = "+[DKHelperConfig methodSignatureForSelector:]:DKHelperConfig.m">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "-[DKCleanFriendsController initWithContactList:]:DKCleanFriendsController.m">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "-[DKCleanFriendsController onDone:]:DKCleanFriendsController.m">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "self.selectView.m_dicMultiSelect">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "__45-[DKHelperSettingController testCreateGroupe]_block_invoke.469:DKHelperSettingController.m">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "DKHelper.shared.checkFriendGroup">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "+[DKHelper commentUSers]:DKHelper.m">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "[DKHelper shared]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "__24+[DKHelper commentUSers]_block_invoke:DKHelper.m">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "_logos_method$_ungrouped$CContactMgr$getContactList$contactType$(CContactMgr*, objc_selector*, unsigned int, unsigned int):dkhelperDylib.xm">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "[DKHelper shared]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
</ContextStates>
|
||||
</VariablesViewState>
|
|
@ -130,28 +130,28 @@
|
|||
</dict>
|
||||
<key>USER_CLASS_LIST</key>
|
||||
<dict>
|
||||
<key>ScanQRCodeLogicController1</key>
|
||||
<key>CContactMgr1</key>
|
||||
<dict>
|
||||
<key>TraceMode</key>
|
||||
<integer>1</integer>
|
||||
<key>TraceFlag</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>CMessageMgr</key>
|
||||
<key>ContactSelectView1</key>
|
||||
<dict>
|
||||
<key>TraceMode</key>
|
||||
<integer>1</integer>
|
||||
<key>TraceFlag</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>PhotoViewController</key>
|
||||
<key>CMessageMgr1</key>
|
||||
<dict>
|
||||
<key>TraceMode</key>
|
||||
<integer>1</integer>
|
||||
<key>TraceFlag</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>NewQRCodeScanner1</key>
|
||||
<key>CGroupMgr1</key>
|
||||
<dict>
|
||||
<key>TraceFlag</key>
|
||||
<integer>1</integer>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>18E226</string>
|
||||
<string>19F101</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>zh_CN</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
|
@ -152,7 +152,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>7.0.14</string>
|
||||
<string>7.0.15</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
|
@ -177,29 +177,30 @@
|
|||
<string>prefs</string>
|
||||
<string>wx703</string>
|
||||
<string>weixinULAPI</string>
|
||||
<string>wx7015</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>7.0.14.32</string>
|
||||
<string>7.0.15.33</string>
|
||||
<key>DTAppStoreToolsBuild</key>
|
||||
<string>11E608a</string>
|
||||
<string>11E707</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>17B102</string>
|
||||
<string>17F65</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>13.2</string>
|
||||
<string>13.5</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17B102</string>
|
||||
<string>17F65</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>iphoneos13.2</string>
|
||||
<string>iphoneos13.5</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1130</string>
|
||||
<string>1150</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>11C29</string>
|
||||
<string>11E608c</string>
|
||||
<key>FacebookAppID</key>
|
||||
<string>290293790992170</string>
|
||||
<key>FacebookAutoInitEnabled</key>
|
||||
|
@ -347,14 +348,6 @@
|
|||
<true/>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleBlackOpaque</string>
|
||||
<key>UISupportedDevices</key>
|
||||
<array>
|
||||
<string>iPhone10,1</string>
|
||||
<string>iPhone10,4</string>
|
||||
<string>iPhone12,8</string>
|
||||
<string>iPhone9,1</string>
|
||||
<string>iPhone9,3</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
|
@ -373,22 +366,22 @@
|
|||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<true/>
|
||||
<key>WeChatBundleVersion</key>
|
||||
<string>7.0.14.32</string>
|
||||
<string>7.0.15.33</string>
|
||||
<key>WeChatFeatureIdentifier</key>
|
||||
<string>release_appstore_7.0.14</string>
|
||||
<string>release_appstore_7.0.15</string>
|
||||
<key>build_time</key>
|
||||
<string>2020-06-25 03:12:11</string>
|
||||
<string>2020-08-03 23:07:27</string>
|
||||
<key>by</key>
|
||||
<string>wx_ios_code_helper</string>
|
||||
<key>path</key>
|
||||
<string>release_appstore_7.0.14_2020_6_16_19_17_20</string>
|
||||
<string>release_appstore_7.0.15_2020_7_30_23_1_0</string>
|
||||
<key>rev</key>
|
||||
<string>485ff919d927a0ca67ac8c4b324f1de02ae0283b</string>
|
||||
<string>8a2d4b8b37a11de738ace1ec126991085c057907</string>
|
||||
<key>tag</key>
|
||||
<string>release_appstore_7.0.14 #28</string>
|
||||
<string>release_appstore_7.0.15 #29</string>
|
||||
<key>uuid</key>
|
||||
<string>3a1d03886bdb350c870680e3d15aa7c7</string>
|
||||
<string>2ccd1b78fb963cb1af6f0e1ec2864066</string>
|
||||
<key>ver</key>
|
||||
<string>0x17000e20</string>
|
||||
<string>0x17000f21</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
25
dkhelper/dkhelperDylib/DKCleanFriendsController.h
Normal file
25
dkhelper/dkhelperDylib/DKCleanFriendsController.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
// DKCleanFriendsController.h
|
||||
// dkhelperDylib
|
||||
// Created by DKJone on 2020/9/25
|
||||
// Copyright © 2020 DKJone. All rights reserved.
|
||||
//
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "DKHelper.h"
|
||||
|
||||
@interface DKCleanFriendsController : UIViewController
|
||||
- (instancetype)initWithContactList:(NSArray *)contactList contactDesc:(NSString *)contactDesc;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
182
dkhelper/dkhelperDylib/DKCleanFriendsController.m
Normal file
182
dkhelper/dkhelperDylib/DKCleanFriendsController.m
Normal file
|
@ -0,0 +1,182 @@
|
|||
// DKCleanFriendsController.m
|
||||
// dkhelperDylib
|
||||
// Created by DKJone on 2020/9/25
|
||||
// Copyright © 2020 DKJone. All rights reserved.
|
||||
//
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
//
|
||||
|
||||
#import "DKCleanFriendsController.h"
|
||||
#import <objc/objc-runtime.h>
|
||||
#import "MMUICommonUtil.h"
|
||||
#import "DKHelperSettingController.h"
|
||||
@interface DKCleanFriendsController()<ContactSelectViewDelegate>{
|
||||
MMUIViewController *helper;
|
||||
}
|
||||
|
||||
@property (strong, nonatomic) ContactSelectView *selectView;
|
||||
@property (nonatomic,copy)NSString * contactDesc;
|
||||
@property (strong, nonatomic) NSArray<CContact *> *contactList;
|
||||
@end
|
||||
|
||||
@implementation DKCleanFriendsController
|
||||
|
||||
- (instancetype)initWithContactList:(NSArray *)contactList contactDesc:(NSString *)contactDesc{
|
||||
if (self = [super initWithNibName:nil bundle:nil]) {
|
||||
_contactList = contactList;
|
||||
_contactDesc = contactDesc;
|
||||
helper = [[objc_getClass("MMUIViewController") alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.view.backgroundColor = [DKHelper backgroundColor];
|
||||
[self initTitleArea];
|
||||
[self initSelectView];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
for (CContact *contact in self.contactList) {
|
||||
[self.selectView addSelect:contact];
|
||||
}
|
||||
for (CContact *contact in DKHelper.shared.validFriends) {
|
||||
[self.selectView removeSelect:contact];
|
||||
}
|
||||
[self onSelectContact: nil];
|
||||
}
|
||||
- (void)viewDidAppear:(BOOL)animated{
|
||||
[super viewDidAppear:animated];
|
||||
NSString *alertTitle = [NSString stringWithFormat:@"已帮您自动选择(%@)的好友",self.contactDesc];
|
||||
[DKHelper showAlertWithTitle:alertTitle
|
||||
message:@"双向好友已自动设为不可编辑,您无法取消双向好友的选中状态,删除时也不会删除双向好友!"
|
||||
btnTitle:@"我知道了" handler:^(UIButton *sender) {}];
|
||||
}
|
||||
|
||||
- (void)initTitleArea {
|
||||
self.navigationItem.leftBarButtonItem = [objc_getClass("MMUICommonUtil") getBarButtonWithTitle:@"取消" target:self action:@selector(onCancel:) style:0];
|
||||
self.navigationItem.rightBarButtonItem = [self rightBarButtonWithSelectCount:self.contactList.count];
|
||||
self.title = @"选择需要删除的好友";
|
||||
[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:18.0]}];
|
||||
}
|
||||
|
||||
- (UIBarButtonItem *)rightBarButtonWithSelectCount:(unsigned long)selectCount {
|
||||
|
||||
UIBarButtonItem *barButtonItem;
|
||||
if (selectCount == 0) {
|
||||
barButtonItem = [objc_getClass("MMUICommonUtil") getBarButtonWithTitle:@"确定" target:self action:@selector(onDone:) style:1];
|
||||
} else {
|
||||
NSString *title = [NSString stringWithFormat:@"删除(%lu)", selectCount];
|
||||
barButtonItem = [objc_getClass("MMUICommonUtil") getBarButtonWithTitle:title target:self action:@selector(onDone:) style:4];
|
||||
}
|
||||
return barButtonItem;
|
||||
}
|
||||
|
||||
- (void)onCancel:(UIBarButtonItem *)item {
|
||||
[self.navigationController popViewControllerAnimated:true];
|
||||
}
|
||||
|
||||
- (void)onDone:(UIBarButtonItem *)item {
|
||||
NSArray<NSString *> *contactNameList = [[self.selectView.m_dicMultiSelect allKeys] copy];
|
||||
NSArray<CContact *> *contactList = [[DKHelper allFriends] _filter:^BOOL(CContact* obj) {
|
||||
return [contactNameList containsObject: obj.m_nsUsrName];
|
||||
}];
|
||||
NSArray<NSString*> *nikNames = [contactList _map:^id(CContact* obj) {
|
||||
return obj.m_nsRemark.length ? obj.m_nsRemark : obj.m_nsNickName;
|
||||
}];
|
||||
WS(weakSelf)
|
||||
[DKHelper showAlertWithTitle:@"删除以下好友" message:[nikNames componentsJoinedByString:@"\n"] btnTitle:@"确定" handler:^(UIButton *sender) {
|
||||
[weakSelf deleteFriends:contactList];
|
||||
} btnTitle:@"我再想想" handler:^(UIButton *sender) {}];
|
||||
}
|
||||
|
||||
|
||||
-(void)deleteFriends:(NSArray *)contactList {
|
||||
CContactMgr * contactMgr =[[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CContactMgr") class]];
|
||||
MMNewSessionMgr * sm =[[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("MMNewSessionMgr") class]];
|
||||
for (CContact *contact in contactList) {
|
||||
[contactMgr deleteContact:contact listType:2];
|
||||
[contactMgr deleteContactLocal:contact listType:1];
|
||||
[contactMgr getContactList:1 contactType:0];
|
||||
unsigned int idx = [sm getSessionIndexOfUser:contact.m_nsUsrName];
|
||||
if (idx != (unsigned int)(NSNotFound)){
|
||||
[sm deleteSessionAtIndex:idx forceDelete:false];
|
||||
}
|
||||
NSLog(@"删除成功");
|
||||
}
|
||||
|
||||
NSInteger notFriendCount = DKHelper.shared.notFriends.count;
|
||||
NSInteger invalidFriendCount = DKHelper.shared.invalidFriends.count;
|
||||
if (notFriendCount != contactList.count &&
|
||||
invalidFriendCount != contactList.count &&
|
||||
notFriendCount + invalidFriendCount != contactList.count){
|
||||
[self.navigationController popViewControllerAnimated:true];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[DKHelper showAlertWithTitle:@"删除成功" message:@"有些人,\n就算分隔千里,\n就算不再联系,\n就算岁月流逝他们渐渐遗忘在我们记忆深处,\n就算不能陪我们走完人生旅途的那些人,\n他们不是过客。\n他们是\n我们最美好的曾经..." btnTitle:@"说的好!领赏去吧" handler:^(UIButton *sender) {
|
||||
UIViewController *vc = [DKHelper.navigationContrioller topViewController];
|
||||
if ([vc isKindOfClass:DKHelperSettingController.class]){
|
||||
[(DKHelperSettingController *)vc payForMe];
|
||||
}
|
||||
} btnTitle:@"跟鬼屎一样,不存在的!" handler:^(UIButton *sender) { }];
|
||||
});
|
||||
}else{
|
||||
[DKHelper showAlertWithTitle:@"删除成功"
|
||||
message:[NSString stringWithFormat: @"已成功删除%d名好友",contactList.count]
|
||||
btnTitle:@"确定" handler:^(UIButton *sender) { }];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)initSelectView {
|
||||
self.selectView = [[objc_getClass("ContactSelectView") alloc] initWithFrame:[DKHelper viewFrame] delegate:self];
|
||||
|
||||
NSMutableArray *dic = @{}.mutableCopy;
|
||||
for (CContact *contact in DKHelper.shared.validFriends) {
|
||||
[dic setValue:contact forKey:contact.m_nsUsrName];
|
||||
}
|
||||
[self.selectView setM_dicExistContact:dic];
|
||||
|
||||
|
||||
self.selectView.m_uiGroupScene = 14;
|
||||
self.selectView.m_bMultiSelect = YES;
|
||||
[self.selectView initData:2];
|
||||
self.selectView.m_bShowHistoryGroup = false;
|
||||
self.selectView.m_bShowRadarCreateRoom = false;
|
||||
|
||||
[self.selectView initView];
|
||||
|
||||
[self.view addSubview:self.selectView];
|
||||
}
|
||||
|
||||
#pragma mark - ContactSelectViewDelegate
|
||||
- (void)onSelectContact:(CContact *)arg1 {
|
||||
self.navigationItem.rightBarButtonItem = [self rightBarButtonWithSelectCount:[self getTotalSelectCount]];
|
||||
}
|
||||
|
||||
- (unsigned long)getTotalSelectCount {
|
||||
return (unsigned long)[self.selectView.m_dicMultiSelect count];
|
||||
|
||||
}
|
||||
|
||||
- (UIViewController *)getViewController{
|
||||
return self;
|
||||
}
|
||||
|
||||
// 没法设置父类,设置消息转发已调用相关类方法
|
||||
- (MMUIViewController *) forwardingTargetForSelector:(SEL)aSelector {
|
||||
if ([helper respondsToSelector:aSelector]) {
|
||||
return helper;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
|
@ -10,7 +10,7 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface DKHelperSettingController : UIViewController
|
||||
|
||||
- (void)payForMe;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -10,10 +10,12 @@
|
|||
#import <objc/objc-runtime.h>
|
||||
#import "DKHelper.h"
|
||||
#import "DKGroupFilterController.h"
|
||||
|
||||
#import "DKCleanFriendsController.h"
|
||||
#import <NotificationCenter/NotificationCenter.h>
|
||||
@interface DKHelperSettingController ()<MultiSelectGroupsViewControllerDelegate>{
|
||||
WCTableViewManager * manager;
|
||||
MMUIViewController *helper;
|
||||
MMLoadingView *m_MMLoadingView;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -24,8 +26,27 @@
|
|||
if (self = [super init]) {
|
||||
helper = [[objc_getClass("MMUIViewController") alloc] init];
|
||||
}
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(checkFriendsEnd:) name:@"checkFriendsEnd" object:nil];
|
||||
m_MMLoadingView = [[NSClassFromString(@"MMLoadingView") alloc] init];
|
||||
return self;
|
||||
}
|
||||
- (void)dealloc
|
||||
{
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)checkFriendsEnd:(NSNotification *)notify{
|
||||
|
||||
Boolean isSuccess = notify.userInfo[@"success"];
|
||||
if (isSuccess){
|
||||
[m_MMLoadingView stopLoadingAndShowOK];
|
||||
[self reloadTableData];
|
||||
CGPoint bottomOffset = CGPointMake(0, manager.tableView.contentSize.height - manager.tableView.bounds.size.height + manager.tableView.contentInset.bottom);
|
||||
[manager.tableView setContentOffset:bottomOffset animated:YES];
|
||||
}else{
|
||||
[m_MMLoadingView stopLoadingAndShowError:@"检测失败"];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
@ -35,6 +56,8 @@
|
|||
[manager addTableViewToSuperView:self.view];
|
||||
manager.tableView.frame = tableFrame;
|
||||
self.view.backgroundColor = [DKHelper backgroundColor];
|
||||
[m_MMLoadingView setLabelText:@"正在检测..."];
|
||||
[self.view addSubview:m_MMLoadingView];
|
||||
[self reloadTableData];
|
||||
self.navigationItem.leftBarButtonItem = [DKHelper leftNavigationItem];
|
||||
|
||||
|
@ -66,6 +89,8 @@
|
|||
//后台抢红包
|
||||
WCTableViewCellManager *redEnvelopBackGroundCell = [DKHelper switchCellWithSel:@selector(autoEnveloBackGround:) target:self title:@"锁屏及后台抢红包" switchOn:[DKHelperConfig redEnvelopBackGround]];
|
||||
[redEnvelopSection addCell:redEnvelopBackGroundCell];
|
||||
WCTableViewCellManager *personalRedEnvelopEnableCell = [DKHelper switchCellWithSel:@selector(personalRedEnvelopEnableChange:) target:self title:@"接收个人红包" switchOn:[DKHelperConfig personalRedEnvelopEnable]];
|
||||
[redEnvelopSection addCell:personalRedEnvelopEnableCell];
|
||||
//延迟抢红包
|
||||
NSString *delay = @"不延迟";
|
||||
if ([DKHelperConfig redEnvelopDelay] > 0){
|
||||
|
@ -153,9 +178,37 @@
|
|||
[commentsCell addUserInfoValue:@2 forKey:@"type"];
|
||||
}
|
||||
|
||||
//MARK: 好友检测
|
||||
WCTableViewSectionManager *clearFriendsSection = [DKHelper sectionManage];
|
||||
clearFriendsSection.headerTitle = @"好友关系检测";
|
||||
[manager addSection:clearFriendsSection];
|
||||
|
||||
DKHelperConfig.cleanFriendsEnable = DKHelper.shared.validFriends.count + DKHelper.shared.notFriends.count > 0;
|
||||
WCTableViewCellManager *cleanFriendCell = [DKHelper switchCellWithSel:@selector(cleanFriends:) target:self title:@"检测好友关系" switchOn:[DKHelperConfig cleanFriendsEnable]];
|
||||
[clearFriendsSection addCell:cleanFriendCell];
|
||||
if (DKHelperConfig.cleanFriendsEnable){
|
||||
NSString * notFriendCount = [NSString stringWithFormat:@"共%lu人",(unsigned long)DKHelper.shared.notFriends.count];
|
||||
WCTableViewNormalCellManager *notFriendCountCell = [DKHelper cellWithSel:@selector(showSelectContactVC:) target:self title:@"已将你删除" rightValue:notFriendCount accessoryType:1];
|
||||
[notFriendCountCell addUserInfoValue:@0 forKey:@"type"];
|
||||
[clearFriendsSection addCell:notFriendCountCell];
|
||||
|
||||
NSString * invalidFriendsCount = [NSString stringWithFormat:@"共%lu人",(unsigned long)DKHelper.shared.invalidFriends.count];
|
||||
WCTableViewNormalCellManager *invalidFriendsCell = [DKHelper cellWithSel:@selector(showSelectContactVC:) target:self title:@"账号被封禁" rightValue:invalidFriendsCount accessoryType:1];
|
||||
[invalidFriendsCell addUserInfoValue:@1 forKey:@"type"];
|
||||
[clearFriendsSection addCell:invalidFriendsCell];
|
||||
}
|
||||
|
||||
[manager.tableView reloadData];
|
||||
|
||||
}
|
||||
|
||||
- (void)showSelectContactVC:(WCTableViewNormalCellManager *)sender{
|
||||
NSNumber * type = [sender getUserInfoValueForKey:@"type"];
|
||||
//1:被封账号 , 0:已将你删除
|
||||
NSArray *contactList = [type isEqual:@1] ? DKHelper.shared.invalidFriends : DKHelper.shared.notFriends;
|
||||
NSString *contactDesc = [type isEqual:@1] ? @"账号被封" :@"已将你删除";
|
||||
DKCleanFriendsController *vc = [[DKCleanFriendsController alloc] initWithContactList:contactList contactDesc:contactDesc];
|
||||
[self.navigationController pushViewController:vc animated:true ];
|
||||
}
|
||||
|
||||
- (void)likeCommentEnable:(UISwitch *)sender{
|
||||
|
@ -168,6 +221,7 @@
|
|||
handler:^(UIButton *sender) { }];
|
||||
}
|
||||
[self reloadTableData];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -176,6 +230,27 @@
|
|||
[self reloadTableData];
|
||||
}
|
||||
|
||||
- (void)personalRedEnvelopEnableChange:(UISwitch *)sender{
|
||||
DKHelperConfig.personalRedEnvelopEnable = sender.isOn;
|
||||
[self reloadTableData];
|
||||
}
|
||||
|
||||
- (void)cleanFriends:(UISwitch *)sender{
|
||||
if (!sender.isOn){
|
||||
DKHelperConfig.cleanFriendsEnable = false;
|
||||
return;
|
||||
}
|
||||
__block UISwitch *s = sender;
|
||||
WS(weakSelf)
|
||||
[DKHelper showAlertWithTitle:@"重要提示" message:@"好友关系检测会新建一个包含您所有好友的群组,检测完成后会帮您自动删除,正常情况下您的好友不会收到任何消息。部分好友可能会收到进群邀请!(会自动帮您撤回该邀请信息)如果你想排除某些好友不做检测,请先将其添加到黑名单,待检测完成再将其从黑名单的移除!" btnTitle:@"开始检测" handler:^(UIButton *sender) {
|
||||
DKHelperConfig.cleanFriendsEnable = true;
|
||||
[weakSelf createCheckGroupe];
|
||||
} btnTitle:@"取消" handler:^(UIButton *sender) {
|
||||
s.on = false;
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
- (void)revokeIntercept:(UISwitch *)sender{
|
||||
DKHelperConfig.preventRevoke = sender.isOn;
|
||||
}
|
||||
|
@ -202,7 +277,7 @@
|
|||
- (void)showLikeCommentInput:(WCTableViewNormalCellManager *)sender{
|
||||
NSNumber * type = [sender getUserInfoValueForKey:@"type"];
|
||||
NSString * str = @[[NSString stringWithFormat:@"%d",DKHelperConfig.likeCount.intValue],
|
||||
[NSString stringWithFormat:@"%d",DKHelperConfig.comments.intValue],
|
||||
[NSString stringWithFormat:@"%d",DKHelperConfig.commentCount.intValue],
|
||||
[NSString stringWithFormat:@"%@",DKHelperConfig.comments]][type.intValue];
|
||||
NSString * title = @[@"输入点赞数",@"输入评论数",@"输入评论"][type.intValue];
|
||||
NSString * msg = @[@"实际点赞数最大为您的好友个数",
|
||||
|
@ -351,4 +426,37 @@
|
|||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)createCheckGroupe{
|
||||
[m_MMLoadingView startLoading];
|
||||
BOOL canCreateGroup = [objc_getClass("CGroupMgr") isSupportOpenIMGroup];
|
||||
if (!canCreateGroup) {
|
||||
[DKHelper showAlertWithTitle:@"检测失败" message:@"您当前无法创建群聊!" btnTitle:@"确定" handler:^(UIButton *sender) {
|
||||
NSLog(@"检测失败 - 无法创建群聊");
|
||||
}];
|
||||
}else{
|
||||
CGroupMgr *groupMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CGroupMgr") class]];
|
||||
DKHelper.shared.checkFriendsEnd = false;
|
||||
NSMutableArray<GroupMember *> * groupMembers = @[].mutableCopy;
|
||||
[DKHelper.allFriends enumerateObjectsUsingBlock:^(CContact *obj, NSUInteger idx, BOOL *stop) {
|
||||
if ([obj.m_nsUsrName containsString:@"@openim"] ){
|
||||
|
||||
}else{
|
||||
GroupMember *gm = [[objc_getClass("GroupMember") alloc] init];
|
||||
gm.m_nsMemberName = obj.m_nsUsrName;
|
||||
[groupMembers addObject:gm];
|
||||
}
|
||||
}];
|
||||
[DKHelper.shared setCheckNotify];
|
||||
[groupMgr CreateGroup:@"DKWechatHelper-friendsCheck" withMemberList:groupMembers];
|
||||
|
||||
// 设置超时时间,超过10秒,不在检测
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW , 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
|
||||
if (!DKHelper.shared.checkFriendsEnd) {
|
||||
[DKHelper endCheck];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,14 @@
|
|||
// Created by 朱德坤 on 2019/1/22.
|
||||
// Copyright © 2019 DKJone. All rights reserved.
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
// 更新微信版本删除dkhelper/info.plist 重新运行版本号就会更新
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "DKHelper.h"
|
||||
#import "DKHelperSettingController.h"
|
||||
|
@ -131,6 +142,18 @@
|
|||
|
||||
switch(wrap.m_uiMessageType) {
|
||||
case 49: { // AppNode
|
||||
CContactMgr *contactManager = [[%c(MMServiceCenter) defaultCenter] getService:[%c(CContactMgr) class]];
|
||||
CContact *selfContact = [contactManager getSelfContact];
|
||||
BOOL (^isSender)() = ^BOOL() {
|
||||
return [wrap.m_nsFromUsr isEqualToString:selfContact.m_nsUsrName];
|
||||
};
|
||||
|
||||
if (!DKHelper.shared.checkFriendsEnd && isSender()){
|
||||
[self RevokeMsg:wrap.m_nsToUsr MsgWrap:wrap Counter:0];
|
||||
NSMutableArray *validArr = DKHelper.shared.validFriends.mutableCopy;
|
||||
[validArr addObject:[contactManager getContactByName:wrap.m_nsToUsr]];
|
||||
DKHelper.shared.validFriends = validArr.copy;
|
||||
}
|
||||
|
||||
/** 是否为红包消息 */
|
||||
BOOL (^isRedEnvelopMessage)() = ^BOOL() {
|
||||
|
@ -138,13 +161,6 @@
|
|||
};
|
||||
|
||||
if (isRedEnvelopMessage()) { // 红包
|
||||
CContactMgr *contactManager = [[%c(MMServiceCenter) defaultCenter] getService:[%c(CContactMgr) class]];
|
||||
CContact *selfContact = [contactManager getSelfContact];
|
||||
|
||||
BOOL (^isSender)() = ^BOOL() {
|
||||
return [wrap.m_nsFromUsr isEqualToString:selfContact.m_nsUsrName];
|
||||
};
|
||||
|
||||
/** 是否别人在群聊中发消息 */
|
||||
BOOL (^isGroupReceiver)() = ^BOOL() {
|
||||
return [wrap.m_nsFromUsr rangeOfString:@"@chatroom"].location != NSNotFound;
|
||||
|
@ -186,8 +202,9 @@
|
|||
if (!DKHelperConfig.autoRedEnvelop) { return NO; }
|
||||
if (isGroupInBlackList()) { return NO; }
|
||||
if (isContaintKeyWords()) { return NO; }
|
||||
|
||||
return isGroupReceiver() || (isGroupSender() && isReceiveSelfRedEnvelop());
|
||||
return isGroupReceiver() ||
|
||||
(isGroupSender() && isReceiveSelfRedEnvelop()) ||
|
||||
(!isGroupReceiver() && DKHelperConfig.personalRedEnvelopEnable);
|
||||
};
|
||||
|
||||
NSDictionary *(^parseNativeUrl)(NSString *nativeUrl) = ^(NSString *nativeUrl) {
|
||||
|
@ -385,5 +402,39 @@
|
|||
}
|
||||
%end
|
||||
|
||||
%hook CGroupMgr
|
||||
|
||||
// 需要验证
|
||||
- (void)addChatMemberNeedVerifyMsg:(id)arg1 ContactList:(id)arg2{
|
||||
%orig(arg1,arg2);
|
||||
if (!DKHelper.shared.checkFriendsEnd){
|
||||
DKHelper.shared.groupContact = arg1;
|
||||
DKHelper.shared.notFriends = [arg2 allValues];
|
||||
dispatch_group_leave(DKHelper.shared.checkFriendGroup);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)addCreateMsg:(id)arg1 ContactList:(id)arg2{
|
||||
%orig(arg1,arg2);
|
||||
if (!DKHelper.shared.checkFriendsEnd){
|
||||
DKHelper.shared.groupContact = arg1;
|
||||
NSMutableArray *validArr = DKHelper.shared.validFriends.mutableCopy;
|
||||
[validArr addObjectsFromArray:arg2];
|
||||
DKHelper.shared.validFriends = validArr.copy;
|
||||
dispatch_group_leave(DKHelper.shared.checkFriendGroup);
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
%hook CContact
|
||||
- (BOOL)isEqual:(CContact *)other
|
||||
{
|
||||
return [other.m_nsUsrName isEqual: self.m_nsUsrName];
|
||||
}
|
||||
%end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -15,11 +15,16 @@
|
|||
#import "WCUIAlertView.h"
|
||||
#import "DKHelperConfig.h"
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "NSArray+Utils.h"
|
||||
|
||||
//MARK: - quick objc finds
|
||||
#define FUiUtil objc_getClass("UiUtil")
|
||||
#define FMMUICommonUtil objc_getClass("MMUICommonUtil")
|
||||
#define FWCTableViewCellManager objc_getClass("WCTableViewNormalCellManager")
|
||||
#define WK(object) autoreleasepool{} __weak typeof(object) weak##object = object
|
||||
#define ST(object) autoreleasepool{} __strong typeof(object) object = weak##object
|
||||
#define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
|
||||
|
||||
|
||||
|
||||
typedef void(^BtnBlock)(UIButton *sender);
|
||||
|
@ -27,6 +32,25 @@ typedef void(^BtnBlock)(UIButton *sender);
|
|||
|
||||
@interface DKHelper : NSObject
|
||||
|
||||
/// 好友关系是否检测完毕
|
||||
@property (nonatomic,assign)BOOL checkFriendsEnd;
|
||||
/// 已将你删除的好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *notFriends;
|
||||
/// 账号被封的好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *invalidFriends;
|
||||
/// 相互好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *validFriends;
|
||||
/// 检测好友状态的群组
|
||||
@property (nonatomic,strong)CContact *groupContact;
|
||||
|
||||
@property (nonatomic,strong)dispatch_group_t checkFriendGroup;
|
||||
|
||||
/// 结束好友检测
|
||||
+ (void)endCheck;
|
||||
|
||||
- (void)setCheckNotify;
|
||||
|
||||
+ (instancetype)shared ;
|
||||
/// 所有好友(不包含公众号)
|
||||
+ (NSArray<CContact*> *)allFriends;
|
||||
|
||||
|
|
|
@ -21,11 +21,69 @@
|
|||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
helper = [[DKHelper alloc] init];
|
||||
helper.checkFriendsEnd = true;
|
||||
});
|
||||
return helper;
|
||||
}
|
||||
|
||||
|
||||
- (void)setCheckNotify{
|
||||
self.checkFriendGroup = dispatch_group_create();
|
||||
DKHelper.shared.invalidFriends = @[];
|
||||
DKHelper.shared.validFriends = @[];
|
||||
DKHelper.shared.notFriends = @[];
|
||||
dispatch_group_enter(DKHelper.shared.checkFriendGroup);
|
||||
dispatch_group_enter(DKHelper.shared.checkFriendGroup);
|
||||
|
||||
dispatch_group_notify(self.checkFriendGroup, dispatch_get_main_queue(), ^{
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[DKHelper endCheck];
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
+ (void)endCheck{
|
||||
DKHelper.shared.checkFriendsEnd = true;
|
||||
CContactMgr *contactMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CContactMgr") class]];
|
||||
if (DKHelper.shared.validFriends.count + DKHelper.shared.notFriends.count > 0) {
|
||||
///检测完成了
|
||||
DKHelper.shared.notFriends = [DKHelper.shared.notFriends _filter:^BOOL(id obj) {
|
||||
return ![[[contactMgr getSelfContact] m_nsUsrName] isEqualToString:((CContact*)obj).m_nsUsrName];
|
||||
}];
|
||||
NSArray<CContact*> *invalidFriends = DKHelper.allFriends.copy;
|
||||
NSMutableArray *addSelf = DKHelper.shared.validFriends.mutableCopy;
|
||||
[addSelf addObject:[contactMgr getSelfContact]];
|
||||
DKHelper.shared.validFriends = addSelf;
|
||||
invalidFriends = [invalidFriends _filter:^BOOL(id obj) {
|
||||
return ![DKHelper.shared.notFriends _contains:^BOOL(id obj2) {
|
||||
return [((CContact*)obj).m_nsUsrName isEqualToString: ((CContact*)obj2).m_nsUsrName];
|
||||
}];
|
||||
}];
|
||||
invalidFriends = [invalidFriends _filter:^BOOL(id obj) {
|
||||
return ![DKHelper.shared.validFriends _contains:^BOOL(id obj2) {
|
||||
return [((CContact*)obj).m_nsUsrName isEqualToString: ((CContact*)obj2).m_nsUsrName];
|
||||
}];
|
||||
}];
|
||||
DKHelper.shared.invalidFriends = invalidFriends;
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"checkFriendsEnd" object:nil userInfo:@{@"success":@YES}];
|
||||
}else{
|
||||
/// 检测超时结束
|
||||
DKHelper.shared.invalidFriends = @[];
|
||||
DKHelper.shared.validFriends = @[];
|
||||
DKHelper.shared.notFriends = @[];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"checkFriendsEnd" object:nil userInfo:@{@"success":@NO}];
|
||||
}
|
||||
// 删除群聊
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
MMNewSessionMgr * sm =[[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("MMNewSessionMgr") class]];
|
||||
unsigned int idx = [sm getSessionIndexOfUser:DKHelper.shared.groupContact.m_nsUsrName];
|
||||
if (idx != (unsigned int)(NSNotFound)){
|
||||
[sm deleteSessionAtIndex:idx forceDelete:false];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+ (UINavigationController *)navigationContrioller{
|
||||
return ((UINavigationController *)([objc_getClass("CAppViewControllerManager") getCurrentNavigationController]));
|
||||
}
|
||||
|
@ -59,7 +117,7 @@
|
|||
CContactMgr *contactMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CContactMgr") class]];
|
||||
NSArray* contacts = [contactMgr getContactList:1 contactType:0];
|
||||
for(CContact* contact in contacts){
|
||||
if (!contact.isBrandContact && contact.m_uiSex != 0) {
|
||||
if (!contact.isBrandContact && contact.m_uiSex != 0 && ![contact.m_nsUsrName containsString:@"@openim"]) {
|
||||
[friends addObject:contact];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,15 @@
|
|||
// DKHelperConfig.h
|
||||
// testHookDylib
|
||||
//
|
||||
// Created by 朱德坤 on 2019/1/22.
|
||||
// Copyright © 2019 DKJone. All rights reserved.
|
||||
// Created by 朱德坤 on 2019/1/22.
|
||||
// Copyright © 2019 DKJone. All rights reserved.
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
@ -88,6 +95,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
+(void)setComments:(NSString *)value;
|
||||
|
||||
|
||||
/// 抢个人红包
|
||||
+(BOOL)personalRedEnvelopEnable;
|
||||
+(void)setPersonalRedEnvelopEnable:(BOOL)value;
|
||||
|
||||
/// 清理好友
|
||||
+(BOOL)cleanFriendsEnable;
|
||||
+(void)setCleanFriendsEnable:(BOOL)value;
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
@ -52,8 +52,8 @@ NSString* cmdString(SEL sel){
|
|||
[NSUserDefaults.standardUserDefaults synchronize];
|
||||
free(value);
|
||||
}else{
|
||||
// 存储对象
|
||||
NSObject *value ;
|
||||
// 存储对象 使用NSObject* 定义value导致崩溃,默认强引用参数但未retain,方法结束后release,参数被提前回收导致坏内存访问
|
||||
id __unsafe_unretained value = nil;
|
||||
[anInvocation getArgument:&value atIndex:2];
|
||||
[NSUserDefaults.standardUserDefaults setValue:value forKey: cmdString(anInvocation.selector)];
|
||||
[NSUserDefaults.standardUserDefaults synchronize];
|
||||
|
|
27
dkhelper/dkhelperDylib/MyUtils/NSArray+Utils.h
Normal file
27
dkhelper/dkhelperDylib/MyUtils/NSArray+Utils.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
// NSArray+Utils.h
|
||||
// dkhelperDylib
|
||||
// Created by DKJone on 2020/9/27
|
||||
// Copyright © 2020 DKJone. All rights reserved.
|
||||
//
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
|
||||
@interface NSArray (Utils)
|
||||
- (NSArray *)_map:(id(^)(id))hanlde ;
|
||||
|
||||
- (NSArray *)_filter:(BOOL(^)(id obj))handle ;
|
||||
- (BOOL)_contains:(BOOL(^)(id obj))handle;
|
||||
@end
|
||||
|
||||
|
53
dkhelper/dkhelperDylib/MyUtils/NSArray+Utils.m
Normal file
53
dkhelper/dkhelperDylib/MyUtils/NSArray+Utils.m
Normal file
|
@ -0,0 +1,53 @@
|
|||
// NSArray+Utils.m
|
||||
// dkhelperDylib
|
||||
// Created by DKJone on 2020/9/27
|
||||
// Copyright © 2020 DKJone. All rights reserved.
|
||||
//
|
||||
//
|
||||
// ██████╗ ██╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
||||
// ██╔══██╗██║ ██╔╝ ██║██╔═══██╗████╗ ██║██╔════╝
|
||||
// ██║ ██║█████╔╝ ██║██║ ██║██╔██╗ ██║█████╗
|
||||
// ██║ ██║██╔═██╗ ██ ██║██║ ██║██║╚██╗██║██╔══╝
|
||||
// ██████╔╝██║ ██╗╚█████╔╝╚██████╔╝██║ ╚████║███████╗
|
||||
// ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
//
|
||||
//
|
||||
|
||||
#import "NSArray+Utils.h"
|
||||
|
||||
@implementation NSArray (Utils)
|
||||
- (NSArray *)_map:(id(^)(id))hanlde {
|
||||
if (!hanlde || !self) return self;
|
||||
|
||||
NSMutableArray *arr = NSMutableArray.array;
|
||||
for (id obj in self) {
|
||||
id new = hanlde(obj);
|
||||
[arr addObject:new];
|
||||
}
|
||||
return arr.copy;
|
||||
}
|
||||
|
||||
- (NSArray *)_filter:(BOOL(^)(id))handle {
|
||||
if (!handle || !self) return self;
|
||||
|
||||
NSMutableArray *arr = NSMutableArray.array;
|
||||
for (id obj in self) {
|
||||
if (handle(obj)) {
|
||||
[arr addObject:obj];
|
||||
}
|
||||
}
|
||||
return arr.copy;
|
||||
}
|
||||
|
||||
- (BOOL)_contains:(BOOL(^)(id))handle {
|
||||
if (!handle || !self) return self;
|
||||
for (id obj in self) {
|
||||
if (handle(obj)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@end
|
|
@ -37,7 +37,7 @@
|
|||
+ (id)normalCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 accessoryType:(long long)arg4;
|
||||
+ (id)switchCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 on:(BOOL)arg4;
|
||||
+ (id)normalCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 rightValue:(id)arg4 accessoryType:(long long)arg5;
|
||||
+ (id)editorCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 margin:(double)arg4 tip:(id)arg5 focus:(_Bool)arg6 text:(id)arg7;
|
||||
+ (id)editorCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 margin:(double)arg4 tip:(id)arg5 focus:(BOOL)arg6 text:(id)arg7;
|
||||
+ (id)normalCellForTitle:(id)arg1 rightValue:(id)arg2;
|
||||
+ (id)urlCellForTitle:(id)arg1 url:(id)arg2;
|
||||
@property(nonatomic) long long editStyle; // @synthesize editStyle=_editStyle;
|
||||
|
@ -57,7 +57,7 @@
|
|||
+ (id)loadingCell;
|
||||
+ (id)ActivityIndicatorCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3;
|
||||
+ (id)detailDisclosureButtonCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3;
|
||||
+ (id)switchCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 on:(_Bool)arg4;
|
||||
+ (id)switchCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 on:(BOOL)arg4;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -161,26 +161,28 @@
|
|||
|
||||
|
||||
@interface MMWebViewController: UIViewController
|
||||
- (id)initWithURL:(id)arg1 presentModal:(_Bool)arg2 extraInfo:(id)arg3;
|
||||
- (id)initWithURL:(id)arg1 presentModal:(BOOL)arg2 extraInfo:(id)arg3;
|
||||
@end
|
||||
|
||||
@interface UINavigationController (LogicController)
|
||||
- (void)PushViewController:(id)arg1 animated:(_Bool)arg2;
|
||||
- (void)PushViewController:(id)arg1 animated:(BOOL)arg2;
|
||||
@end
|
||||
|
||||
|
||||
@interface ContactSelectView : UIView
|
||||
|
||||
@property(nonatomic) unsigned int m_uiGroupScene; // @synthesize m_uiGroupScene;
|
||||
@property(nonatomic) _Bool m_bMultiSelect; // @synthesize m_bMultiSelect;
|
||||
@property(nonatomic) _Bool m_bShowHistoryGroup;
|
||||
@property(nonatomic) _Bool m_bShowRadarCreateRoom;
|
||||
@property(nonatomic) BOOL m_bMultiSelect; // @synthesize m_bMultiSelect;
|
||||
@property(nonatomic) BOOL m_bShowHistoryGroup;
|
||||
@property(nonatomic) BOOL m_bShowRadarCreateRoom;
|
||||
@property(retain, nonatomic) NSMutableDictionary *m_dicMultiSelect; // @synthesize m_dicMultiSelect;
|
||||
|
||||
- (id)initWithFrame:(struct CGRect)arg1 delegate:(id)arg2;
|
||||
- (void)initData:(unsigned int)arg1;
|
||||
- (void)initView;
|
||||
- (void)addSelect:(id)arg1;
|
||||
- (void)removeSelect:(id)arg1;
|
||||
- (void)setM_dicExistContact:(id)arg1;
|
||||
@end
|
||||
|
||||
@interface MMUINavigationController : UINavigationController
|
||||
|
@ -218,6 +220,7 @@
|
|||
@property (nonatomic, copy) NSString *m_nsNickName; // 用户昵称
|
||||
@property (nonatomic, copy) NSString *m_nsUsrName; // 微信id
|
||||
@property (nonatomic, copy) NSString *m_nsMemberName;
|
||||
@property (nonatomic, copy) NSString *m_nsRemark;
|
||||
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;
|
||||
@property(nonatomic) unsigned int m_uiSex;
|
||||
|
||||
|
@ -236,10 +239,12 @@
|
|||
- (id)getSelfContact;
|
||||
- (id)getContactByName:(id)arg1;
|
||||
- (id)getContactForSearchByName:(id)arg1;
|
||||
- (_Bool)getContactsFromServer:(id)arg1;
|
||||
- (_Bool)isInContactList:(id)arg1;
|
||||
- (_Bool)addLocalContact:(id)arg1 listType:(unsigned int)arg2;
|
||||
- (BOOL)getContactsFromServer:(id)arg1;
|
||||
- (BOOL)isInContactList:(id)arg1;
|
||||
- (BOOL)addLocalContact:(id)arg1 listType:(unsigned int)arg2;
|
||||
- (NSArray *)getContactList:(unsigned int)arg1 contactType:(unsigned int)arg2;
|
||||
- (BOOL)deleteContactLocal:(id)arg1 listType:(unsigned int)arg2;
|
||||
- (BOOL)deleteContact:(id)arg1 listType:(unsigned int)arg2;
|
||||
@end
|
||||
|
||||
@protocol ContactSelectViewDelegate <NSObject>
|
||||
|
@ -266,7 +271,7 @@
|
|||
@end
|
||||
|
||||
@interface ScanQRCodeLogicParams
|
||||
- (id)initWithCodeType:(int)arg1 fromScene:(unsigned int)arg2 enterScene:(unsigned long long)arg3 bNeedCameraScan:(_Bool)arg4 bShowMyQRCodeBtn:(_Bool)arg5 wrapper:(id)arg6;
|
||||
- (id)initWithCodeType:(int)arg1 fromScene:(unsigned int)arg2 enterScene:(unsigned long long)arg3 bNeedCameraScan:(BOOL)arg4 bShowMyQRCodeBtn:(BOOL)arg5 wrapper:(id)arg6;
|
||||
- (id)initWithCodeType:(int)arg1 fromScene:(unsigned int)arg2;
|
||||
|
||||
@end
|
||||
|
@ -306,12 +311,13 @@
|
|||
- (id)GetMsg:(id)arg1 n64SvrID:(long long)arg2;
|
||||
- (void)onRevokeMsg:(id)msg;
|
||||
- (void)AddMsg:(id)arg1 MsgWrap:(id)arg2;
|
||||
- (void)AddLocalMsg:(id)arg1 MsgWrap:(id)arg2 fixTime:(_Bool)arg3 NewMsgArriveNotify:(_Bool)arg4;
|
||||
- (void)AddLocalMsg:(id)arg1 MsgWrap:(id)arg2 fixTime:(BOOL)arg3 NewMsgArriveNotify:(BOOL)arg4;
|
||||
- (void)AsyncOnSpecialSession:(id)arg1 MsgList:(id)arg2;
|
||||
- (id)GetHelloUsers:(id)arg1 Limit:(unsigned int)arg2 OnlyUnread:(BOOL)arg3;
|
||||
- (void)AddEmoticonMsg:(NSString *)msg MsgWrap:(CMessageWrap *)msgWrap;
|
||||
- (void)DelMsg:(id)arg1 MsgWrap:(id)arg2;
|
||||
- (void)ResendMsg:(id)arg1 MsgWrap:(id)arg2;
|
||||
- (_Bool)RevokeMsg:(id)arg1 MsgWrap:(id)arg2 Counter:(unsigned int)arg3;
|
||||
|
||||
|
||||
@end
|
||||
|
@ -335,6 +341,8 @@
|
|||
|
||||
@interface MMNewSessionMgr : NSObject
|
||||
- (unsigned int)GenSendMsgTime;
|
||||
- (void)deleteSessionAtIndex:(unsigned int)arg1 forceDelete:(_Bool)arg2;
|
||||
- (unsigned int)getSessionIndexOfUser:(id)arg1;
|
||||
@end
|
||||
|
||||
@interface WCBizUtil : NSObject
|
||||
|
@ -424,7 +432,32 @@
|
|||
- (void)retryRequetScanResult:(ScanCodeHistoryItem *)arg1 viewController:(id)arg2;
|
||||
@end
|
||||
|
||||
@interface CGroupMgr :NSObject
|
||||
+ (BOOL)isSupportOpenIMGroup;
|
||||
- (BOOL)CreateGroup:(id)arg1 withMemberList:(id)arg2;
|
||||
@end
|
||||
|
||||
/// 群组成员
|
||||
@interface GroupMember : NSObject
|
||||
@property(retain, nonatomic) NSString *m_nsMemberName;
|
||||
- (id)init;
|
||||
@end
|
||||
|
||||
@interface MMLoadingView : UIView
|
||||
- (void)ShowTipView:(id)arg1 Title:(id)arg2 Delay:(double)arg3;
|
||||
- (void)stopLoadingAndShowOK;
|
||||
- (void)stopLoadingAndShowError:(id)arg1 withDelay:(double)arg2;
|
||||
- (void)stopLoadingAndShowError:(id)arg1;
|
||||
- (void)stopLoadingAndShowOK:(id)arg1 withDelay:(double)arg2;
|
||||
- (void)stopLoadingAndShowOK:(id)arg1;
|
||||
- (void)StopLoadingTimerFired:(id)arg1;
|
||||
- (void)stopLoading;
|
||||
- (void)startLoadingButAnimatingAfterDelay:(double)arg1;
|
||||
- (void)startLoading;
|
||||
- (void)setLabelText:(id)arg1;
|
||||
- (void)ShowTipView:(id)arg1 Title:(id)arg2 Delay:(double)arg3;
|
||||
|
||||
@end
|
||||
#endif /* WechatHeaders_h */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user