本文档提供好友关系的功能使用说明。你可以通过好友关系功能模块实现用户之间的联系关系建立,无需自行建设好友业务逻辑。
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) { //拉取失败 } });
未读的好友申请有两种获取方式,被动监听和主动获取。其中被动监听参看好友事件监听 BIMFriendListener
中 onFriendApplyUnreadCountChanged
方法回调。主动获取好友申请未读数示例代码如下。
BIMClient.getInstance().getService(BIMContactExpandService.class).getFriendApplyUnreadCount(new BIMResultCallback<Integer>() { @Override public void onSuccess(Integer integer) { //获取成功 好友未读数 } @Override public void onFailed(BIMErrorCode code) { //获取失败 } });