mirror of
https://github.com/DKJone/DKWechatHelper.git
synced 2026-07-29 06:12:07 +08:00
[v1.0.9](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.9) / 2021-09-15
what's new * 好友检测改为通过请求是否可以转账进行判断 * 动态启动图资源改为下载 * 支持8.0.13 * 更新越狱包8.0.13 * 更新已注入助手的8.0.13未签名包 * 更新越狱源安装包
This commit is contained in:
@@ -25,8 +25,11 @@
|
||||
#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;
|
||||
|
||||
|
||||
#define SS(strongSelf) __strong __typeof(weakSelf)strongSelf = weakSelf;
|
||||
#define isDKForDeb (YES)
|
||||
#define documentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
|
||||
#define libPath [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]
|
||||
#define vapPath [libPath stringByAppendingPathComponent:@"/dkjone/vapFiles"]
|
||||
|
||||
typedef void(^BtnBlock)(UIButton *sender);
|
||||
|
||||
@@ -36,23 +39,20 @@ typedef void(^BtnBlock)(UIButton *sender);
|
||||
/// 好友关系是否检测完毕
|
||||
@property (nonatomic,assign)BOOL checkFriendsEnd;
|
||||
/// 已将你删除的好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *notFriends;
|
||||
@property (nonatomic,strong)NSMutableArray<CContact *> *notFriends;
|
||||
/// 账号被封的好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *invalidFriends;
|
||||
@property (nonatomic,strong)NSMutableArray<CContact *> *invalidFriends;
|
||||
/// 相互好友
|
||||
@property (nonatomic,copy)NSArray<CContact *> *validFriends;
|
||||
/// 检测好友状态的群组
|
||||
@property (nonatomic,strong)CContact *groupContact;
|
||||
|
||||
@property (nonatomic,strong)dispatch_group_t checkFriendGroup;
|
||||
@property (nonatomic,strong)NSMutableArray<CContact *> *validFriends;
|
||||
|
||||
@property (nonatomic,copy)NSString* groupURL;
|
||||
|
||||
/// 结束好友检测
|
||||
+ (void)endCheck;
|
||||
@property (nonatomic,copy)NSDictionary *currentCheckResult;
|
||||
|
||||
- (void)setCheckNotify;
|
||||
@property (nonatomic ,strong) dispatch_semaphore_t friendCheckSem;
|
||||
|
||||
+(void)checkFriends;
|
||||
+(BOOL)vapFileExit;
|
||||
+ (instancetype)shared ;
|
||||
/// 所有好友(不包含公众号)
|
||||
+ (NSArray<CContact*> *)allFriends;
|
||||
@@ -128,3 +128,5 @@ typedef void(^BtnBlock)(UIButton *sender);
|
||||
- (BOOL)serialQueueIsEmpty;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@@ -26,64 +26,6 @@
|
||||
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]));
|
||||
}
|
||||
@@ -250,6 +192,79 @@ ___addComment:
|
||||
CMessageMgr *chatMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:objc_getClass("CMessageMgr")];
|
||||
[chatMgr AddMsg:userName MsgWrap:wrap];
|
||||
}
|
||||
|
||||
+(BOOL)vapFileExit{
|
||||
NSString *path = [vapPath stringByAppendingPathComponent:@"launchBgm.mp3"];
|
||||
return [NSFileManager.defaultManager fileExistsAtPath:path];
|
||||
}
|
||||
+(void)checkFriends{
|
||||
DKHelper.shared->allFriends = @[];
|
||||
NSOperationQueue *_serialFriendCheckQueue = [[NSOperationQueue alloc] init];
|
||||
_serialFriendCheckQueue.maxConcurrentOperationCount = 1;
|
||||
DKHelper.shared.friendCheckSem = dispatch_semaphore_create(0);
|
||||
DKHelper.shared.invalidFriends = [NSMutableArray new];
|
||||
DKHelper.shared.validFriends = [NSMutableArray new];
|
||||
DKHelper.shared.notFriends = [NSMutableArray new];
|
||||
DKHelper.shared.checkFriendsEnd = NO;
|
||||
__block int currentCount = 1;
|
||||
int allCount = (int)[DKHelper allFriends].count;
|
||||
for (CContact *payUser in [DKHelper allFriends]) {
|
||||
[_serialFriendCheckQueue addOperationWithBlock:^{
|
||||
//发送检测请求
|
||||
WCPayTransferPrepayRequestStruct *payReq = [[objc_getClass("WCPayTransferPrepayRequestStruct") alloc]init];
|
||||
payReq.m_nsReceiverUserName = payUser.m_nsUsrName ;
|
||||
payReq.m_uiFeeType = 1;
|
||||
payReq.m_uiTotalFee = 1;//转账金额单位:分
|
||||
payReq.m_uiPayScene = 31;
|
||||
payReq.m_transferScene = 2;
|
||||
payReq.m_uiPayChannel = 11;
|
||||
payReq.m_nsProducetDesc = @"DKWechathelper";
|
||||
//时间戳
|
||||
long timeinterval = (long)([[NSDate date] timeIntervalSince1970] * 1000);
|
||||
payReq.placeorderReserves = [NSString stringWithFormat:@"%ld",timeinterval];
|
||||
WCPayLogicMgr *mgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("WCPayLogicMgr") class]];
|
||||
[mgr GetTransferPrepayRequest:payReq];
|
||||
NSLog(@"开始检测---%@(%@)",payUser.m_nsNickName,payUser.m_nsRemark);
|
||||
NSString *msg = [NSString stringWithFormat:@"正在检测:%@(%d/%d)",payUser.m_nsNickName,currentCount,allCount];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"checkFriendsEnd" object:nil userInfo:@{@"success":@NO,@"msg":msg}];
|
||||
currentCount += 1;
|
||||
//等待结果
|
||||
long result = dispatch_semaphore_wait(DKHelper.shared.friendCheckSem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.5 * NSEC_PER_SEC)));
|
||||
if (result != 0) { // 检测超时
|
||||
// 尝试重传一次
|
||||
[mgr GetTransferPrepayRequest:payReq];
|
||||
long repeatResult = dispatch_semaphore_wait(DKHelper.shared.friendCheckSem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.5 * NSEC_PER_SEC)));
|
||||
if(repeatResult != 0) { // 重传后依然能失败
|
||||
[DKHelper.shared.invalidFriends addObject:payUser];
|
||||
return;
|
||||
}
|
||||
}
|
||||
NSLog(@"检测结果---%@(%@):%@%@",payUser.m_nsNickName,payUser.m_nsRemark,DKHelper.shared.currentCheckResult[@"retmsg"],DKHelper.shared.currentCheckResult[@"wx_error_msg"]);
|
||||
//获取到结果,处理
|
||||
NSDictionary * resultDic = DKHelper.shared.currentCheckResult;
|
||||
// 失败 retmsg = "" retcode = 268502017 wx_error_msg = 你不是收款方好友,对方添加你为好友后才能发起转账
|
||||
// 成功 retmsg = ok retcode = 0 wx_error_msg = ""
|
||||
if ([@"ok" isEqualToString:[resultDic valueForKey:@"retmsg"]]){
|
||||
// 可以转账
|
||||
[DKHelper.shared.validFriends addObject:payUser];
|
||||
}else if([@"268502017" isEqualToString:[resultDic valueForKey:@"retcode"]]){
|
||||
// 不是好友
|
||||
[DKHelper.shared.notFriends addObject:payUser];
|
||||
}else{
|
||||
// 其他原因失败了
|
||||
[DKHelper.shared.invalidFriends addObject:payUser];
|
||||
}
|
||||
|
||||
}];
|
||||
}
|
||||
[_serialFriendCheckQueue addOperationWithBlock:^{
|
||||
// 检测结束操作
|
||||
DKHelper.shared.checkFriendsEnd = YES;
|
||||
DKHelper.shared.currentCheckResult = @{};
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:@"checkFriendsEnd" object:nil userInfo:@{@"success":@YES}];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user