SDKsReact Native
群组概览
了解 React Native SDK 中的群组资料、成员、入群申请和群组事件。
OpenIM 的多人聊天由群组承载。在群组相关 API 中,使用 groupID 标识目标群组,例如查询群资料、管理群成员和处理入群申请。创建群组后,可从返回的群组信息中获取 groupID。群聊会话使用 conversationID 标识,用于会话设置、消息历史和未读状态等操作。conversationID 与 groupID 分别表示会话和群组,调用时不要混淆。
核心数据类型
| 类型 | 用途 |
|---|---|
GroupItem | 群名称、头像、公告、群主、入群验证方式、成员数和扩展字段。 |
GroupMemberItem | 用户在指定群内的昵称、角色、禁言状态和入群信息。 |
群成员角色由 GroupMemberRole 表示:Normal 为普通成员,Admin 为管理员,Owner 为群主。
GroupItem 常用字段
| 字段 | 类型 | 说明 |
|---|---|---|
groupID | string | 群组 ID。 |
groupName | string | 群组名称。 |
notification | string | 群组公告。 |
friendUserIDs | string | 群组好友用户 ID 信息。 |
remark | string | 当前账号设置的群组备注。 |
GroupMemberItem 常用字段
| 字段 | 类型 | 说明 |
|---|---|---|
groupID | string | 成员所属的群组 ID。 |
userID | string | 成员用户 ID。 |
nickname | string | 用户在当前群内的昵称。 |
faceURL | string | 用户在当前群内的头像地址。 |
roleLevel | GroupMemberRole | 成员角色。 |
muteEndTime | number | 禁言结束时间。 |
joinTime | number | 加入群组的时间。 |
joinSource | GroupJoinSource | 入群来源。 |
inviterUserID | string | 邀请该成员入群的用户 ID。 |
operatorUserID | string | 最近操作该成员资料的用户 ID。 |
ex | string | 群成员扩展字符串。 |
nickname、faceURL 和 roleLevel 均属于当前群组中的成员资料;同一用户在其他群组中可能不同。
按任务查找页面
| 任务 | 页面 |
|---|---|
| 创建和维护群资料 | 创建群组、更新群名称、简介和头像、发布或更新群公告、设置群组扩展字段 |
| 设置入群和成员权限 | 设置入群验证方式、设置成员资料查看权限、设置群内添加好友权限 |
| 加入、退出或解散群组 | 申请加入群组、退出群组、解散群组 |
| 查询群组 | 查询指定群组资料、分页获取已加入群组、搜索群组 |
| 查询和处理入群申请 | 获取收到的入群申请、获取发出的入群申请 |
| 查询和管理群成员 | 分页查询群成员、邀请用户加入群组、移除群成员、设置管理员、转让群主 |
| 管理群聊发言权限 | 设置群组全员禁言、设置群成员禁言 |
监听群组变化
当前账号加入或退出群组、群资料变化以及群组解散时,分别触发 OnJoinedGroupAdded、OnJoinedGroupDeleted、OnGroupInfoChanged 和 OnGroupDismissed。这些事件回调直接接收 GroupItem:
const handleJoinedGroupAdded = (group: GroupItem) => {
// 将 group 添加到已加入群组列表
};
const handleJoinedGroupDeleted = (group: GroupItem) => {
// 根据 group.groupID 从已加入群组列表删除群组
};
const handleGroupInfoChanged = (group: GroupItem) => {
// 根据 group.groupID 更新群组资料
};
const handleGroupDismissed = (group: GroupItem) => {
// 根据 group.groupID 关闭或移除已解散的群组
};
// 设置监听
OpenIMSDK.on(OpenIMEvent.OnJoinedGroupAdded, handleJoinedGroupAdded);
OpenIMSDK.on(OpenIMEvent.OnJoinedGroupDeleted, handleJoinedGroupDeleted);
OpenIMSDK.on(OpenIMEvent.OnGroupInfoChanged, handleGroupInfoChanged);
OpenIMSDK.on(OpenIMEvent.OnGroupDismissed, handleGroupDismissed);
// 取消监听
OpenIMSDK.off(OpenIMEvent.OnJoinedGroupAdded, handleJoinedGroupAdded);
OpenIMSDK.off(OpenIMEvent.OnJoinedGroupDeleted, handleJoinedGroupDeleted);
OpenIMSDK.off(OpenIMEvent.OnGroupInfoChanged, handleGroupInfoChanged);
OpenIMSDK.off(OpenIMEvent.OnGroupDismissed, handleGroupDismissed);退出登录、切换账号或销毁群组相关状态时,取消这些监听。群成员变化的监听见分页查询群成员,入群申请变化的监听见获取收到的入群申请。
这个页面有帮助吗?