EMBuddy中isPendingApproval的疑问_大家来拍砖

EMBuddy中关于isPendingApproval的解释是:A向B发送好友请求,会自动将B添加到A的好友列表中,但isPendingApproval为NO
 
我这里测试了一下, A给B发通知,B中好友通知已经收到了,可是, 调用同步方法

NSArray *buddyList = [[EaseMob sharedInstance].chatManager fetchBuddyListWithError:&error]; if (!error) { NSLog(@"获取成功 -- %@",buddyList); }
 
发现A中得好友列表还是为空,请教下.是为什么
共7个回复

环信沈冲

2015-09-18 12:42

B得接收好友添加请求才会在A的好友列表中显示。

gchk

2015-09-18 13:03

SDK中EMBuddy中有这个属性:isPendingApproval. 上面的解释是:A向B发送好友请求,会自动将B添加到A的好友列表中,但isPendingApproval为NO. 这个解释是否我可以理解为,B未接受请求时, A的好友列表中也会存在B,只是这个属性为NO. 现在使用时确实A的好友列表中并没有B 那我的疑问是: 这个属性暂时是没用的喽?

gchk

2015-09-18 13:27

你们的ios的demo中 AddFriendViewController.m 文件中有如下方法 [code]- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; self.selectedIndexPath = indexPath; NSString *buddyName = [self.dataSource objectAtIndex:indexPath.row]; if ([self didBuddyExist:buddyName]) { NSString *message = [NSString stringWithFormat:NSLocalizedString(@"friend.repeat", @"'%@'has been your friend!"), buddyName]; [EMAlertView showAlertWithTitle:message message:nil completionBlock:nil cancelButtonTitle:NSLocalizedString(@"ok", @"OK") otherButtonTitles:nil]; } else if([self hasSendBuddyRequest:buddyName]) { NSString *message = [NSString stringWithFormat:NSLocalizedString(@"friend.repeatApply", @"you have send fridend request to '%@'!"), buddyName]; [EMAlertView showAlertWithTitle:message message:nil completionBlock:nil cancelButtonTitle:NSLocalizedString(@"ok", @"OK") otherButtonTitles:nil]; }else{ [self showMessageAlertView]; } } [/code]这里有一个用来判断搜索出来的好友 点击添加好友时,判断这个用户是否已经发送过好友请求了. [self hasSendBuddyRequest:buddyName][code]- (BOOL)hasSendBuddyRequest:(NSString *)buddyName { NSArray *buddyList = [[[EaseMob sharedInstance] chatManager] buddyList]; for (EMBuddy *buddy in buddyList) { if ([buddy.username isEqualToString:buddyName] && buddy.followState == eEMBuddyFollowState_NotFollowed && buddy.isPendingApproval) { return YES; } } return NO; }[/code]但是事实上这个方法是没有用得.   我想请教一下: 是否这个功能目前的SDK中并没有实现? 还是我哪里没用对.谢谢回复  

环信沈冲

2015-09-18 16:44

B未接受好友请求之前A的好友列表中是没有B的。

gchk

2015-09-18 17:14

感觉你好像没明白我的意思哈? 我时因为看到EMBuddy中有这个属性,并且在demo中有使用,才有此一问. 你一直回复我未接受之前没有. 这个我也知道啊.现在的demo测试下来,肯定是没有啊. 但是那个属性是干啥的呢?demo中写了这段话又是为了什么呢? 是现在没这个功能,留作后续添加的么?

gchk

2015-09-18 17:10

那SDK种的这个参数何时会使用到呢?

环信沈冲

2015-09-18 17:45

isPendingApproval意思是A正在等待B接受好友请求,如果buddy.isPendingApproval为YES,且if ([buddy.username isEqualToString:buddyName] && buddy.followState == eEMBuddyFollowState_NotFollowed && buddy.isPendingApproval)成立,则会提示您已经给这个用户发送过好友请求了,为NO才会发送好友请求。

gchk

2015-09-18 17:56

NSArray *buddyList = [[[EaseMob sharedInstance] chatManager] buddyList]; 上面的方法就是获取内存中得好友列表的.并且也是再demo中使用的.   按照你最初的说法,A发送了请求,但是B未同意,则A的好友列表中没有B.   既然A的好友列表中没有B. 那通过上面请求好友列表的方法取得的数据中肯定没有B,   那这个循环判断还有什么意义? 这个变量还有什么意义?   望解惑,太纠结这个问题了.谢谢    

环信沈冲

2015-09-18 20:20

isPendingApproval的意思可以理解为A正在等待B接受好友请求,作用是,A已经给B发送了好友请求,不能再重复发送。
点击此处继续提问与开发者们互动

申请试用

提交后工作人员会尽快与您联系进行功能演示
技术咨询已转移到管理后台,请先登录

即时通讯云使用者请在应用详情页面咨询
客服云使用者请进入管理员模式咨询

×

400电话

商务咨询

技术咨询

免费试用