云端会话分组管理

更新时间: 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);
iOS

调用 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
macOS/Windows

调用 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);
Web/uni-app/小程序

调用 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)
});
Node.js/Electron

调用 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[]) => {})
Flutter

调用 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);
iOS

如需移除云端会话分组相关监听器,可调用 removeConversationGroupListener

Objective-Cid<V2NIMConversationGroupListener> listener;
[NIMSDK.sharedSDK.v2ConversationGroupService removeConversationGroupListener:listener];
macOS/Windows

如需移除云端会话分组相关监听器,可调用 removeConversationGroupListener

C++V2NIMConversationGroupListener listener;
conversationGroupService.removeConversaionGroupListener(listener);
Web/uni-app/小程序

如需移除云端会话分组相关监听,可调用 off("EventName")

TypeScriptnim.V2NIMConversationGroupService.off("onConversationGroupCreated")
nim.V2NIMConversationGroupService.off("onConversationGroupDeleted")
nim.V2NIMConversationGroupService.off("onConversationGroupChanged")
nim.V2NIMConversationGroupService.off("onConversationsAddedToGroup")
nim.V2NIMConversationService.off("onConversationsRemovedFromGroup")
Node.js/Electron

如需移除云端会话分组相关监听,可调用 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)
Flutter

如需移除云端会话分组相关监听器,可调用 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
        }
    });
iOS
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
}];
macOS/Windows
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
    });
Web/uni-app/小程序
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)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroup:@"groupId"
    success:^(V2NIMConversationGroup * _Nonnull group) {
        // receive group
    }
    failure:^(V2NIMError * _Nonnull error) {
        // handle error
    }];
macOS/Windows
C++conversationGroupService.getConversationGroup(
    "groupId",
    [](V2NIMConversationGroup group) {
        // get conversation group succeeded
    },
    [](V2NIMError error) {
        // get conversation group failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
    const group = await nim.V2NIMConversationGroupService.getConversationGroup    ('GROUP_ID')
    // todo: success
} catch (err) {
    // todo: fail
    // console.error(error.code)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroupList:^ (NSArray<V2NIMConversationGroup *> * _Nonnull groups) {
    // receive all groups
} failure:^(V2NIMError * _Nonnull error) {
    // handle error
}];
macOS/Windows
C++conversationGroupService.getConversationGroupList(
    [](V2NIMConversationGroupList groupList) {
        // get conversation group list succeeded
    },
    [](V2NIMError error) {
        // get conversation group list failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
    const groupList = await nim.V2NIMConversationGroupService.getConversationGroupList()
    // todo: success
} catch (err) {
    // todo: failed
    // console.error(error.code)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService getConversationGroupListByIds:@    [@"groupIdA", @"groupIdB"] success:^(NSArray<V2NIMConversationGroup *> * _Nonnull   groups) {
    // receive groups
} failure:^(V2NIMError * _Nonnull error) {
    // handle error
}];
macOS/Windows
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
    });
Web/uni-app/小程序
TypeScripttry {
    const groupList = await nim.V2NIMConversationGroupService.    getConversationGroupListByIds(["GROUP_ID1"])
    // todo: success
} catch (err) {
    // todo: fail
    // console.error(error.code)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService updateConversationGroup:@"groupId"     name:@"newName" serverExtension:@"newServerExtension" success:^{
    // update successfully
        } failure:^(V2NIMError * _Nonnull error) {
            // handle error
        }];
macOS/Windows
C++conversationGroupService.updateConversaionGroup(
    "groupId",
    "name",
    "serverExtension",
    [](V2NIMConversationGroup group) {
        // update conversation group succeeded
    },
    [](V2NIMError error) {
        // update conversation group failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
  const group = await nim.V2NIMConversationGroupService.updateConversationGroup('GROUP_ID', 'NAME', "SERVER_EXTENSION")
  // todo: success
} catch (err) {
  // todo: fail
  // console.error(error.code)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
Objective-C[NIMSDK.sharedSDK.v2ConversationGroupService deleteConversationGroup:@"groupId"     success:^{
    // delete successfully
        } failure:^(V2NIMError * _Nonnull error) {
            // handle error
        }];
macOS/Windows
C++conversationGroupService.deleteConversationGroup(
    "groupId",
    []() {
        // delete conversation group succeeded
    },
    [](V2NIMError error) {
        // delete conversation group failed, handle error
    });
Web/uni-app/小程序
TypeScripttry {
    await nim.V2NIMConversationGroupService.deleteConversationGroup('GROUP_ID')
    // todo: success
} catch (err) {
    // todo: fail
    // console.error(error.code)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
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
}];
macOS/Windows
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
    });
