SDKsAndroid含商业版能力
群组概览
了解 Android SDK 中的群组概念、核心数据类型和主要能力。
OpenIM 的多人聊天场景通过群组承载共享资料、成员关系与权限管控。groupID 是群组的全局唯一标识,无论是发送群消息、读取群资料、管理成员还是处理入群申请都需要使用它。当前用户聊天列表中的群会话仍由 conversationID 统一管理,两者不可混淆。
核心数据类型
| 类型 | 用途 |
|---|---|
GroupInfo | 群名称、头像、公告、群主、验证配置、成员数和扩展字段。 |
GroupMembersInfo | 用户在指定群内的昵称、角色、禁言和入群信息。 |
GroupApplicationInfo | 入群申请及处理状态。 |
群成员角色使用 GroupRole 常量定义:MEMBER(普通成员)、ADMIN(管理员)、OWNER(群主)。
主要能力
- 创建群组与更新群名称、简介和头像
- 设置入群验证方式与发布或更新群公告
- 申请加入群组、退出群组与解散群组
- 查询指定群组资料与分页获取已加入群组
- 获取收到的入群申请与接受入群申请
- 分页查询群成员与获取群主和管理员
- 邀请用户加入群组与移除群成员
状态更新
在登录前注册 OnGroupListener 监听器,接收群资料、成员和入群申请的变化。群组状态在本地以 groupID 为合并标识,群成员状态以 groupID:userID 为合并标识:
private final OnGroupListener groupListener = new OnGroupListener() {
@Override
public void onJoinedGroupAdded(GroupInfo group) {
// 刷新已加入群组列表,以 group.getGroupID() 合并
}
@Override
public void onJoinedGroupDeleted(GroupInfo group) {
// 从已加入群组列表中移除对应 group.getGroupID()
}
@Override
public void onGroupInfoChanged(GroupInfo group) {
// 根据 group.getGroupID() 刷新群资料
}
@Override
public void onGroupDismissed(GroupInfo group) {
// 根据 group.getGroupID() 标记群组已解散并更新会话
}
@Override
public void onGroupMemberAdded(GroupMembersInfo member) {
// 根据 member.getGroupID() 增量添加群成员
}
@Override
public void onGroupMemberDeleted(GroupMembersInfo member) {
// 根据 member.getGroupID() 和 member.getUserID() 移除群成员
}
@Override
public void onGroupMemberInfoChanged(GroupMembersInfo member) {
// 根据 member.getGroupID() 和 member.getUserID() 更新群成员状态
}
@Override
public void onGroupApplicationAdded(GroupApplicationInfo application) {
// 刷新入群申请列表
}
@Override
public void onGroupApplicationAccepted(GroupApplicationInfo application) {
// 刷新入群申请列表
}
@Override
public void onGroupApplicationRejected(GroupApplicationInfo application) {
// 刷新入群申请列表
}
@Override
public void onGroupApplicationDeleted(GroupApplicationInfo application) {
// 刷新入群申请列表
}
};
public void registerGroupListener() {
OpenIMClient.getInstance().groupManager.setOnGroupListener(groupListener);
}群组管理 API 的成功回调表示本地或服务端请求执行成功。实际界面列表与成员缓存应结合监听器回调增量更新,或在必要时重新发起分页查询进行校准。
这个页面有帮助吗?