云端会话分组管理
更新时间: 2025/06/17 11:04:08
云端会话分组是将多个相关主题或目的的聊天会话组织在一起的一种方式。网易云信 IM 支持将用户的云端会话进行分组,方便用户管理和查找他们的历史聊天会话。
本文介绍如何调用 NIM SDK 的接口实现用户的云端会话分组管理,包括创建、删除、更新、获取云端会话分组,以及将会话添加到分组中。
支持平台
本文内容适用的开发平台或框架如下表所示,涉及的接口请参考下文 相关接口 章节:
安卓 | iOS | macOS/Windows | Web/uni-app/小程序 | Node.js/Electron | 鸿蒙 | Flutter |
---|---|---|---|---|---|---|
✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️ | ✔️️ |
服务端会话分组请参考 新版服务端 API-会话分组管理。
准备工作
根据本文操作前,请确保您已经完成了以下设置:
限制说明
不同的 IM 套餐包中,每个用户账号能创建的云端会话分组数量上限,以及每个云端会话分组中的会话数量上限都不同。具体可参考 各套餐详细对比信息 中的会话相关信息。
监听云端会话分组相关事件
在进行云端会话分组相关操作前,您可以提前注册监听相关事件。注册成功后,当云端会话分组相关事件发生时,SDK 会触发对应回调通知。
注册监听
云端会话分组相关回调:
onConversationGroupCreated
:创建云端会话分组回调。onConversationGroupDeleted
:删除云端会话分组回调。onConversationGroupChanged
:云端会话分组变更回调。onConversationsAddedToGroup
:添加云端会话到云端会话分组回调。onConversationsRemovedFromGroup
:将云端会话从云端会话分组中移除回调。
示例代码:
调用 addConversationGroupListener
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
JavaV2NIMConversationGroupListener listener = new V2NIMConversationGroupListener() {
@Override
public void onConversationGroupCreated(V2NIMConversationGroup conversationGroup) {
// handle conversation group created event
}
@Override
public void onConversationGroupDeleted(String groupId) {
// handle conversation group deleted event
}
@Override
public void onConversationGroupChanged(V2NIMConversationGroup conversationGroup) {
// handle conversation group changed event
}
@Override
public void onConversationsAddedToGroup(String groupId, List<V2NIMConversation> conversations) {
// handle conversation add to group event
}
@Override
public void onConversationsRemovedFromGroup(String groupId, List<String> conversationIds) {
// handle conversation remove from group event
}
};
NIMClient.getService(V2NIMConversationGroupService.class).addConversationGroupListener (listener);
调用 addConversationGroupListener
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
Objective-C@interface V2ConversationGroupServiceSample : NSObject <V2NIMConversationGroupListener>
@end
@implementation V2ConversationGroupServiceSample
- (void)onConversationGroupCreated:(V2NIMConversationGroup *)
{
// handle conversation group created event
}
- (void)onConversationGroupDeleted:(NSString *)groupId
{
// handle conversation group deleted event
}
- (void)onConversationGroupChanged:(V2NIMConversationGroup *)conversationGroup
{
// handle conversation group changed event
}
- (void)onConversationsAddedToGroup:(NSString *)groupId
conversations:(NSArray<V2NIMConversation *> *)conversations
{
// handle conversation add to group event
}
- (void)onConversationsRemovedFromGroup:(NSString *)groupId
conversationIds:(NSArray<NSString *> *)conversationIds
{
// handle conversation remove from group event
}
- (void)addConversationGroupListener
{
[NIMSDK.sharedSDK.v2ConversationGroupService addConversationGroupListener:self];
}
@end
调用 addConversationGroupListener
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
C++V2NIMConversationGroupListener listener;
listener.onConversationGroupCreated = [](V2NIMConversationGroup conversationGroup, V2NIMConversationList conversations) {
// handle conversation group created event
};
listener.onConversationGroupDeleted = [](nstd::string groupId) {
// handle conversation group deleted event
};
listener.onConversationGroupChanged = [](V2NIMConversationGroup conversationGroup) {
// handle conversation group changed event
};
listener.onConversationsAddedToGroup = [](nstd::string groupId, V2NIMConversationList conversations) {
// handle conversation add to group event
};
listener.onConversationsRemovedFromGroup = [](nstd::string groupId, nstd::vector<nstd::string> conversationIds) {
// handle conversation remove from group event
};
conversationGroupService.addConversaionGroupListener(listener);
调用 on("EventName")
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
TypeScriptnim.V2NIMConversationGroupService.on("onConversationGroupCreated", function (conversationGroup: V2NIMConversationGroup) {});
nim.V2NIMConversationGroupService.on("onConversationGroupDeleted", function(groupId: string) {});
nim.V2NIMConversationGroupService.on("onConversationGroupChanged", function (conversationGroup: V2NIMConversationGroup) {});
nim.V2NIMConversationGroupService.on("onConversationsAddedToGroup", function(groupId: string, conversations: V2NIMConversationGroup[]) {});
nim.V2NIMConversationGroupService.on("onConversationsRemovedFromGroup", function (groupId: string, conversationIds: string[]) {
// Success
// if filter.equals(TARGET_FILTER)
});
调用 on("EventName")
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
TypeScriptv2.conversationGroupService.on('onConversationGroupCreated', (conversationGroup: V2NIMConversationGroup) => {})
v2.conversationGroupService.on('onConversationGroupDeleted', (groupId: string) => {})
v2.conversationGroupService.on('onConversationGroupChanged', (conversationGroup: V2NIMConversationGroup) => {})
v2.conversationGroupService.on('onConversationsAddedToGroup', (groupId: string, list: V2NIMConversation[]) => {})
v2.conversationGroupService.on('onConversationsRemovedFromGroup', (groupId: string, list: string[]) => {})
调用 on("EventName")
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
TypeScriptnim.conversationGroupService.on('onConversationGroupCreated', (conversationGroup: V2NIMConversationGroup) => {})
nim.conversationGroupService.on('onConversationGroupDeleted', (groupId: string) => {})
nim.conversationGroupService.on('onConversationGroupChanged', (conversationGroup: V2NIMConversationGroup) => {})
nim.conversationGroupService.on('onConversationsAddedToGroup', (groupId: string, list: V2NIMConversation[]) => {})
nim.conversationGroupService.on('onConversationsRemovedFromGroup', (groupId: string, list: string[]) => {})
调用 listen
方法注册云端会话分组相关监听器,监听云端会话分组创建、删除、变更及添加/移除会话。
Dartsubsriptions.addAll([
NimCore.instance.conversationGroupService.onConversationGroupChanged.listen((event) {
// todo onConversationGroupChanged
}),
NimCore.instance.conversationGroupService.onConversationGroupCreated.listen((event) {
// todo onConversationGroupCreated
}),
NimCore.instance.conversationGroupService.onConversationGroupDeleted.listen((event) {
// todo onConversationGroupDeleted
}),
NimCore.instance.conversationGroupService.onConversationsAddedToGroup.listen((event){
// todo onConversationsAddedToGroup
}),
NimCore.instance.conversationGroupService.onConversationsRemovedFromGroup.listen((event){
// todo onConversationsRemovedFromGroup
})
]);
移除监听
如需移除云端会话分组相关监听器,可调用 removeConversationGroupListener
。
JavaNIMClient.getService(V2NIMConversationGroupService.class). removeConversationGroupListener(listener);
如需移除云端会话分组相关监听器,可调用 removeConversationGroupListener
。
Objective-Cid<V2NIMConversationGroupListener> listener;
[NIMSDK.sharedSDK.v2ConversationGroupService removeConversationGroupListener:listener];
如需移除云端会话分组相关监听器,可调用 removeConversationGroupListener
。
C++V2NIMConversationGroupListener listener;
conversationGroupService.removeConversaionGroupListener(listener);
如需移除云端会话分组相关监听,可调用 off("EventName")
。
TypeScriptnim.V2NIMConversationGroupService.off("onConversationGroupCreated")
nim.V2NIMConversationGroupService.off("onConversationGroupDeleted")
nim.V2NIMConversationGroupService.off("onConversationGroupChanged")
nim.V2NIMConversationGroupService.off("onConversationsAddedToGroup")
nim.V2NIMConversationService.off("onConversationsRemovedFromGroup")
如需移除云端会话分组相关监听,可调用 off("EventName")
。
TypeScriptv2.conversationGroupService.off('onConversationGroupCreated', lisnterFn)
// or v2.conversationGroupService.off('onConversationGroupCreated')
v2.conversationGroupService.off('onConversationGroupDeleted', lisnterFn)
v2.conversationGroupService.off('onConversationGroupChanged', lisnterFn)
v2.conversationGroupService.off('onConversationsAddedToGroup', lisnterFn)
v2.conversationGroupService.off('onConversationsRemovedFromGroup', lisnterFn)
如需移除云端会话分组相关监听,可调用 off("EventName")
。
TypeScriptnim.conversationGroupService.off('onConversationGroupCreated', lisnterFn)
nim.conversationGroupService.off('onConversationGroupDeleted', lisnterFn)
nim.conversationGroupService.off('onConversationGroupChanged', lisnterFn)
nim.conversationGroupService.off('onConversationsAddedToGroup', lisnterFn)
nim.conversationGroupService.off('onConversationsRemovedFromGroup', lisnterFn)
如需移除云端会话分组相关监听器,可调用 cancel
。
Dartsubsriptions.forEach((subsription) {
subsription.cancel();
});
创建会话分组
调用 createConversationGroup
创建一个云端会话分组,并指定分组中的云端会话列表。
创建成功后,SDK 会返回创建成功回调 onConversationGroupCreated
,并同步缓存和数据库。
如不需要该分组,建议及时调用 deleteConversationGroup
方法删除。
示例代码:
JavaList<String> conversationIds = new ArrayList<>();
conversationIds.add("conversationId");
NIMClient.getService(V2NIMConversationGroupService.class)
.createConversationGroup("name", "serverExtension", conversationIds, new V2NIMSuccessCallback<V2NIMConversationGroupResult>() {
@Override
public void onSuccess(V2NIMConversationGroupResult v2NIMConversationGroupResult) {
// receive v2NIMConversationGroupResult and check failed list
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService createConversationGroup:@"name" serverExtension:@"serverExtension" conversationIds:@[@"conversationIdA", @"conversationIdB"] success:^(V2NIMConversationGroupResult * _Nonnull result) {
// receive result and check failed list
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++auto conversationIds = nstd::vector<nstd::string>{};
conversationIds.emplace_back(V2NIMConversationIdUtil::p2pConversationId("account1"));
conversationIds.emplace_back(V2NIMConversationIdUtil::teamConversationId("team1"));
conversationGroupService.createConversationGroup(
"group1",
conversationIds,
[](V2NIMConversationGroupResult result) {
// receive result and check failed list
},
[](V2NIMError error) {
// create conversation group failed, handle error
});
TypeScriptconst conversationId1 = nim.V2NIMConversationIdUtil.p2pConversationId ('TARGET_ACCOUNT_ID')
const conversationId2 = nim.V2NIMConversationIdUtil.teamConversationId ('TARGET_TEAM_ID')
try {
const result = await nim.V2NIMConversationGroupService.createConversationGroup ('GROUP_NAME', '', [conversationId1, conversationId2])
// receive result and check failed list
// console.log(result.group)
} catch (err) {
// handle error
// console.error(error.code)
}
TypeScripttry {
const result = await v2.conversationGroupService.createConversationGroup('group1', 'extension', ['conversation1', 'conversation2'])
// receive result and check failed list
// console.log(result.group)
} catch (err) {
// handle error
// console.error(error.code)
}
TypeScriptconst conversationId1 = nim.conversationIdUtil.p2pConversationId('TARGET_ACCOUNT_ID')
const conversationId2 = nim.conversationIdUtil.teamConversationId('TARGET_TEAM_ID')
try {
const result = await nim.conversationGroupService.createConversationGroup('GROUP_NAME', '', [conversationId1, conversationId2])
// Update UI with success message..
// console.log(result.group)
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.createConversationGroup('name', ['id1', 'id2'],
serverExtension: 'extension').then((result){
if (result.isSuccess) {
// todo conversationGroupService success
}
});
获取会话分组
获取指定单个会话分组
调用 getConversationGroup
按照云端会话分组 ID 获取指定云端会话分组。
- 请确保该云端会话分组存在,否则返回资源不存在错误。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).getConversationGroup ("groupId", new V2NIMSuccessCallback<V2NIMConversationGroup>(){
@Override
public void onSuccess(V2NIMConversationGroup group){
// receive group
}
}, new V2NIMFailureCallback(){
@Override
public void onFailure(V2NIMError error){
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroup:@"groupId"
success:^(V2NIMConversationGroup * _Nonnull group) {
// receive group
}
failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++conversationGroupService.getConversationGroup(
"groupId",
[](V2NIMConversationGroup group) {
// get conversation group succeeded
},
[](V2NIMError error) {
// get conversation group failed, handle error
});
TypeScripttry {
const group = await nim.V2NIMConversationGroupService.getConversationGroup ('GROUP_ID')
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const group = await v2.conversationGroupService.getConversationGroup('group1')
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const group = await nim.conversationGroupService.getConversationGroup('GROUP_ID')
// Update UI with success message..
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.getConversationGroup('groupId').then((result){
if (result.isSuccess) {
// todo getConversationGroup success
}
});
获取所有会话分组信息
调用 getConversationGroupList
方法获取获取全量的云端会话分组信息。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).getConversationGroupList(new V2NIMSuccessCallback<List<V2NIMConversationGroup>>(){
@Override
public void onSuccess(List<V2NIMConversationGroup> result){
// TODO
}
}, new V2NIMFailureCallback(){
@Override
public void onFailure(V2NIMError error){
int code = error.getCode();
String desc = error.getDesc();
// TODO
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroupList:^ (NSArray<V2NIMConversationGroup *> * _Nonnull groups) {
// receive all groups
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++conversationGroupService.getConversationGroupList(
[](V2NIMConversationGroupList groupList) {
// get conversation group list succeeded
},
[](V2NIMError error) {
// get conversation group list failed, handle error
});
TypeScripttry {
const groupList = await nim.V2NIMConversationGroupService.getConversationGroupList()
// todo: success
} catch (err) {
// todo: failed
// console.error(error.code)
}
TypeScripttry {
const list = await v2.conversationGroupService.getConversationGroupList()
// todo: success
} catch (err) {
// todo: failed
// console.error(error.code)
}
TypeScripttry {
const groupList = await nim.conversationGroupService.getConversationGroupList()
// Update UI with success message.
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.getConversationGroupList().then((result){
if (result.isSuccess) {
// todo getConversationGroupList success
}
});
批量获取指定的会话分组列表
调用 getConversationGroupListByIds
按照云端会话分组 ID 批量获取云端会话分组列表。
- 请确保该云端会话分组存在,否则返回资源不存在错误。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).getConversationGroupListByIds (groupIds,new V2NIMSuccessCallback<List<V2NIMConversationGroup>>(){
@Override
public void onSuccess(List<V2NIMConversationGroup> result){
// receive groups
:::::: div linked-codes
::: code 安卓
```Java
NIMClient.getService(V2NIMConversationGroupService.class).getConversationGroupListByIds (groupIds,new V2NIMSuccessCallback<List<V2NIMConversationGroup>>(){
@Override
public void onSuccess(List<V2NIMConversationGroup> result){
// receive groups
}
}, new V2NIMFailureCallback(){
@Override
public void onFailure(V2NIMError error){
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroupListByIds:@ [@"groupIdA", @"groupIdB"] success:^(NSArray<V2NIMConversationGroup *> * _Nonnull groups) {
// receive groups
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++auto groupIds = nstd::vector<nstd::string>{};
groupIds.emplace_back("groupId1");
groupIds.emplace_back("groupId2");
conversationGroupService.getConversationGroupListByIds(
groupIds,
[](V2NIMConversationGroupList groupList) {
// get conversation group list by ids succeeded
},
[](V2NIMError error) {
// get conversation group list by ids failed, handle error
});
TypeScripttry {
const groupList = await nim.V2NIMConversationGroupService. getConversationGroupListByIds(["GROUP_ID1"])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const list = await v2.conversationGroupService.getConversationGroupListByIds(['group1', 'group2'])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const groupList = await nim.conversationGroupService.getConversationGroupListByIds(["GROUP_ID1"])
// Update UI with success message.
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.getConversationGroupListByIds(['id1','id2']).then((result){
if (result.isSuccess) {
// todo getConversationGroupListByIds success
}
});
根据会话分组 ID 分页获取会话列表
调用 getConversationListByOption
方法,可根据云端会话分组 ID 和会话类型分页获取会话列表,直到获取全量会话。具体示例请参考 云端会话管理。
获取的会话列表结果中,置顶会话排首位。如有多个置顶会话,则按照时间顺序倒序展示。
更新会话分组
调用 updateConversationGroup
更新云端会话分组。
更新成功后,SDK 会返回更新成功回调 onConversationGroupChanged
,并同步缓存和数据库。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).updateConversationGroup ("groupId", "newname", "serverExtension", new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
// update successfully
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService updateConversationGroup:@"groupId" name:@"newName" serverExtension:@"newServerExtension" success:^{
// update successfully
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++conversationGroupService.updateConversaionGroup(
"groupId",
"name",
"serverExtension",
[](V2NIMConversationGroup group) {
// update conversation group succeeded
},
[](V2NIMError error) {
// update conversation group failed, handle error
});
TypeScripttry {
const group = await nim.V2NIMConversationGroupService.updateConversationGroup('GROUP_ID', 'NAME', "SERVER_EXTENSION")
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
await v2.conversationGroupService.updateConversationGroup('group1', 'newName', 'newExtension')
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const group = await nim.conversationGroupService.updateConversationGroup('GROUP_ID', 'NAME', "SERVER_EXTENSION")
// Update UI with success message..
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.updateConversationGroup('groupId', 'name',
serverExtension: 'extension').then((result){
if (result.isSuccess) {
// todo updateConversationGroup success
}
});
删除会话分组
调用 deleteConversationGroup
根据云端会话分组 ID 删除指定云端会话分组。
删除成功后,SDK 会返回删除成功回调 onConversationGroupDeleted
,并同步缓存和数据库。会话所属的分组列表也随之删除该会话分组。
请确保该云端会话分组已存在,否则返回资源不存在错误。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).deleteConversationGroup("会话分组 ID",new V2NIMSuccessCallback<Void>(){
@Override
public void onSuccess(Void unused) {
// delete successfully
}
}, new V2NIMFailureCallback(){
@Override
public void onFailure(V2NIMError error){
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService deleteConversationGroup:@"groupId" success:^{
// delete successfully
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++conversationGroupService.deleteConversationGroup(
"groupId",
[]() {
// delete conversation group succeeded
},
[](V2NIMError error) {
// delete conversation group failed, handle error
});
TypeScripttry {
await nim.V2NIMConversationGroupService.deleteConversationGroup('GROUP_ID')
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
await v2.conversationGroupService.deleteConversationGroup('group1')
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
await nim.conversationGroupService.deleteConversationGroup('GROUP_ID')
// Update UI with success message.
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.deleteConversationGroup('groupId').then((result){
if (result.isSuccess) {
// todo deleteConversationGroup success
}
});
将会话添加到分组
调用 addConversationsToGroup
方法将指定云端会话列表批量添加到指定的云端会话分组。
添加成功后,SDK 会返回添加失败的会话 ID 及其错误信息,并触发添加成功回调 onConversationsAddedToGroup
,同步缓存和数据库。
- 请注意每个会话最多属于 5 个分组。
- 建议您在会话数据同步完成(收到
onSyncFinished
回调)后再进行该操作。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).addConversationsToGroup ("groupId", conversationIds, new V2NIMSuccessCallback<List<V2NIMConversationOperationResult>>() {
@Override
public void onSuccess(List<V2NIMConversationOperationResult> results) {
// receive results and check failed list
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
int code = error.getCode();
String desc = error.getDesc();
// handle error
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService addConversationsToGroup:@"groupId" conversationIds:@[@"conversationIdA", @"conversationIdB"] success:^ (NSArray<V2NIMConversationOperationResult *> * _Nonnull resultList) {
// receive resultList and check failed list
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++auto conversationIds = nstd::vector<nstd::string>{};
conversationIds.emplace_back(V2NIMConversationId::p2pConversationId("account1"));
conversationIds.emplace_back(V2NIMConversationId::teamConversationId("team1"));
conversationGroupService.addConversationsToGroup(
"groupId",
conversationIds,
[](nstd::vector<V2NIMConversationOperationResult> failedList) {
// add conversations to group succeeded
},
[](V2NIMError error) {
// add conversations to group failed, handle error
});
TypeScriptnim.V2NIMConversationGroupService.on('onConversationsAddedToGroup', function (groupId: string, list: V2NIMConversation[]) {})
try {
const conversationId1 = nim.V2NIMConversationIdUtil.p2pConversationId("account1")
const conversationId2 = nim.V2NIMConversationIdUtil.teamConversationId("team1")
const group = await nim.V2NIMConversationGroupService.addConversationsToGroup ('GROUP_ID', [
conversationId1,
conversationId2
])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const result = await v2.conversationGroupService.addConversationsToGroup('group1', ['conversation1', 'conversation2'])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScriptnim.conversationGroupService.on('onConversationsAddedToGroup', (groupId: string, list: V2NIMConversation[]) => {})
try {
const conversationId1 = nim.conversationIdUtil.p2pConversationId("account1")
const conversationId2 = nim.conversationIdUtil.teamConversationId("team1")
const group = await nim.conversationGroupService.addConversationsToGroup('GROUP_ID', [
conversationId1,
conversationId2
])
// Update UI with success message.
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.addConversationsToGroup('groupId', ['ids']).then((result){
if (result.isSuccess) {
// todo addConversationsToGroup success
}
});
将会话从分组中移除
调用 removeConversationsFromGroup
方法将指定云端会话列表从指定的云端会话分组中批量移除。
移除成功后,SDK 会返回移除失败的会话 ID 及其错误信息,并触发移除成功回调 onConversationsRemovedFromGroup
,同步缓存和数据库。
建议您在会话数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
示例代码:
JavaNIMClient.getService(V2NIMConversationGroupService.class).removeConversationsFromGroup("groupId",conversationIds, new V2NIMSuccessCallback<List<V2NIMConversationOperationResult>>(){
@Override
public void onSuccess(List<V2NIMConversationOperationResult> results){
// receive results and check failed list
}
}, new V2NIMFailureCallback(){
@Override
public void onFailure(V2NIMError error){
int code = error.getCode();
String desc = error.getDesc();
// TODO
}
});
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService removeConversationsFromGroup:@"groupId"
conversationIds:@[@"conversationIdA", @"conversationIdB"]
success:^(NSArray<V2NIMConversationOperationResult *> * _Nonnull resultList) {
// receive resultList and check failed list
} failure:^(V2NIMError * _Nonnull error) {
// handle error
}];
C++conversationIds.emplace_back(V2NIMConversationId::p2pConversationId("account1"));
conversationIds.emplace_back(V2NIMConversationId::teamConversationId("team1"));
conversationGroupService.removeConversationsFromGroup(
"groupId",
conversationIds,
[](nstd::vector<V2NIMConversationOperationResult> failedList) {
// remove conversations from group succeeded
},
[](V2NIMError error) {
// remove conversations from group failed, handle error
});
TypeScripttry {
const conversationId1 = nim.V2NIMConversationIdUtil.p2pConversationId("account1")
const conversationId2 = nim.V2NIMConversationIdUtil.teamConversationId("team1")
const group = await nim.V2NIMConversationGroupService.removeConversationsFromGroup('GROUP_ID', [
conversationId1,
conversationId2
])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScripttry {
const result = await v2.conversationGroupService.removeConversationsFromGroup('group1', ['conversation1', 'conversation2'])
// todo: success
} catch (err) {
// todo: fail
// console.error(error.code)
}
TypeScriptnim.conversationGroupService.on('onConversationsRemovedFromGroup', (groupId: string, list: string[]) => {})
try {
const conversationId1 = nim.conversationIdUtil.p2pConversationId("account1")
const conversationId2 = nim.conversationIdUtil.teamConversationId("team1")
const group = await nim.conversationGroupService.removeConversationsFromGroup('GROUP_ID', [
conversationId1,
conversationId2
])
// Update UI with success message.
} catch (err) {
// TODO failed.
// console.error(error.code)
}
DartNimCore.instance.conversationGroupService.removeConversationsFromGroup('groupId', ['ids']).then((result){
if (result.isSuccess) {
// todo removeConversationsFromGroup success
}
});
相关信息
相关接口
API | 说明 |
---|---|
addConversationGroupListener |
注册云端会话分组相关监听器 |
removeConversationGroupListener |
取消注册云端会话分组相关监听器 |
createConversationGroup |
创建云端会话分组 |
deleteConversationGroup |
删除云端会话分组 |
getConversationGroup |
按照云端会话分组 ID 获取指定云端会话分组 |
getConversationGroupList |
获取全量云端会话分组信息 |
getConversationGroupListByIds |
按照云端会话分组 ID 批量获取云端会话分组列表 |
updateConversationGroup |
更新指定的云端会话分组 |
deleteConversationGroup |
根据云端会话 ID 删除指定云端会话分组 |
addConversationsToGroup |
将指定云端会话列表批量添加到指定的云端会话分组 |
removeConversationsFromGroup |
将指定云端会话列表从指定的云端会话分组中批量移除 |
getConversationListByOption |
根据云端会话分组 ID 获取云端会话列表 |
API | 说明 |
---|---|
on("EventName") |
注册云端会话分组相关监听器 |
off("EventName") |
取消注册云端会话分组相关监听器 |
createConversationGroup |
创建云端会话分组 |
deleteConversationGroup |
删除云端会话分组 |
getConversationGroup |
按照云端会话分组 ID 获取指定云端会话分组 |
getConversationGroupList |
获取全量云端会话分组信息 |
getConversationGroupListByIds |
按照云端会话分组 ID 批量获取云端会话分组列表 |
updateConversationGroup |
更新指定的云端会话分组 |
deleteConversationGroup |
根据会话 ID 删除指定云端会话分组 |
addConversationsToGroup |
将指定云端会话列表批量添加到指定的云端会话分组 |
removeConversationsFromGroup |
将指定云端会话列表从指定的云端会话分组中批量移除 |
getConversationListByOption |
根据云端会话分组 ID 获取云端会话列表 |
API | 说明 |
---|---|
listen |
注册云端会话分组相关监听器 |
cancel |
取消注册云端会话分组相关监听器 |
createConversationGroup |
创建云端会话分组 |
deleteConversationGroup |
删除云端会话分组 |
getConversationGroup |
按照云端会话分组 ID 获取指定云端会话分组 |
getConversationGroupList |
获取全量云端会话分组信息 |
getConversationGroupListByIds |
按照云端会话分组 ID 批量获取云端会话分组列表 |
updateConversationGroup |
更新指定的云端会话分组 |
deleteConversationGroup |
根据会话 ID 删除指定云端会话分组 |
addConversationsToGroup |
将指定云端会话列表批量添加到指定的云端会话分组 |
removeConversationsFromGroup |
将指定云端会话列表从指定的云端会话分组中批量移除 |
getConversationListByOption |
根据云端会话分组 ID 获取云端会话列表 |