• UIKit
  • SDK
  • 服务端 API
Chat/
SDK/
Android/
用户/
SDK
  • 集成 SDK
  • 初始化
  • 登录登出
  • 消息
    • 介绍
    • 发送消息
    • 接收消息
    • 历史消息
    • 转发消息
    • 消息变更
    • 插入消息
    • 删除消息
    • 清空消息
    • 撤回消息
    • 在线消息
    • 已读回执
    • 查询消息
    • 群 @ 消息
    • 群定向消息
    • 消息免打套
    • 消息扩展
    • 消息回应
    • 消息翻译
    • 消息置顶
  • 会话
    • 介绍
    • 会话列表
    • 获取会话
    • 会话未读数
    • 置顶会话
    • 删除会话
    • 会话草稿
    • 会话标记
    • 会话分组
  • 群组
    • 介绍
    • 管理群组
    • 群资料
    • 管理群成员
    • 群成员资料
    • 自定义属性
    • 群计数器
  • 社群话题
    • 管理社群
    • 权限组
  • 用户
    • 用户资料
    • 用户状态
    • 管理好友
    • 好友分组
    • 黑名单
    • 关注与粉丝
  • 本地搜索
    • 搜索消息
    • 搜索好友
    • 搜索群组
    • 搜索群成员
  • 信令
  • 客户端 API
    • Java
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

好友分组

功能描述

在某些场景下,您可能需要对好友进行分组,例如分为 "大学同学"、"公司同事" 等,您可以调用以下接口实现。

新建好友分组

