logo
当前页

好友管理


功能简介

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

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

基础功能

监听好友相关回调

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

Untitled
// 好友列表变更回调
static void Function(ZIM zim, List<ZIMFriendInfo> friendInfoList ,ZIMFriendListChangeAction action)? onFriendListChanged;

// 好友信息变更回调
static void Function(ZIM zim, List<ZIMFriendInfo> friendInfoList)? onFriendInfoUpdated;

// 好友申请列表变更回调
static void Function(ZIM zim,List<ZIMFriendApplicationInfo> friendApplicationInfoList ,ZIMFriendApplicationListChangeAction action)? onFriendApplicationListChanged;

// 好友申请信息变更回调
static void Function(ZIM zim,List<ZIMFriendApplicationInfo> friendApplicationInfoList)? onFriendApplicationUpdated;
1
Copied!

直接添加好友

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

说明

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

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

Untitled
// 直接添加好友
try{
    ZIMFriendAddConfig config = ZIMFriendAddConfig();
    config.friendAlias = 'zego';
    config.friendAttributes['k0'] = 'v0';
    config.wording = '老同学好久不见';
    ZIMFriendAddedResult result = await ZIM.getInstance()!.addFriend("zego", config);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑 
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

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

批量删除好友

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

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

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

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

Untitled
// 批量删除好友
// type 为 both:双向删除 
// type 为 single:单向删除
try{
    ZIMFriendDeleteConfig friendDeleteConfig = ZIMFriendDeleteConfig();
    friendDeleteConfig.type = ZIMFriendDeleteType.single;
    List<String> list = [];
    list.add('zego');
    ZIMFriendsDeletedResult result = await ZIM.getInstance()!.deleteFriends(list, friendDeleteConfig);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

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

发送好友申请

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

说明

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

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

Untitled
// 发送好友申请
try{
      ZIMFriendApplicationSendConfig config = ZIMFriendApplicationSendConfig();
      config.friendAlias = 'zego';
      config.wording = '老同学你好';
      ZIMFriendApplicationSentResult result = await ZIM.getInstance()!.sendFriendApplication('zego', config);
      //处理成功逻辑
    } on PlatformException catch (onError){
      //处理失败逻辑
      onError.code; //根据官网错误码表处理
      onError.message; //错误信息
    }
1
Copied!

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

说明

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

同意好友申请

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

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

Untitled
// 同意好友申请
try{
    ZIMFriendApplicationAcceptConfig acceptConfig = ZIMFriendApplicationAcceptConfig();
    acceptConfig.friendAlias = 'Mark';
    acceptConfig.friendAttributes = {'k0':'SZ'};    
    ZIMFriendApplicationAcceptedResult result = await ZIM.getInstance()!.acceptFriendApplication('zego', config);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码文档处理
    onError.message; //错误信息
}
1
Copied!

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

拒绝好友申请

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

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

Untitled
// 拒绝好友申请
try{
    ZIMFriendApplicationRejectConfig config = ZIMFriendApplicationRejectConfig();
    ZIMFriendApplicationRejectedResult result = await ZIM.getInstance()!.rejectFriendApplication('zego', config);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

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

查询好友列表

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

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

Untitled
// 查询好友信息列表
try{
    ZIMFriendListQueryConfig config = ZIMFriendListQueryConfig();
    config.count = 3000;
    config.nextFlag = 0;
    ZIMFriendListQueriedResult result = await ZIM.getInstance()!.queryFriendList(config);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

查询好友申请列表

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

查询结果通过 ZIMFriendApplicationListQueriedResult 返回。

Untitled
// 查询好友申请信息列表
try{
    ZIMFriendApplicationListQueryConfig config = ZIMFriendApplicationListQueryConfig();
    config.count = 3000;
    config.nextFlag = 0;
    ZIMFriendApplicationListQueriedResult result = await ZIM.getInstance()!.queryFriendApplicationList(config);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

更多功能

更新好友备注

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

更新结果通过 ZIMFriendAliasUpdatedResult 返回。

Untitled
// 更新好友备注
try{
    ZIMFriendAliasUpdatedResult result = await ZIM.getInstance()!.updateFriendAlias('A同学', 'zego');
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

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

更新好友属性

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

说明

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

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

Untitled
// 更新好友属性
zim.updateFriendAttributes({ k1: 'v1', k2: 'v2' } , 'userID' }).then(res => {
    const friendInfo = res.friendInfo;
});
1
Copied!

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

检查好友关系

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

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

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

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

Untitled
// 检查与其他用户的好友关系
// type 为 both:双向 
// type 为 single:单向
    try {
      ZIMFriendAttributesUpdatedResult result = await ZIM.getInstance()!.updateFriendAttributes(
          {'k1':'v1','k2':'v2'}, 'zego');
      // 处理成功逻辑
    } on PlatformException catch(onError){
      //处理失败逻辑
      onError.code; //根据官网错误码表处理
      onError.message; //错误信息
    }
1
Copied!

批量查询好友信息

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

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

Untitled
// 批量查询好友信息
try{
    List<String> userIDs = ['zego'];
    userIDs.add('zego');
    ZIMFriendsInfoQueriedResult result = await ZIM.getInstance()!.queryFriendsInfo(userIDs);
    //处理成功逻辑
} on PlatformException catch (onError){
    //处理失败逻辑
    onError.code; //根据官网错误码表处理
    onError.message; //错误信息
}
1
Copied!

搜索好友

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

搜索结果通过 ZIMFriendsSearchedResult 返回。

Untitled
try {
    ZIMFriendSearchConfig config = ZIMFriendSearchConfig();
    config.count = 100;
    config.nextFlag = 0;
    config.isAlsoMatchFriendAlias = true;
    config.keywords.add('zego');
    ZIMFriendsSearchedResult result = await ZIM.getInstance()!.searchLocalFriends(config);
    // 处理成功逻辑
} on PlatformException catch (onError) {
    // 处理失败逻辑
    onError.code; // 根据官方错误代码表进行处理
    onError.message; // 错误消息
}
1
Copied!

Previous

黑名单管理

Next

房间管理