logo
当前页

好友管理


功能简介

ZIM SDK 支持好友管理,用户可以直接添加和删除好友、查看看好友列表、向用户发起好友申请、同意或拒绝好友申请、查看好友申请列表、检查其他用户与自己的好友关系、查询或修改好友信息。

每名用户最多可以拥有 3000 名好友。

基础功能

监听好友相关回调

通过调用 setEventHandler 接口,注册监听好友相关回调,包括 friendListChangedfriendApplicationListChangedfriendApplicationUpdatedfriendInfoUpdated

Untitled
// 好友列表变化的回调函数
- (void)zim:(ZIM *)zim
    friendListChanged:(NSArray<ZIMFriendInfo * > *)friendInfoList
               action:(ZIMFriendListChangeAction)action{
    // 待办事项
}

// 好友信息更新的回调函数
- (void)zim:(ZIM *)zim friendInfoUpdated:(NSArray<ZIMFriendInfo * > *)friendInfoList{
    // 待办事项
}

// 好友申请列表变化的回调函数
- (void)zim:(ZIM *)zim
    friendApplicationListChanged:(NSArray<ZIMFriendApplicationInfo * > *)friendApplicationInfoList
                          action:(ZIMFriendApplicationListChangeAction)action{
    // 待办事项
}

// 好友申请信息更新的回调函数
- (void)zim:(ZIM *)zim
    friendApplicationUpdated:(NSArray<ZIMFriendApplicationInfo * > *)friendApplicationInfoList{
    // 待办事项
}
1
Copied!

直接添加好友

登录 ZIM SDK 后,用户可以通过 addFriendByUserID 接口对其他用户设置好友备注和属性,直接添加为好友,无需对方同意。

说明

最多可以设置 5 个好友属性,且对应的 key 取值必须为 k0、k1、k2、k3、k4。建议您提前约定各属性的实际含义并保持统一。

添加好友结果通过 ZIMFriendAddedCallback 返回。

