注:环信不是好友也可以聊天,不推荐使用环信的好友机制。如果你有自己的服务器或好友关系,请自己维护好友关系。
获取好友列表,环信提供了两种方法。
EMError *error = nil;
NSArray *userlist = [[EMClient sharedClient].contactManager getContactsFromServerWithError:&error];
if (!error) {
NSLog(@"获取成功 -- %@",buddyList);
}
NSArray *userlist = [[EMClient sharedClient].contactManager getContacts];
环信 iOS SDK 提供了添加好友的方法。
EMError *error = [[EMClient sharedClient].contactManager addContact:@"6001" message:@"我想加您为好友"];
if (!error) {
NSLog(@"添加成功");
}
当您收到好友请求,如果您没有处理,请自己保存数据,新协议下不会每次都发送。
//注册好友回调
[[EMClient sharedClient].contactManager addDelegate:self delegateQueue:nil];
//移除好友回调
[[EMClient sharedClient].contactManager removeDelegate:self];
监听回调
/*!
* 用户A发送加用户B为好友的申请,用户B会收到这个回调
*
* @param aUsername 用户名
* @param aMessage 附属信息
*/
- (void)friendRequestDidReceiveFromUser:(NSString *)aUsername
message:(NSString *)aMessage;
EMError *error = [[EMClient sharedClient].contactManager acceptInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送同意成功");
}
EMError *error = [[EMClient sharedClient].contactManager declineInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送拒绝成功");
}
监听回调
/*!
@method
@brief 用户A发送加用户B为好友的申请,用户B同意后,用户A会收到这个回调
*/
- (void)friendRequestDidApproveByUser:(NSString *)aUsername;
/*!
@method
@brief 用户A发送加用户B为好友的申请,用户B拒绝后,用户A会收到这个回调
*/
- (void)friendRequestDidDeclineByUser:(NSString *)aUsername;
// 删除好友
EMError *error = [[EMClient sharedClient].contactManager deleteContact:@"6001" isDeleteConversation:YES];
if (!error) {
NSLog(@"删除成功");
}
监听回调
/*!
@method
@brief 用户B删除与用户A的好友关系后,用户A,B会收到这个回调
*/
- (void)friendshipDidRemoveByUser:(NSString *)aUsername;
环信的黑名单体系是独立的,与好友无任何关系。也就是说,您可以将任何人加入黑名单,不论他是否与您是好友关系。同时,如果您将好友加入黑名单,则他仍然是您的好友,只不过同时也在黑名单中。
查询黑名单列表,环信提供了两种方法。
EMError *error = nil;
NSArray *blacklist = [[EMClient sharedClient].contactManager getBlackListFromServerWithError:&error];
if (!error) {
NSLog(@"获取成功 -- %@",blockedList);
}
NSArray *blockList = [[EMClient sharedClient].contactManager getBlackList];
接口调用
// 将6001加入黑名单
EMError *error = [[EMClient sharedClient].contactManager addUserToBlackList:@"6001" relationshipBoth:YES];
if (!error) {
NSLog(@"发送成功");
}