Web/uni-app/小程序
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)
}
Node.js/Electron
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)
}
Flutter
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
    }
});
iOS
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
}];
macOS/Windows
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
    });
Web/uni-app/小程序
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)
}
Node.js/Electron
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)
}
Flutter
DartNimCore.instance.conversationGroupService.removeConversationsFromGroup('groupId', ['ids']).then((result){
        if (result.isSuccess) {
          // todo removeConversationsFromGroup success
        }
  });

相关信息

相关接口

安卓/iOS/macOS/Windows
API 说明
addConversationGroupListener 注册云端会话分组相关监听器
removeConversationGroupListener 取消注册云端会话分组相关监听器
createConversationGroup 创建云端会话分组
deleteConversationGroup 删除云端会话分组
getConversationGroup 按照云端会话分组 ID 获取指定云端会话分组
getConversationGroupList 获取全量云端会话分组信息
getConversationGroupListByIds 按照云端会话分组 ID 批量获取云端会话分组列表
updateConversationGroup 更新指定的云端会话分组
deleteConversationGroup 根据云端会话 ID 删除指定云端会话分组
addConversationsToGroup 将指定云端会话列表批量添加到指定的云端会话分组
removeConversationsFromGroup 将指定云端会话列表从指定的云端会话分组中批量移除
getConversationListByOption 根据云端会话分组 ID 获取云端会话列表
Web/uni-app/小程序/Node.js/Electron/鸿蒙
API 说明
on("EventName") 注册云端会话分组相关监听器
off("EventName") 取消注册云端会话分组相关监听器
createConversationGroup 创建云端会话分组
deleteConversationGroup 删除云端会话分组
getConversationGroup 按照云端会话分组 ID 获取指定云端会话分组
getConversationGroupList 获取全量云端会话分组信息
getConversationGroupListByIds 按照云端会话分组 ID 批量获取云端会话分组列表
updateConversationGroup 更新指定的云端会话分组
deleteConversationGroup 根据会话 ID 删除指定云端会话分组
addConversationsToGroup 将指定云端会话列表批量添加到指定的云端会话分组
removeConversationsFromGroup 将指定云端会话列表从指定的云端会话分组中批量移除
getConversationListByOption 根据云端会话分组 ID 获取云端会话列表
Flutter
API 说明
listen 注册云端会话分组相关监听器
cancel 取消注册云端会话分组相关监听器
createConversationGroup 创建云端会话分组
deleteConversationGroup 删除云端会话分组
getConversationGroup 按照云端会话分组 ID 获取指定云端会话分组
getConversationGroupList 获取全量云端会话分组信息
getConversationGroupListByIds 按照云端会话分组 ID 批量获取云端会话分组列表
updateConversationGroup 更新指定的云端会话分组
deleteConversationGroup 根据会话 ID 删除指定云端会话分组
addConversationsToGroup 将指定云端会话列表批量添加到指定的云端会话分组
removeConversationsFromGroup 将指定云端会话列表从指定的云端会话分组中批量移除
getConversationListByOption 根据云端会话分组 ID 获取云端会话列表
此文档是否对你有帮助?
有帮助
去反馈
  • 支持平台
  • 准备工作
  • 限制说明
  • 监听云端会话分组相关事件
  • 注册监听
  • 移除监听
  • 创建会话分组
  • 获取会话分组
  • 获取指定单个会话分组
  • 获取所有会话分组信息
  • 批量获取指定的会话分组列表
  • 根据会话分组 ID 分页获取会话列表
  • 更新会话分组
  • 删除会话分组
  • 将会话添加到分组
  • 将会话从分组中移除
  • 相关信息
  • 相关接口