Untitled
// 直接添加好友
ZIMFriendAddConfig *addConfig = [[ZIMFriendAddConfig alloc] init];
addConfig.wording = @"你好";
addConfig.friendAlias = @"马克";
addConfig.friendAttributes = @{@"k0":@"SZ"};
[[ZIM getInstance] addFriendByUserID:@"userID" config:addConfig callback:^(ZIMFriendInfo * _Nonnull friendInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

添加好友成功后,相关用户会收到回调 friendListChanged 得知该用户已成为好友。

批量删除好友

登录 ZIM SDK 后,用户可以通过 deleteFriendsByUserIDs 接口批量单向或双向删除至多 20 名好友。

以用户 A、B 举例说明单向删除和双向删除:

  • 单向删除:当用户 A 单向删除了用户 B,用户 B 不再是用户 A 的好友、用户 A 仍为用户 B 的好友。
  • 双向删除:当用户 A 双向删除了用户 B,彼此都不再是对方的好友。

删除好友结果通过 ZIMFriendsDeletedCallback 返回。

Untitled
// 批量删除好友
// type为ZIMFriendDeleteTypeBoth:双向删除
// type为ZIMFriendDeleteTypeSingle:单向删除
ZIMFriendDeleteConfig *friendDeleteConfig = [[ZIMFriendDeleteConfig alloc] init];
friendDeleteConfig.type = ZIMFriendDeleteTypeBoth;
[[ZIM getInstance] deleteFriendsByUserIDs:@[@"userID1",@"userID2"] config:friendDeleteConfig callback:^(NSArray<ZIMErrorUserInfo * > * _Nonnull errorUserList, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

删除好友成功后,根据删除类型,相关用户会收到回调 friendListChanged 得知该用户不再是好友。

发送好友申请

登录 ZIM SDK 后,用户可以通过 sendFriendApplicationToUserID 接口向其他用户发送好友申请、设置好友备注和好友属性。

说明

最多可以设置 5 个好友属性,且对应的 key 取值必须为 k0、k1、k2、k3、k4。建议您提前约定各属性的实际含义并保持统一。

发送好友申请结果通过 ZIMFriendApplicationSentCallback 返回。

Untitled
// 发送好友申请
ZIMFriendApplicationSendConfig *sendConfig = [[ZIMFriendApplicationSendConfig alloc] init];
sendConfig.wording = @"你好!";
sendConfig.friendAlias = @"马克";
sendConfig.friendAttributes = @{@"k0":@"SZ"};
[[ZIM getInstance] sendFriendApplicationToUserID:@"userID" config:sendConfig callback:^(ZIMFriendApplicationInfo * _Nonnull applicationInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

目标用户会收到 friendApplicationListChanged 回调,得知有用户申请加为好友。该用户可以选择在 7 日内 同意拒绝 申请。

说明

如需调整好友申请有效期,请联系 ZEGO 技术支持。

同意好友申请

登录 ZIM SDK 后,用户可以调用 acceptFriendApplicationFromUserID 接口,传入申请发起用户 ID,同意好友申请。

同意好友申请结果通过 ZIMFriendApplicationAcceptedCallback 返回。

Untitled
// 接受好友申请
ZIMFriendApplicationAcceptConfig *acceptConfig = [[ZIMFriendApplicationAcceptConfig alloc] init];
acceptConfig.friendAlias = @"Mark";
acceptConfig.friendAttributes = @{@"k0":@"SZ"};
[[ZIM getInstance] acceptFriendApplicationFromUserID:@"userID" config:acceptConfig callback:^(ZIMFriendInfo * _Nonnull friendInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

与申请相关的双方用户不仅会收到 friendApplicationUpdated 回调,得知申请通过,还会收到 friendListChanged 得知对方已成为自己的好友。

拒绝好友申请

登录 ZIM SDK 后,用户可以通过 rejectFriendApplicationFromUserID 拒绝好友申请。

拒绝好友申请结果通过 ZIMFriendApplicationRejectedCallback 返回。

Untitled
// 拒绝好友申请
ZIMFriendApplicationRejectConfig *rejectConfig = [[ZIMFriendApplicationRejectConfig alloc] init];
[[ZIM getInstance] rejectFriendApplicationFromUserID:@"userID" config:rejectConfig callback:^(ZIMUserInfo * _Nonnull userInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

与申请相关的双方用户会收到 friendApplicationUpdated 回调,得知申请遭到拒绝。

查询好友列表

登录 ZIM SDK 后,用户可以通过 queryFriendListWithConfig 拉取分页全量好友列表。

查询结果通过 ZIMFriendListQueriedCallback 返回,返回的好友列表以好友关系创建时间倒序排列。

Untitled
// 查询好友信息列表
ZIMFriendListQueryConfig *queryConfig = [[ZIMFriendListQueryConfig alloc] init];
queryConfig.count = 100;
queryConfig.nextFlag = 0;
[[ZIM getInstance] queryFriendListWithConfig:queryConfig callback:^(NSArray<ZIMFriendInfo * > * _Nonnull friendList, unsigned int nextFlag, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

查询好友申请列表

登录 ZIM SDK 后,用户可以通过 queryFriendApplicationListWithConfig 获取好友申请列表,了解各申请的状态。好友申请列表中会包含本用户向其他用户发起的申请,也会包含其他用户向本用户发起的申请。

查询结果通过 ZIMFriendApplicationListQueriedCallback 返回。

Untitled
// 查询好友申请信息列表
ZIMFriendApplicationListQueryConfig *queryConfig = [[ZIMFriendApplicationListQueryConfig alloc] init];
queryConfig.count = 100;
queryConfig.nextFlag = 0;
[[ZIM getInstance] queryFriendApplicationListWithConfig:queryConfig callback:^(NSArray<ZIMFriendApplicationInfo * > * _Nonnull applicationList, unsigned int nextFlag, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

更多功能

更新好友备注

登录 ZIM SDK 后,用户可以通过 updateFriendAlias 更新自己对好友的备注。

更新结果通过 ZIMFriendAliasUpdatedCallback 返回。

Untitled
// 更新好友别名
[[ZIM getInstance] updateFriendAlias:@"新别名" userID:@"userID" callback:^(ZIMFriendInfo * _Nonnull friendInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

更新成功后,该用户可以收到 friendInfoUpdated 接口,得知好友信息已更新。

更新好友属性

登录 ZIM SDK 后,用户可以通过 updateFriendAttributes 更新好友属性。

说明

最多可以设置 5 个好友属性,且对应的 key 取值必须为 k0、k1、k2、k3、k4。建议您提前约定各属性的实际含义并保持统一。

更新好友属性结果通过 ZIMFriendAttributesUpdatedCallback 返回。

Untitled
// 更新好友属性
[[ZIM getInstance] updateFriendAttributes:@{@"k1":@"v1",@"k2":@"v2"} userID:@"userID" callback:^(ZIMFriendInfo * _Nonnull friendInfo, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

更新成功后,该用户可以收到 friendInfoUpdated 接口,得知好友信息已更新。

检查好友关系

登录 ZIM SDK 后,用户可以通过 checkFriendsRelationByUserID 批量检查自己与至多 20 名其他用户的好友关系。

ZEGO 支持单边或双边检查好友关系,以检查用户 A 与目标用户 B 的好友关系为例:

  • 单边检查:仅检查用户 A 的好友列表是否有用户 B。
  • 双边检查:同时检查用户 A 和用户 B 的好友列表是否有对方。

检查好友关系结果通过 ZIMFriendsRelationCheckedCallback 返回。

Untitled
// 检查与其他用户的好友关系
// type为ZIMFriendRelationCheckTypeBoth:双向
// type为ZIMFriendRelationCheckTypeSingle:单向
ZIMFriendRelationCheckConfig *checkConfig = [[ZIMFriendRelationCheckConfig alloc] init];
checkConfig.type = ZIMFriendRelationCheckTypeSingle;
[[ZIM getInstance] checkFriendsRelationByUserIDs:@[@"userID1",@"userID2"] config:checkConfig callback:^(NSArray<ZIMFriendRelationInfo * > * _Nonnull relationInfos, NSArray<ZIMErrorUserInfo * > * _Nonnull errorUserList, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

批量查询好友信息

登录 ZIM SDK 后,用户可以通过 queryFriendsInfoByUserIDs 批量查询 20 名好友信息。

批量查询好友信息结果通过 ZIMFriendsInfoQueriedCallback 返回。

Untitled
// 批量查询好友信息
[[ZIM getInstance] queryFriendsInfoByUserIDs:@[@"userID1",@"userID2"] callback:^(NSArray<ZIMFriendInfo * > * _Nonnull friendInfos, NSArray<ZIMErrorUserInfo * > * _Nonnull errorUserList, ZIMError * _Nonnull errorInfo) {
    
}];

1
Copied!

搜索好友

登录 ZIM SDK 后,用户可以通过 searchLocalFriendsWithConfig 接口,传入至多 5 个关键词,即可对好友的用户名及备注进行搜索,获取同时命中所有关键词的好友。

搜索结果通过 ZIMFriendsSearchedCallback 返回。

Untitled
ZIMFriendSearchConfig *searchConfig = [[ZIMFriendSearchConfig alloc] init];
searchConfig.count = 100;
searchConfig.keywords = @[@"a",@"b"];
searchConfig.isAlsoMatchFriendAlias = YES;
searchConfig.nextFlag = 0;
[[ZIM getInstance] searchLocalFriendsWithConfig:searchConfig callback:^(NSArray<ZIMFriendInfo * > * _Nonnull friendInfos, unsigned int nextFlag, ZIMError * _Nonnull errorInfo) {
    
}];
1
Copied!

Previous

黑名单管理

Next

在线状态订阅