logo
当前页

好友管理


功能简介

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

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

基础功能

监听好友相关回调

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

Untitled
// 好友列表变更回调
public void onFriendListChanged(ZIM zim, ArrayList<ZIMFriendInfo> friendInfoList,
                                    ZIMFriendListChangeAction action) {}

// 好友信息变更回调
public void onFriendInfoUpdated(ZIM zim, ArrayList<ZIMFriendInfo> friendInfoList) {}

// 好友申请列表变更回调
public void
    onFriendApplicationListChanged(ZIM zim,
                                   ArrayList<ZIMFriendApplicationInfo> friendApplicationInfoList,
                                   ZIMFriendApplicationListChangeAction action) {}

// 好友申请信息变更回调
public void
    onFriendApplicationUpdated(ZIM zim,
                               ArrayList<ZIMFriendApplicationInfo> friendApplicationInfoList) {}
1
Copied!

直接添加好友

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

说明

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

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

Untitled
// 直接添加好友
ZIMFriendAddConfig config = new ZIMFriendAddConfig();
config.friendAlias = "zego"
config.friendAttributes.put("k0", "v0");
config.wording = "老同学好久不见";

ZIM.getInstance().addFriend("zego", config, new ZIMFriendAddedCallback() {
    @Override
    public void onFriendAddedCallback(ZIMFriendInfo friendInfo, ZIMError zimError) {
    }
);
1
Copied!

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

批量删除好友

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

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

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

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

Untitled
// 批量删除好友
// type 为 BOTH:双向删除 
// type 为 SINGLE:单向删除
ZIMFriendDeleteConfig zimFriendDeleteConfig = new ZIMFriendDeleteConfig();
zimFriendDeleteConfig.type = ZIMFriendDeleteType.BOTH;    
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("zego");                
ZIM.getInstance().deleteFriends(arrayList, zimFriendDeleteConfig, new ZIMFriendsDeletedCallback() {
       @Override
       public void onFriendsDeletedCallback(ArrayList<ZIMErrorUserInfo> errorUserList, ZIMError zimError) {
             // 删除结果回调。
       }
});
1
Copied!

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

发送好友申请

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

说明

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

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

Untitled
// 发送好友申请
ZIMFriendApplicationSendConfig config = new ZIMFriendApplicationSendConfig();
config.friendAlias = "zego"
config.wording = "老同学你好";
ZIM.getInstance().sendFriendApplication("zego", config, new ZIMFriendApplicationSentCallback() {
    @Override
    public void onFriendApplicationSentCallback( ZIMFriendApplicationInfo applicationInfoList, ZIMError errorInfo) {
           // 处理好友申请结果    
    }
});
1
Copied!

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

说明

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

Untitled
// 收到好友申请列表回调
public void onFriendApplicationListChanged(ZIM zim,
                                   ArrayList<ZIMFriendApplicationInfo> friendApplicationInfoList, ZIMFriendApplicationListChangeAction action) {

}
1
Copied!

同意好友申请

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

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

Untitled
// 同意好友申请
ZIMFriendApplicationAcceptConfig config = new ZIMFriendApplicationAcceptConfig();
config.friendAlias = "zego";
config.friendAttributes = new 
ZIM.getInstance().acceptFriendApplication("zego", config, new ZIMFriendApplicationAcceptedCallback() {
    @Override
    public void onFriendApplicationAccepted(ZIMFriendInfo friendInfo, ZIMError zimError) {
                                       
   }
});
1
Copied!

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

拒绝好友申请

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

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

Untitled
// 拒绝好友申请
ZIMFriendApplicationRejectConfig config = new ZIMFriendApplicationRejectConfig();
ZIM.getInstance().rejectFriendApplication("zego", config, new ZIMFriendApplicationRejectedCallback() {
    @Override
    public void onFriendApplicationRejected(ZIMUserInfo zimUserInfo, ZIMError zimError) {
          // 拒绝好友申请结果                     
    }
});
1
Copied!

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

查询好友列表

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

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

Untitled
// 查询好友信息列表
ZIMFriendListQueryConfig config = new ZIMFriendListQueryConfig();
config.count = 3000;
config.nextFlag = 0;
ZIM.getInstance().queryFriendList(config, new ZIMFriendListQueriedCallback() {
            @Override
            public void onFriendListQueried(ArrayList<ZIMFriendInfo> friendList, int nextFlag, ZIMError errorInfo) {
                
}
});
1
Copied!

查询好友申请列表

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

查询结果通过 ZIMFriendApplicationListQueriedCallback 返回。

Untitled
// 查询好友申请信息列表
ZIMFriendApplicationListQueryConfig config = new ZIMFriendApplicationListQueryConfig();
config.count = 3000;
config.nextFlag = 0;
ZIM.getInstance().queryFriendApplicationList(config, new ZIMFriendApplicationListQueriedCallback() {
    @Override
    public void onFriendApplicationListQueried(ArrayList<ZIMFriendApplicationInfo> applicationList, int nextFlag, ZIMError errorInfo) {                                                                                                            
    }                                                
});
1
Copied!

更多功能

更新好友备注

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

更新结果通过 ZIMFriendAliasUpdatedCallback 返回。

Untitled
// 更新好友备注
ZIM.getInstance().updateFriendAlias("A同学", "zego", new ZIMFriendAliasUpdatedCallback() {
    @Override
    public void onFriendAliasUpdated(ZIMFriendInfo friendInfo, ZIMError zimError) {

    }
});
1
Copied!

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

更新好友属性

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

说明

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

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

Untitled
HashMap<String, String> friendAttributes = new HashMap<String, String>();
friendAttributes.put("k0","v0");
// 更新好友属性
zim.updateFriendAttributes(friendAttributes, "zego", new ZIMFriendAttributesUpdatedCallback(){
    
     public void onFriendAttributesUpdated(ZIMFriendInfo friendInfo, ZIMError errorInfo)   {
                   
     }
});

1
Copied!

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

检查好友关系

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

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

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

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

Untitled
// 检查与其他用户的好友关系
// type 为 BOTH:双向 
// type 为 SINGLE:单向
ArrayList<String> userIDs = new ArrayList<>();
userIDs.add("zego");
ZIMFriendRelationCheckConfig config = new ZIMFriendRelationCheckConfig();
config.type = ZIMFriendRelationCheckType.BOTH;
ZIM.getInstance().checkFriendsRelation(userIDs, config, new ZIMFriendsRelationCheckedCallback() {
    @Override
    public void onFriendsChecked(ArrayList<ZIMFriendRelationInfo> relationInfos, ArrayList<ZIMErrorUserInfo> errorUserList, ZIMError errorInfo) {
                                                                
   }
});
1
Copied!

批量查询好友信息

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

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

Untitled
// 批量查询好友信息
ArrayList<String> userIDs = new ArrayList<>();
userIDs.add("zego");
ZIM.getInstance().queryFriendsInfo(userIDs, new ZIMFriendsInfoQueriedCallback() {
    @Override
    public void onFriendsInfoQueried(ArrayList<ZIMFriendInfo> friendInfos, ArrayList<ZIMErrorUserInfo> errorUserList, ZIMError errorInfo) {

    }
});
1
Copied!

搜索好友

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

搜索结果通过 ZIMFriendsSearchedCallback 返回。

Untitled
ZIMFriendSearchConfig config = new ZIMFriendSearchConfig();
config.count = 100;
config.nextFlag = 0;
config.isAlsoMatchFriendAlias = true;
config.keywords.add("zego");
ZIM.getInstance().searchLocalFriends(config, new ZIMFriendsSearchedCallback() {
    @Override
    public void onFriendsSearched(ArrayList<ZIMFriendInfo> friendInfos, int nextFlag, ZIMError errorInfo) 
    {           
    }
});
1
Copied!

Previous

黑名单管理

Next

在线状态订阅