====== 好友管理 ====== ---- 注:环信不是好友也可以聊天,不推荐使用环信的好友机制。如果你有自己的服务器或好友关系,请自己维护好友关系。 当 SDK 初始化时,您可以设置是否由 SDK 主动帮您获取好友,如果未设置,需要您自己调用获取方法获取。 // 登录成功后,自动去取好友列表 // SDK获取结束后,会回调 // - (void)didFetchedBuddyList:(NSArray *)buddyList error:(EMError *)error方法。 [[EaseMob sharedInstance].chatManager setIsAutoFetchBuddyList:YES]; ===== 获取好友列表 ===== 获取好友列表,环信提供了四种方法。 1. 同步方法 EMError *error = nil; NSArray *buddyList = [[EaseMob sharedInstance].chatManager fetchBuddyListWithError:&error]; if (!error) { NSLog(@"获取成功 -- %@",buddyList); } 2. block 异步方法 [[EaseMob sharedInstance].chatManager asyncFetchBuddyListWithCompletion:^(NSArray *buddyList, EMError *error) { if (!error) { NSLog(@"获取成功 -- %@",buddyList); } } onQueue:nil]; 3. IChatManagerDelegate 回调方法 接口调用 // 获取好友列表 [[EaseMob sharedInstance].chatManager asyncFetchBuddyList]; 回调监听 /*! @method @brief 获取好友列表成功时的回调 @discussion @param buddyList 好友列表 @param error 错误信息 */ - (void)didFetchedBuddyList:(NSArray *)buddyList error:(EMError *)error; 4. 取内存中的值 该方法比较特殊,只有在您之前获取过好友列表的情况下才会有值,且不能保证最新。 NSArray *buddyList = [[EaseMob sharedInstance].chatManager buddyList]; ===== 好友申请 ===== ==== 发送加好友申请 ==== 环信 iOS SDK 提供了添加好友的方法。 如果您已经发过,并且对方没有处理,您将不能再次发送。 BOOL isSuccess = [[EaseMob sharedInstance].chatManager addBuddy:@"6001" message:@"我想加您为好友" error:&error]; if (isSuccess && !error) { NSLog(@"添加成功"); } ==== 监听加好友请求 ==== 当您收到好友请求,如果您没有处理,则您每次登录的时候,服务器都会给你发该请求,请确保你在登录成功之前已经注册了监听。 监听回调 /*! @method @brief 接收到好友请求时的通知 @discussion @param username 发起好友请求的用户username @param message 收到好友请求时的say hello消息 */ - (void)didReceiveBuddyRequest:(NSString *)username message:(NSString *)message; ==== 同意加好友申请 ==== EMError *error = nil; BOOL isSuccess = [[EaseMob sharedInstance].chatManager acceptBuddyRequest:@"8001" error:&error]; if (isSuccess && !error) { NSLog(@"发送同意成功"); } ==== 拒绝加好友申请 ==== EMError *error = nil; BOOL isSuccess = [[EaseMob sharedInstance].chatManager rejectBuddyRequest:@"8001" reason:@"111111" error:&error]; if (isSuccess && !error) { NSLog(@"发送拒绝成功"); } ==== 好友申请处理结果回调 ==== 监听回调 /*! @method @brief 好友请求被接受时的回调 @discussion @param username 之前发出的好友请求被用户username接受了 */ - (void)didAcceptedByBuddy:(NSString *)username; /*! @method @brief 好友请求被拒绝时的回调 @discussion @param username 之前发出的好友请求被用户username拒绝了 */ - (void)didRejectedByBuddy:(NSString *)username; ===== 删除好友 ===== EMError *error = nil; // 删除好友 BOOL isSuccess = [[EaseMob sharedInstance].chatManager removeBuddy:@"6001" removeFromRemote:YES error:&error]; if (isSuccess && !error) { NSLog(@"删除成功"); } * removeBuddy:要删除的用户 * removeFromRemote:是否将自己从对方好友列表中移除 * error:错误信息 ===== 黑名单 ===== ==== 获取好友黑名单 ==== 环信的黑名单体系是独立的,与好友无任何关系。也就是说,您可以将任何人加入黑名单,不论他是否与您是好友关系。同时,如果您将好友加入黑名单,则他仍然是您的好友,只不过同时也在黑名单中。 黑名单的类型(EMRelationship)有三种,其中,两种可用。 typedef enum{ eRelationshipBoth = 0, 双向都不接收消息; eRelationshipFrom, 能给黑名单中的人发消息,接收不到黑名单中的人发的消息; eRelationshipTo, 暂不支持; }EMRelationship; 查询黑名单列表,环信提供了四种方法。 1. 同步方法 EMError *error = nil; NSArray *blockedList = [[EaseMob sharedInstance].chatManager fetchBlockedList:&error]; if (!error) { NSLog(@"获取成功 -- %@",blockedList); } 2. block 回调方法 [[EaseMob sharedInstance].chatManager asyncFetchBlockedListWithCompletion:^(NSArray *blockedList, EMError *error) { if (!error) { NSLog(@"获取成功 -- %@",blockedList); } } onQueue:nil]; 3. IChatManagerDelegate 回调方法 接口调用 // 获取黑名单 [[EaseMob sharedInstance].chatManager asyncFetchBlockedList]; 回调监听 - (void)didUpdateBlockedList:(NSArray *)blockedList; 4. 取内存中的值 该方法比较特殊,只有在您之前获取过黑名单列表的情况下才会有值,且不能保证最新。 NSArray *blockedList = [[EaseMob sharedInstance].chatManager blockedList]; ==== 加入黑名单 ==== 接口调用 // 将6001加入黑名单 EMError *error = [[EaseMob sharedInstance].chatManager blockBuddy:@"6001" relationship:eRelationshipBoth]; if (!error) { NSLog(@"发送成功"); } 回调监听 /*! @method @brief 将好友加到黑名单完成后的回调 @discussion @param buddy 加入黑名单的好友 @param pError 错误信息 */ - (void)didBlockBuddy:(EMBuddy *)buddy error:(EMError **)pError; ==== 移出黑名单 ==== 接口调用 // 将6001移除黑名单 EMError *error = [[EaseMob sharedInstance].chatManager unblockBuddy:@"6001"]; if (!error) { NSLog(@"发送成功"); } 回调监听 /*! @method @brief 将好友移出黑名单完成后的回调 @discussion @param buddy 移出黑名单的好友 @param pError 错误信息 */ - (void)didUnblockBuddy:(EMBuddy *)buddy error:(EMError **)pError; ---- 上一页:[[start:300iosclientintegration:40emmsg|消息]] 下一页:[[start:300iosclientintegration:70groupmgmt|群组管理]]