不多說直接上代碼
// 已經(jīng)同意并且加入群組后的回調(diào)
- (void)didAcceptInvitationFromGroup:(EMGroup *)group
error:(EMError *)error
{
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
__block NSString *aliasName;
dispatch_group_t group1 = dispatch_group_create();
dispatch_group_async(group1, dispatch_get_global_queue(0,0), ^{
// 并行執(zhí)行的線程一
NSString *identify = [NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"identifySaves"]];
NSMutableDictionary *dic = [NSMutableDictionary new];
[dic setValue:[ToolUtils readToken] forKey:@"token"];
[dic setValue:[ToolUtils getPreferredLanguage] forKey:@"lang"];
[dic setValue:identify forKey:@"id"];
[AFHttpManager postJSONWithUrl: MainUrl(@"/im/getInfoById") parameters:dic success:^(id responseObject) {
if (responseObject) {
NSNumber *cid = [[responseObject objectForKey:@"opResult"] objectForKey:@"retCode"];
if ([cid intValue] == Success) {
NSArray *arr = [responseObject objectForKey:@"PersonInfo"];
NSDictionary* Datadic;
if (arr.count>0) {
Datadic = arr[0];
}
NSString *str = [Datadic objectForKey:@"aliasName"];
aliasName = str;
//請求成功舀患,獲取完昵稱, 發(fā)送一個信號
dispatch_semaphore_signal(semaphore);
}
}
} failure:^(NSError *error) {
aliasName = identify;
}];
});
__block NSInteger blockType = 1;
dispatch_group_async(group1, dispatch_get_global_queue(0,0), ^{
// 并行執(zhí)行的線程二
NSMutableDictionary *dic = [NSMutableDictionary new];
[dic setValue:[ToolUtils readToken] forKey:@"token"];
[dic setValue:group.groupId forKey:@"imname"];//[array componentsJoinedByString:@","] forKey:@"imname"];
[dic setValue:@"2" forKey:@"type"];
[dic setValue:[ToolUtils getPreferredLanguage] forKey:@"lang"];
[AFHttpManager postJSONWithUrl:MainUrl(Post_imGetListInfo) parameters:dic success:^(id responseObject) {
[[BaseViewController sharedManager] waitView].hidden = YES;
if (responseObject) {
// 注意要加限制
NSNumber *cid = [[responseObject objectForKey:@"opResult"] objectForKey:@"retCode"];
if([cid intValue] == Success){
NSString *ID;
for( NSDictionary *findAllInfo in [responseObject objectForKey:@"findAllInfo"]){
ID = [[findAllInfo objectForKey:@"id"] stringValue];
}
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[ToolUtils readToken] forKey:@"token"];
[dict setValue:ID forKey:@"id"];
[dict setValue:[ToolUtils getPreferredLanguage] forKey:@"lang"];
[AFHttpManager postJSONWithUrl:MainUrl(Post_imLookGroupInfo) parameters:dict success:^(id responseObject) {
if (responseObject) {
NSNumber *cid = [[responseObject objectForKey:@"opResult"] objectForKey:@"retCode"];
if ([cid intValue] == Success) {
blockType = [[responseObject objectForKey:@"type"] integerValue];
//獲取blockType的判定條件气破, 發(fā)送另一個信號
dispatch_semaphore_signal(semaphore);
}
}
} failure:^(NSError *error) {
}];
}
}
} failure:^(NSError *error) {
}];
});
dispatch_group_notify(group1,dispatch_get_global_queue(0, 0), ^{
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);//信號量 -1
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);//信號量 -1
//注意: n個 dispatch_semaphore_signal(semaphore)
// 要對應(yīng) n個 dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
//匯總結(jié)果
EMChatText *txtChat;
if (blockType == 1) {//請求獲取的 aliasName 和判定條件 blockType
txtChat = [[EMChatText alloc] initWithText:[NSString stringWithFormat:@"%@加入了群",aliasName]];
}
//環(huán)信發(fā)送消息的方法
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithChatObject:txtChat];
NSDictionary *loginInfo = [[[EaseMob sharedInstance] chatManager] loginInfo];
NSString *username = [loginInfo objectForKey:kSDKUsername];
EMMessage *message = [[EMMessage alloc] initWithReceiver:username bodies:@[body]];
message.from = group.groupSubject;
message.to = group.groupId;
message.messageType = eConversationTypeGroupChat;// 設(shè)置為群聊消息
message.deliveryState = eMessageDeliveryState_Delivered;
message.ext = @{@"action":@"join_group"};
[[EaseMob sharedInstance].chatManager asyncResendMessage:message progress:nil];
});
}