03环信好友管理 - 好友请求同意后刷新联系人列表

需求:当用户test向用户test3申请添加好友,test3同意后,用户test的联系人列表应该刷新(最初没有test3这个好友)

实现:所以我们应该在“好友请求”被接受时的回调方法里,向服务器请求最新的好友数据

我们这里需要在ContactViewController控制器的 - didAcceptedByBuddy:方法中添加一些代码,最终该方法代码如下:

#pragma mark - EMChatManagerDelegate
/*!
 @method
 @brief 好友请求被接受时的回调
 @discussion
 @param username 之前发出的好友请求被用户username接受了
 */
- (void)didAcceptedByBuddy:(NSString *)username
{
    NSString *message = [NSString stringWithFormat:@"%@ 同意了你的好友请求",username];
    
    // 提示
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"好友添加消息" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:YES completion:nil];
    
    // 把新的好友显示到表格
    [[EaseMob sharedInstance].chatManager asyncFetchBuddyListWithCompletion:^(NSArray *buddyList, EMError *error) {
        if (!error) {
            // 赋值数据源
            self.buddyList = buddyList;
            
            // 刷新表格
            [self.tableView reloadData];
        }
    } onQueue:nil];
}
最后ContactViewController.m 代码如下:
//
//  ContactViewController.m


#import "ContactViewController.h"
#import "EaseMob.h"

@interface ContactViewController ()<EMChatManagerDelegate>
/**
 *  好友列表数据源
 */
@property(nonatomic,strong)NSArray *buddyList;
@end

@implementation ContactViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 标题
    self.title = @"联系人";
    
    // 添加(聊天管理器)代理
    [[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil];
    
    // 获取好友列表数据
    self.buddyList = [[EaseMob sharedInstance].chatManager buddyList];
}

/**
 *  移除(聊天管理器)代理
 */
- (void)dealloc
{
    [[EaseMob sharedInstance].chatManager removeDelegate:self];
}

#pragma mark - EMChatManagerDelegate
/*!
 @method
 @brief 好友请求被接受时的回调
 @discussion
 @param username 之前发出的好友请求被用户username接受了
 */
- (void)didAcceptedByBuddy:(NSString *)username
{
    NSString *message = [NSString stringWithFormat:@"%@ 同意了你的好友请求",username];
    
    // 提示
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"好友添加消息" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:YES completion:nil];
    
    // 把新的好友显示到表格
    [[EaseMob sharedInstance].chatManager asyncFetchBuddyListWithCompletion:^(NSArray *buddyList, EMError *error) {
        if (!error) {
            // 赋值数据源
            self.buddyList = buddyList;
            
            // 刷新表格
            [self.tableView reloadData];
        }
    } onQueue:nil];
}

/*!
 @method
 @brief 好友请求被拒绝时的回调
 @discussion
 @param username 之前发出的好友请求被用户username拒绝了
 */
- (void)didRejectedByBuddy:(NSString *)username
{
    NSString *message = [NSString stringWithFormat:@"%@ 拒绝了你的好友请求",username];
    
    // 提示
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"好友添加消息" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:YES completion:nil];
}


#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.buddyList.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"buddyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
    
    // 1.获取"好友"模型
    EMBuddy *buddy = self.buddyList[indexPath.row];
    
    // 2.配置cell数据
    cell.imageView.image = [UIImage imageNamed:@"chatListCellHead"];
    cell.textLabel.text = buddy.username;
    
    
    return cell;
}




@end
效果演示:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值