Files
zhini_im/(红头)功能和业务逻辑113.txt
rw0067680 c01808ac21 first commit
Change-Id: Ib7c2ab10a2562044fcaf9879388a6cbc1db6ac61
2025-12-23 10:00:49 +08:00

292 lines
8.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Android IM即时通讯应用 - 功能和业务逻辑分析报告
## 项目概述
这是一个基于野火IMWildFireChat的Android即时通讯应用应用名称为"知你",是一个集成了即时通讯、社交功能、音视频通话、会议等功能的综合性社交应用。
## 一、项目架构分析
### 1.1 模块结构
项目采用多模块架构,主要包含以下模块:
- **app**: 主应用模块,包含应用入口和主要业务逻辑
- **uikit**: UI工具包提供聊天界面、用户界面等组件
- **client**: 客户端核心模块处理IM连接和消息传输
- **avenginekit**: 音视频引擎,处理音视频通话功能
- **webrtc**: WebRTC音视频通信
- **pttclient**: 对讲机客户端
- **push**: 推送服务模块
- **emojilibrary**: 表情库
- **imagepicker**: 图片选择器
- **photoview**: 图片查看器
- **badgeview**: 角标视图
- **library**: 基础库
### 1.2 技术栈
- **开发语言**: Java
- **最低SDK版本**: 21 (Android 5.0)
- **目标SDK版本**: 34 (Android 14)
- **架构模式**: MVVM + Fragment
- **网络库**: OkHttp
- **图片加载**: Glide
- **地图服务**: 腾讯地图SDK
- **音视频**: WebRTC + AVEngineKit
## 二、核心功能分析
### 2.1 用户认证与登录
**功能描述**: 支持多种登录方式,包括密码登录、短信验证码登录等
**主要组件**:
- `SplashActivity`: 启动页,检查登录状态
- `LoginActivity`: 密码登录界面
- `SMSLoginActivity`: 短信验证码登录
- `SMSSendLoginActivity`: 发送验证码界面
**业务逻辑**:
1. 启动时检查本地存储的用户ID和Token
2. 如果存在有效凭据,直接进入主界面
3. 否则跳转到登录界面
4. 支持PC端登录确认功能
5. 登录成功后保存用户凭据到KeyStore
### 2.2 即时通讯功能
**功能描述**: 核心聊天功能,支持单聊、群聊、消息类型丰富
**主要组件**:
- `MainActivity`: 主界面,包含底部导航
- `ConversationListFragment`: 会话列表
- `ConversationActivity`: 聊天界面
- `MessageViewModel`: 消息管理
- `ConversationMessageAdapter`: 消息适配器
**支持的消息类型**:
- 文本消息
- 图片消息
- 语音消息
- 视频消息
- 文件消息
- 位置消息
- 表情消息
- 引用消息
- 撤回消息
**业务逻辑**:
1. 消息发送通过ChatManager发送消息到服务器
2. 消息接收:监听服务器推送的消息
3. 消息状态:发送中、已发送、已送达、已读
4. 消息存储:本地数据库存储消息历史
5. 消息同步:支持多端消息同步
### 2.3 音视频通话功能
**功能描述**: 支持一对一音视频通话和多人会议
**主要组件**:
- `AVEngineKit`: 音视频引擎
- `SingleCallActivity`: 单人通话界面
- `MultiCallActivity`: 多人通话界面
- `ConferenceActivity`: 会议界面
- `VoipCallService`: 通话服务
**功能特性**:
- 一对一音视频通话
- 多人音视频会议最多16人音频9人视频
- 屏幕共享功能
- 通话录制
- 静音/取消静音
- 摄像头开关
- 通话质量监控
**业务逻辑**:
1. 发起通话创建CallSession邀请参与者
2. 接听通话:响应通话邀请,建立连接
3. 通话控制:静音、摄像头、屏幕共享等操作
4. 通话结束:清理资源,更新状态
### 2.4 社交功能
**功能描述**: 类似朋友圈的社交功能,支持发布动态、点赞、评论等
**主要组件**:
- `DiscoveryFragment`: 广场/发现页面
- `PublishActivity`: 发布动态
- `PengyouquanActivity`: 朋友圈
- `FollowFansActivity`: 关注粉丝管理
**功能特性**:
- 发布文字、图片、视频动态
- 点赞和取消点赞
- 评论和回复
- 关注和取消关注
- 动态分享
- 用户资料展示
**业务逻辑**:
1. 动态发布:上传媒体文件,发布到服务器
2. 动态展示:分页加载动态列表
3. 互动功能:点赞、评论、分享
4. 用户关系:关注、粉丝管理
### 2.5 联系人管理
**功能描述**: 好友管理、群组管理、黑名单等功能
**主要组件**:
- `ContactListFragment`: 联系人列表
- `ContactListActivity`: 联系人管理
- `UserInfoActivity`: 用户信息页面
**功能特性**:
- 好友列表管理
- 好友申请处理
- 群组创建和管理
- 黑名单管理
- 用户搜索
- 二维码添加好友
### 2.6 设置与个人中心
**功能描述**: 用户设置、个人信息管理等功能
**主要组件**:
- `MeFragment`: 个人中心
- `SettingActivity`: 设置页面
- `AccountActivity`: 账号管理
- `AboutActivity`: 关于页面
**功能特性**:
- 个人信息编辑
- 账号安全设置
- 消息通知设置
- 隐私设置
- 主题设置
- 应用版本信息
## 三、技术实现细节
### 3.1 网络架构
- **IM服务器**: 基于野火IM服务器
- **HTTP API**: RESTful API接口
- **WebSocket**: 实时消息推送
- **文件上传**: 七牛云存储
### 3.2 数据存储
- **本地数据库**: SQLite存储消息、联系人等
- **SharedPreferences**: 用户设置、登录状态
- **KeyStore**: 敏感信息加密存储
### 3.3 权限管理
应用申请了丰富的权限以支持各种功能:
- 相机权限:拍照、视频通话
- 麦克风权限:语音消息、通话
- 存储权限:文件上传下载
- 位置权限:位置分享
- 通知权限:消息推送
- 蓝牙权限:设备连接
### 3.4 推送服务
支持多厂商推送:
- 小米推送MiPush
- 华为推送HMS
- 魅族推送
- VIVO推送
- OPPO推送
- Firebase推送
## 四、业务流程分析
### 4.1 用户注册登录流程
1. 用户启动应用 → SplashActivity检查登录状态
2. 未登录 → 跳转SMSLoginActivity
3. 输入手机号 → 发送验证码
4. 输入验证码 → 验证通过
5. 获取IM Token → 连接IM服务器
6. 登录成功 → 进入MainActivity
### 4.2 消息发送流程
1. 用户在聊天界面输入消息
2. 创建Message对象设置内容和接收者
3. 调用ChatManager.sendMessage()
4. 消息发送到IM服务器
5. 服务器推送给接收方
6. 更新消息状态(发送中→已发送→已送达→已读)
### 4.3 音视频通话流程
1. 发起方点击通话按钮
2. 创建CallSession邀请对方
3. 接收方收到通话邀请
4. 双方建立音视频连接
5. 通话过程中可进行静音、摄像头等操作
6. 通话结束,清理资源
### 4.4 社交动态发布流程
1. 用户点击发布按钮
2. 选择媒体内容(图片/视频)
3. 编辑文字内容
4. 上传媒体文件到七牛云
5. 调用API发布动态到服务器
6. 动态显示在广场和朋友圈
## 五、安全机制
### 5.1 数据安全
- 敏感信息使用KeyStore加密存储
- 网络传输使用HTTPS
- 用户密码加密传输
- 消息内容端到端加密(可选)
### 5.2 权限控制
- 动态权限申请
- 权限使用说明
- 权限被拒绝时的降级处理
### 5.3 用户隐私
- 用户信息保护
- 消息内容保护
- 位置信息保护
- 媒体文件保护
## 六、性能优化
### 6.1 内存优化
- 图片加载使用Glide支持内存缓存
- 消息列表使用RecyclerView支持视图复用
- 及时释放不用的资源
### 6.2 网络优化
- 消息批量发送
- 图片压缩上传
- 网络状态检测
- 离线消息同步
### 6.3 电量优化
- 后台服务优化
- 推送消息聚合
- 音视频通话电量管理
## 七、扩展功能
### 7.1 工作台功能
- 支持WebView加载工作台页面
- 可配置工作台URL
- 支持JavaScript与原生交互
### 7.2 对讲机功能
- PTTPush to Talk对讲
- 群组对讲
- 对讲权限管理
### 7.3 会议功能
- 会议创建和加入
- 会议权限控制
- 会议录制功能
## 八、总结
这是一个功能完整的即时通讯应用,具备以下特点:
1. **功能丰富**: 集成了即时通讯、社交、音视频通话、会议等多种功能
2. **技术先进**: 使用WebRTC、野火IM等先进技术
3. **架构清晰**: 模块化设计,代码结构清晰
4. **用户体验**: 界面友好,交互流畅
5. **扩展性强**: 支持多种扩展功能和第三方集成
该应用适用于企业内训、社交平台、在线教育等多种场景,是一个成熟的即时通讯解决方案。