您可以调用 createFriendGroup (Android / iOS & Mac / Windows) 接口新建好友分组。
示例代码如下:
Android
iOS & Mac
Windows
List<String> userIDList = new ArrayList<>();
userIDList.add("user1");
userIDList.add("user2");
V2TIMManager.getFriendshipManager().createFriendGroup("大学好友", userIDList, new V2TIMValueCallback<List<V2TIMFriendOperationResult>>() {
@Override
public void onSuccess(List<V2TIMFriendOperationResult> v2TIMFriendOperationResults) {
// 创建好友分组成功
}

@Override
public void onError(int code, String desc) {
// 创建好友分组失败
}
});
// 创建好友分组
[[V2TIMManager sharedInstance] createFriendGroup:@"大学好友" userIDList:@[@"user1", @"user2"] succ:^(NSArray<V2TIMFriendOperationResult *> *resultList) {
// 创建好友分组成功
} fail:^(int code, NSString *desc) {
// 创建好友分组失败
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMString groupName = u8"大学好友";
V2TIMStringVector userIDList;
userIDList.PushBack(u8"user1");
userIDList.PushBack(u8"user2");

auto callback = new ValueCallback<V2TIMFriendOperationResultVector>{};
callback->SetCallback(
[=](const V2TIMFriendOperationResultVector& friendOperationResultList) {
// 创建好友分组成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 创建好友分组失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->CreateFriendGroup(groupName, userIDList, callback);

删除好友分组

您可以调用 deleteFriendGroup (Android / iOS & Mac / Windows) 接口删除好友分组。删除好友分组不会删除好友关系。
示例代码如下:
Android
iOS & Mac
Windows
List<String> friendGroupList = new ArrayList<>();
friendGroupList.add("大学好友");
V2TIMManager.getFriendshipManager().deleteFriendGroup(friendGroupList, new V2TIMCallback() {
@Override
public void onSuccess() {
// 删除好友分组成功
}

@Override
public void onError(int code, String desc) {
// 删除好友分组失败
}
});
// 删除好友分组
[[V2TIMManager sharedInstance] deleteFriendGroup:@[@"大学好友"] succ:^{
// 删除好友分组成功
} fail:^(int code, NSString *desc) {
// 删除好友分组失败
}];
class Callback final : public V2TIMCallback {
public:
using SuccessCallback = std::function<void()>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

Callback() = default;
~Callback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess() override {
if (success_callback_) {
success_callback_();
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMStringVector groupNameList;
groupNameList.PushBack(u8"大学好友");

auto callback = new Callback{};
callback->SetCallback(
[=]() {
// 删除好友分组成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 删除好友分组失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->DeleteFriendGroup(groupNameList, callback);

重命名好友分组

您可以调用 renameFriendGroup (Android / iOS & Mac / Windows) 接口重命名好友分组。
示例代码如下:
Android
iOS & Mac
Windows
V2TIMManager.getFriendshipManager().renameFriendGroup("大学好友", "中学好友", new V2TIMCallback() {
@Override
public void onSuccess() {
// 修改好友分组成功
}

@Override
public void onError(int code, String desc) {
// 修改好友分组失败
}
});
// 修改好友分组
[[V2TIMManager sharedInstance] renameFriendGroup:@"大学好友" newName:@"中学好友" succ:^{
// 修改好友分组成功
} fail:^(int code, NSString *desc) {
// 修改好友分组失败
}];
class Callback final : public V2TIMCallback {
public:
using SuccessCallback = std::function<void()>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

Callback() = default;
~Callback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess() override {
if (success_callback_) {
success_callback_();
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMString oldName = u8"大学好友";
V2TIMString newName = u8"中学好友";

auto callback = new Callback{};
callback->SetCallback(
[=]() {
// 修改好友分组成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 修改好友分组失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->RenameFriendGroup(oldName, newName, callback);

获取好友分组

您可以调用 getFriendGroupList (Android / iOS & Mac / Windows) 接口获取好友分组列表。
示例代码如下:
Android
iOS & Mac
Windows
List<String> friendGroups = new ArrayList<>();
friendGroups.add("大学好友");
V2TIMManager.getFriendshipManager().getFriendGroups(friendGroups, new V2TIMValueCallback<List<V2TIMFriendGroup>>() {
@Override
public void onSuccess(List<V2TIMFriendGroup> v2TIMFriendGroups) {
// 获取好友分组成功
}

@Override
public void onError(int code, String desc) {
// 获取好友分组失败
}
});
// 获取好友分组
[[V2TIMManager sharedInstance] getFriendGroupList:@[@"大学好友"] succ:^(NSArray<V2TIMFriendGroup *> *groups) {
// 获取好友分组成功
} fail:^(int code, NSString *desc) {
// 获取好友分组失败
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMStringVector groupNameList;
groupNameList.PushBack(u8"大学好友");

auto callback = new ValueCallback<V2TIMFriendGroupVector>{};
callback->SetCallback(
[=](const V2TIMFriendGroupVector& friendGroupList) {
// 获取好友分组成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 获取好友分组失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->GetFriendGroups(groupNameList, callback);

添加好友到一个分组

您可以调用 addFriendsToFriendGroup (Android / iOS & Mac / Windows) 接口添加好友到一个分组。
示例代码如下:
Android
iOS & Mac
Windows
List<String> userIDList = new ArrayList<>();
userIDList.add("user1");
userIDList.add("user2");
V2TIMManager.getFriendshipManager().addFriendsToFriendGroup("大学好友", userIDList, new V2TIMValueCallback<List<V2TIMFriendOperationResult>>() {
@Override
public void onSuccess(List<V2TIMFriendOperationResult> v2TIMFriendOperationResults) {
// 添加成功
}

@Override
public void onError(int code, String desc) {
// 添加失败
}
});
// 添加好友到一个分组
[[V2TIMManager sharedInstance] addFriendsToFriendGroup:@"大学好友" userIDList:@[@"user1", @"user2"] succ:^(NSArray<V2TIMFriendOperationResult *> *resultList) {
// 添加成功
} fail:^(int code, NSString *desc) {
// 添加失败
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMString groupName = u8"大学好友";
V2TIMStringVector userIDList;
userIDList.PushBack(u8"user1");
userIDList.PushBack(u8"user2");

auto callback = new ValueCallback<V2TIMFriendOperationResultVector>{};
callback->SetCallback(
[=](const V2TIMFriendOperationResultVector& friendOperationResultList) {
// 添加成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 添加失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->AddFriendsToFriendGroup(groupName, userIDList, callback);

从分组中删除某好友

您可以调用 deleteFriendsFromFriendGroup (Android / iOS & Mac / Windows) 从分组中删除某好友。从该分组中删除好友,只会将好友移出分组,不会删除好友关系。
示例代码如下:
Android
iOS & Mac
Windows
List<String> userIDList = new ArrayList<>();
userIDList.add("user1");
userIDList.add("user2");
V2TIMManager.getFriendshipManager().deleteFriendsFromFriendGroup("大学好友", userIDList, new V2TIMValueCallback<List<V2TIMFriendOperationResult>>() {
@Override
public void onSuccess(List<V2TIMFriendOperationResult> v2TIMFriendOperationResults) {
// 删除成功
}

@Override
public void onError(int code, String desc) {
// 删除失败
}
});
// 从分组中删除某好友
[[V2TIMManager sharedInstance] deleteFriendsFromFriendGroup:@"大学好友" userIDList:@[@"user1", @"user2"] succ:^(NSArray<V2TIMFriendOperationResult *> *resultList) {
// 删除成功
} fail:^(int code, NSString *desc) {
// 删除失败
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}

void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}

private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMString groupName = u8"大学好友";
V2TIMStringVector userIDList;
userIDList.PushBack(u8"user1");
userIDList.PushBack(u8"user2");

auto callback = new ValueCallback<V2TIMFriendOperationResultVector>{};
callback->SetCallback(
[=](const V2TIMFriendOperationResultVector& friendOperationResultList) {
// 删除成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 删除失败
delete callback;
});

V2TIMManager::GetInstance()->GetFriendshipManager()->DeleteFriendsFromFriendGroup(groupName, userIDList,
callback);

监听好友分组变更通知

您可以通过 addFriendListener (Android / iOS & Mac / Windows) 接口来监听好友分组变更的通知。
示例代码如下:
Android
iOS & Mac
Windows
V2TIMFriendshipListener v2TIMFriendshipListener = new V2TIMFriendshipListener() {
@Override
public void onFriendGroupCreated(String groupName, List<V2TIMFriendInfo> friendInfoList) {
// 收到好友分组被创建通知
}

@Override
public void onFriendGroupDeleted(List<String> groupNameList) {
// 收到好友分组被删除通知
}

@Override
public void onFriendGroupNameChanged(String oldGroupName, String newGroupName) {
// 收到好友分组重命名通知
}

@Override
public void onFriendsAddedToGroup(String groupName, List<V2TIMFriendInfo> friendInfoList) {
// 收到向好友分组添加好友通知
}

@Override
public void onFriendsDeletedFromGroup(String groupName, List<String> friendIDList) {
// 收到从好友分组中删除好友通知
}
};

// 添加关系链监听器
V2TIMManager.getFriendshipManager().addFriendListener(v2TIMFriendshipListener);
// 添加关系链监听器
[[V2TIMManager sharedInstance] addFriendListener:self];

- (void)onFriendGroupCreated:(NSString *)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList {
// 到好友分组被创建通知
}

- (void)onFriendGroupDeleted:(NSArray<NSString *> *)groupNameList {
// 收到好友分组被删除通知
}
- (void)onFriendGroupNameChanged:(NSString *)oldGroupName newGroupName:(NSString *)newGroupName {
// 收到好友分组重命名通知
}

- (void)onFriendsAddedToGroup:(NSString *)groupName friendInfoList:(NSArray<V2TIMFriendInfo *> *)friendInfoList {
// 收到向好友分组添加好友通知
}

- (void)onFriendsDeletedFromGroup:(NSString *)groupName friendIDList:(NSArray<NSString *> *)friendIDList {
// 收到从好友分组中删除好友通知
}
class FriendshipListener final : public V2TIMFriendshipListener {
public:
FriendshipListener() = default;
~FriendshipListener() override = default;

void OnFriendGroupCreated(const V2TIMString &groupName, const V2TIMFriendInfoVector &friendInfoList) override {
// 收到好友分组被创建通知
}

void OnFriendGroupDeleted(const V2TIMStringVector &groupNameList) override {
// 收到好友分组被删除通知
}

void OnFriendGroupNameChanged(const V2TIMString &oldGroupName, const V2TIMString &newGroupName) override {
// 收到好友分组重命名通知
}

void OnFriendsAddedToGroup(const V2TIMString &groupName, const V2TIMFriendInfoVector &friendInfoList) override {
// 收到向好友分组添加好友通知
}

void OnFriendsDeletedFromGroup(const V2TIMString &groupName, const V2TIMStringVector &friendIDList) override {
// 收到从好友分组中删除好友通知
}

// 其他成员函数 ...
};

// 添加关系链事件监听器,注意在移除监听器之前需要保持 friendshipListener 的生命期,以免接收不到事件回调
FriendshipListener friendshipListener;
V2TIMManager::GetInstance()->GetFriendshipManager()->AddFriendListener(&friendshipListener);
说明:
好友分组变更通知仅增强版 SDK 8.0 及以上版本支持。