You need to enable JavaScript to run this app.
导航
好友关系
最近更新时间:2024.02.08 16:12:02首次发布时间:2023.08.16 19:53:36

本文档提供好友关系的功能使用说明。你可以通过好友关系功能模块实现用户之间的联系关系建立,无需自行建设好友业务逻辑。

API 接口详细文档参看 Android API 参考iOS API 参考Web API 参考微信小程序 API 参考

前提条件

参看构建基础应用集成使用 IM SDK,版本 v1.2.0 以上。
Web 端需要在实例化时传入 ContactPlugin

import { BytedIM, ContactPlugin } from '@volcengine/im-web-sdk';
const bytedIMInstance = new BytedIM({/* 省略 options */}, [ContactPlugin]);
核心功能

发起好友申请

使用 applyFriend 接口发起好友申请。成功调用后,对方会收到好友申请的事件监听,参看好友事件监听

BIMApplyInfo apply = new BIMApplyInfo();
apply.setUid(uid);    //uid 为被申请用户的用户 ID

BIMClient.getInstance().getService(BIMContactExpandService.class).applyFriend(apply, new BIMResultCallback<BIMFriendApplyInfo>() {
    @Override
    public void onSuccess(BIMFriendApplyInfo friendApplyInfo) {
          //申请成功
    }

    @Override
    public void onFailed(BIMErrorCode code) {
        //申请失败
    }
});

好友事件监听

添加好友事件监听,监听好友申请、好友通过、好友删除等事件。

BIMFriendListener listener = new BIMFriendListener() {
    @Override
    public void onFriendApply(BIMFriendApplyInfo applyInfo) {
        //收到好友申请
    }

    @Override
    public void onFriendDelete(BIMFriendInfo friendInfo) {
        //好友删除
    }

    @Override
    public void onFriendAdd(BIMFriendInfo friendInfo) {
        //新增好友
    }

    @Override
    public void onFriendAgree(BIMFriendApplyInfo applyInfo) {
        //同意好友申请
    }

    @Override
    public void onFriendRefuse(BIMFriendApplyInfo applyInfo) {
        //拒绝好友申请
    }

    @Override
    public void onFriendApplyUnreadCountChanged(int count) {
        //好友申请未读数变化
    }
}
//添加监听
BIMClient.getInstance().getService(BIMContactExpandService.class).addFriendListener(listener);

//移除监听
BIMClient.getInstance().getService(BIMContactExpandService.class).removeFriendListener(listener)

回应好友申请

当前用户收到好友申请后,可选择同意或者拒绝此好友申请,方法成功调用后会发送回应信息给申请用户。

BIMReplyInfo apply = new BIMReplyInfo();
apply.setUid(friendApplyInfo.getFromUid());
apply.setReplyType(BIMFriendReplyType.BIM_FRIEND_REPLY_AGREE);

BIMClient.getInstance().getService(BIMContactExpandService.class).replyFriendApply(apply, new BIMResultCallback<BIMFriendApplyInfo>() {
    @Override
    public void onSuccess(BIMFriendApplyInfo friendApplyInfo) {
         //回应成功
    }

    @Override
    public void onFailed(BIMErrorCode code) {
         //回应失败
    }
});

其中 replyType 包括如下枚举类型

public enum BIMFriendReplyType {
    /**
     * @brief 未知
     */
    BIM_FRIEND_REPLY_UNKNOWN(-1),
    /**
     * @brief 同意状态
     */
    BIM_FRIEND_REPLY_AGREE(0),
    /**
     * @brief 拒绝状态
     */
    BIM_FRIEND_REPLY_REFUSE(1);
}

拉取好友申请信息

可以通过此接口按照由新到旧的顺序获取好友申请列表,包括离线期间收到的好友申请。

// 分页拉取,首页拉取可以传入 0 
BIMClient.getInstance().getService(BIMContactExpandService.class).getFriendApplyList(cusror, 20, new BIMResultCallback<com.bytedance.im.user.api.model.BIMFriendApplyListResult>() {
    @Override
    public void onSuccess(BIMFriendApplyListResult bimFriendApplyListResult) {
        // 拉取成功
        bimFriendApplyListResult.isHasMore();             //是否还有更多
        bimFriendApplyListResult.getApplyFriendList();    //好友申请列表
        bimFriendApplyListResult.getNextCursor();        //下一页起始游标
    }

    @Override
    public void onFailed(BIMErrorCode code) {
         // 拉取失败
    }
});

拉取好友信息

可以通过此接口获取所有当前好友信息。

BIMClient.getInstance().getService(BIMContactExpandService.class).getFriendList( new BIMResultCallback<List<BIMFriendInfo>>() {

    @Override
    public void onSuccess(List<BIMFriendInfo> bimFriendInfos) {
       //拉取成功
    }

    @Override
    public void onFailed(BIMErrorCode code) {
        //拉取失败
    }
});

获取好友申请未读数

未读的好友申请有两种获取方式,被动监听和主动获取。其中被动监听参看好友事件监听 BIMFriendListeneronFriendApplyUnreadCountChanged 方法回调。主动获取好友申请未读数示例代码如下。

BIMClient.getInstance().getService(BIMContactExpandService.class).getFriendApplyUnreadCount(new BIMResultCallback<Integer>() {
    @Override
    public void onSuccess(Integer integer) {
        //获取成功 好友未读数
    }

    @Override
    public void onFailed(BIMErrorCode code) {
        //获取失败
    }
});