加好友, 其实就是跟发消息一样
获取好友列表
同步好友列表
SDK内部默认会在每次登陆成功后与服务端同步好友列表,开发者可以通过设置disableAutoRequestAllContacts
来禁用这个特性,也可以通过
1
|
- ( void )requestAllContactsFromServerWithResultBlock:(YWContactsOperationResultBlock)resultBlock;
|
来主动发起同步请求。
怎么调用呢?
获取本地好友
开发者可以通过
1
2
3
4
5
6
|
/// 获取不同排序和分组模式的FRC对象
- (YWFetchedResultsController *)fetchedResultsControllerWithListMode:(YWContactListMode)aMode imCore:(YWIMCore *)imCore;
/// 使用关键字搜索用户,使用用户名
// 如果希望搜索好友,needIsFriend置为YES,否则可以置为NO
- (YWFetchedResultsController *)fetchedResultsControllerWithSearchKeyword:(NSString *)aKeyword needIsFriend:(BOOL)needIsFriend imCore:(YWIMCore *)imCore;
|
来获取本地好友。
for example:
YWIMCore *imcore = [SPKitExample sharedInstance].ywIMKit.IMCore;
_fetchedResultsController = [[imcore getContactService] fetchedResultsControllerWithListMode:YWContactListModeAlphabetic imCore:imcore];
好友操作
好友添加
可以通过以下方式来发起添加好友请求:
1
2
3
4
5
6
7
8
9
10
11
|
[[self.imkit.IMCore getContactService] addContact:person withIntroduction:@ "" withResultBlock:^(NSError *error, YWAddContactRequestResult result) {
NSString *title = nil;
if (result == YWAddContactRequestResultError) {
title = @ "请求发送失败" ;
} else if (result == YWAddContactRequestResultSuccess) {
title = @ "好友添加成功" ;
} else {
title = @ "请求发送成功,等待对方验证" ;
}
[YWIndicator showTopToastTitle:title content:[NSString stringWithFormat:@ "添加%@" , person.personId] userInfo:nil withTimeToDisplay: 1.5 andClickBlock:nil];
}];
|
被添加方可以使用:
1
2
|
- ( void )addAddContactRequestBlockV2:( void (^)(YWPerson *person, YWContactAddRequestType type, BOOL isOffline, NSString *message))block
forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;
|
来监听被添加的请求,也可以通过
1
|
- (YWConversation *)fetchContactSystemConversation;
|
来获取好友请求列表。
对于被添加的请求,可以使用:
1
2
3
|
- ( void )responseToAddContact:(BOOL)accept fromPerson:(YWPerson *)person
withMessage:(NSString*)message
andResultBlock:(YWAddContactResultBlock)resultBlock;
|
这个接口接受或者拒绝。
当被添加方处理后,添加发起方可以通过:
1
2
|
- ( void )addAddContactResponseBlockV2:( void (^)(YWPerson *person, YWContactAddResponseType type, BOOL isOffline, NSString *message))block
forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;
|
来获得对方处理的结果。
注:以上add开头添加的block均需要在不使用的时候调用对应的remove方法。
删除好友
开发者可以通过
1
|
- ( void )removeContact:(YWPerson *)persons withResultBlock:(YWRemoveContactResultBlock)resultBlock;
|
来删除好友,通过
1
2
|
- ( void )addFriendBeRemovedBlock:( void (^)(YWPerson *person, BOOL isOffline))block
forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;
|
来接收被删除的回调。
修改好友的备注名
开发者可以通过
1
|
- ( void )modifyContact:(YWPerson *)person WithNewNick:(NSString *)nickName andResultBlock:(YWContactOperationResultBlock)resultBlock;
|
来修改好友的备注名,通过
1
|
- (NSString *)contactNickOfPerson:(YWPerson *)aPerson;
|
来获取好友的备注名。
查询person是否为好友
1
|
- (BOOL)ifPersonIsFriend:(YWPerson *)person;
|
红色的是IMcore对象提供的服务, 除了
getContactService
还有
/**
* 获取长连接服务
*/
- (id<IYWLoginService>)getLoginService;
/**
* 获取会话相关服务
*/
- (id<IYWConversationService>)getConversationService;
/**
* 获取扩展服务
*/
- (id<IYWExtensionService>)getExtensionService;
/**
* 群相关服务
*/
- (id<IYWTribeService>)getTribeService;
/**
* 漫游相关服务
*/
- (id<IYWRoamingService>)getRoamingService;
/**
* 联系人相关服务(建立好友关系的人,称为联系人)
*/
- (id<IYWContactService>)getContactService;
/**
* 缓存相关服务,在imcore登陆前返回nil。
* 这里的缓存与imcore相关,跟[YWAPI getGlobalUtilService4Cache]全局缓存的数据不能相互访问
*/
- (id<IYWUtilService4Cache>)getCacheService;
/**
* 各种设置项
*/
- (id<IYWSettingService>)getSettingService;
/**
* 获取action相关服务
*/
- (id<IYWActionService>)getActionService;
/**
* 获取EHelper服务
*/
- (id<IYWEHelperService>)getEHelperService;
时间: 2024-10-09 01:32:36