ChatAppDemo 项目说明文档
项目概述
ChatAppDemo 是一个基于 OpenHarmony 系统开发的模拟即时通讯应用,使用 ETS (eTS) 语言和 ArkUI 框架实现。应用提供了完整的聊天功能,包括用户注册登录、消息发送接收、联系人管理、动态发布等核心功能,是一个功能齐全的社交应用示例。
项目结构
项目采用模块化架构设计,代码组织清晰,主要目录结构如下:
entry/src/main/ets/
├── common/ # 公共资源和工具类
│ └── I18nManager.ets # 国际化管理
├── components/ # 可复用组件
│ ├── ChatList.ets # 聊天列表组件
│ ├── Contact.ets # 联系人组件
│ ├── ContactGroup.ets # 联系人分组组件
│ ├── LocationPickerDialog.ets # 位置选择对话框
│ ├── NavTitle.ets # 导航标题组件
│ ├── Post.ets # 动态发布组件
│ └── Profile.ets # 个人资料组件
├── entryability/ # 应用入口能力
│ ├── EntryAbility.ets # 主入口能力
│ └── EntryBackupAbility.ets # 备份入口能力
├── pages/ # 页面文件
│ ├── AboutUs.ets # 关于页面
│ ├── AddFriends.ets # 添加好友页面
│ ├── AddPost.ets # 发布动态页面
│ ├── ChangePassword.ets # 修改密码页面
│ ├── Chat.ets # 聊天页面
│ ├── EditProfile.ets # 编辑个人资料页面
│ ├── FriendDetail.ets # 好友详情页面
│ ├── Index.ets # 启动页面
│ ├── LanguageSettings.ets # 语言设置页面
│ ├── LicenseAgreement.ets # 许可证协议页面
│ ├── Login.ets # 登录页面
│ ├── Main.ets # 主页面
│ ├── NewFriends.ets # 新好友页面
│ ├── Register.ets # 注册页面
│ └── Settings.ets # 设置页面
├── utils/ # 工具类
│ ├── ChatHandler.ets # 聊天相关操作
│ ├── DatabaseManager.ets # 数据库管理
│ ├── FriendHandler.ets # 好友相关操作
│ ├── LocationData.ets # 位置数据
│ ├── PinyinData.ets # 拼音数据
│ ├── PostHandler.ets # 动态相关操作
│ └── UserHandler.ets # 用户相关操作
└── viewmodel/ # 数据模型
├── ContactModel.ets # 联系人模型
├── FriendRequestModel.ets # 好友请求模型
├── Message.ets # 消息模型
├── PostModel.ets # 动态模型
└── UserModel.ets # 用户模型
核心功能
1. 用户管理
- 注册登录:支持手机号注册和登录
- 个人资料:查看和编辑个人资料,包括昵称、头像等
- 密码修改:支持修改登录密码
2. 聊天功能
- 消息列表:显示最近的聊天会话
- 单聊:与好友进行一对一聊天
- 消息历史:查看聊天历史记录
- 好友验证:只有好友才能发送消息
3. 联系人管理
- 联系人列表:按字母顺序显示联系人
- 添加好友:通过手机号添加好友
- 好友请求:接收和处理好友请求
- 好友详情:查看好友详细信息
4. 动态发布
- 发布动态:支持发布文字和图片动态
- 动态列表:查看所有好友的动态
- 点赞评论:支持对动态进行点赞和评论
5. 其余功能
- 国际化:支持多语言切换
- 设置管理:应用相关设置
- 关于:应用信息和许可证协议
技术架构
1. 前端框架
- ArkUI:OpenHarmony 原生 UI 框架
- ETS:eTS 开发语言,基于 TypeScript 扩展
2. 数据管理
- DatabaseManager:数据库管理类,负责初始化和管理数据库连接
- 关系型数据库:使用 OpenHarmony 提供的 relationalStore 进行本地数据存储
- 数据模型:使用 viewmodel 目录下的模型类封装数据结构
3. 核心模块
- UserHandler:用户相关数据库操作
- FriendHandler:好友关系相关操作
- ChatHandler:聊天消息相关操作
- PostHandler:动态发布相关操作
4. 通信机制
- Emitter:使用 emitter 进行组件间通信,实现消息刷新等功能
- AppStorage:使用全局状态管理,实现跨页面数据共享
- PersistentStorage:实现数据持久化,保存用户登录状态
5. 国际化
- I18nManager:国际化管理类,支持多语言切换
- 资源文件:使用 Resource 类型管理多语言字符串
关键实现
1. 登录流程
- 用户在登录页面输入手机号和密码
- 系统通过
DatabaseManager查询用户信息 - 验证密码是否正确
- 登录成功后,使用
@StorageLink存储当前用户信息 - 通过
PersistentStorage持久化用户登录状态
2. 聊天功能实现
- 消息存储:使用本地数据库存储聊天消息,每条消息包含发送者、接收者、内容、时间等信息
- 消息发送:用户发送消息后,同时存储两条记录(发送方和接收方各一条)
- 消息刷新:使用
emitter机制实现聊天列表的实时刷新 - 好友验证:发送消息前检查双方是否为好友关系
3. 联系人管理
- 联系人分组:根据拼音首字母对联系人进行分组
- 好友请求:支持发送、接收和处理好友请求
- 关系管理:维护好友关系的建立和解除
4. 动态发布
- 内容存储:将动态内容存储到本地数据库
- 点赞机制:记录用户的点赞状态
- 评论功能:支持对动态进行评论
数据库设计
应用使用关系型数据库存储数据,主要表结构如下:
1. User 表
- 存储用户基本信息
- 字段:id, avatarPath, nickName, country, phoneNumber, password
2. FriendRequest 表
- 存储好友请求信息
- 字段:id, fromPhone, toPhone, fromName, message, status
3. Friend 表
- 存储好友关系
- 字段:id, myPhone, friendPhone
4. ChatHistory 表
- 存储聊天记录
- 字段:id, owner, targetPhone, nickName, content, time, isSelf, avatar
5. Post 表
- 存储动态信息
- 字段:id, owner, avatar, nickname, publishTime, content, image, likeCount, isLiked, comments
6. LikeRecord 表
- 存储点赞记录
- 字段:id, postId, userPhone
技术特点
- 模块化设计:采用组件化和模块化设计,代码复用率高
- 响应式布局:使用 ArkUI 的声明式 UI,实现自适应布局
- 数据持久化:使用关系型数据库和 PersistentStorage 实现数据持久化
- 国际化支持:内置国际化管理,支持多语言切换
- 组件通信:使用 emitter 和全局状态管理实现组件间通信
- 类型安全:使用 TypeScript 语法,提供类型检查
依赖和配置
核心依赖
- @kit.AbilityKit:能力管理
- @kit.ArkUI:UI 框架
- @kit.ArkData:数据存储
- @kit.PerformanceAnalysisKit:性能分析
- @kit.BasicServicesKit:基础服务
配置信息
- 数据库配置:使用安全级别 S1,数据库名称为 ChatDatabase.db
- 存储配置:使用 PersistentStorage 持久化用户登录状态
- 权限配置:需要申请相关权限以支持完整功能
使用说明
1. 运行环境
- OpenHarmony 3.0 及以上版本
- DevEco Studio 3.0 及以上版本
2. 安装部署
- 使用 DevEco Studio 打开项目
- 连接 OpenHarmony 设备或模拟器
- 编译并运行项目
3. 功能使用
注册登录
- 初次使用需要注册账号,输入手机号和密码
- 注册成功后可以直接登录
- 登录后系统会记住登录状态
聊天功能
- 在聊天列表页面可以查看最近的聊天记录
- 点击列表项进入聊天页面
- 在聊天页面可以发送和接收消息
联系人管理
- 在联系人页面可以查看所有好友
- 点击添加好友按钮,输入手机号添加好友
- 在新好友页面处理好友请求
动态发布
- 在动态页面可以查看所有好友的动态
- 点击发布按钮,输入内容发布动态
- 可以对动态进行点赞和评论
开发指南
1. 代码结构
- 页面开发:在 pages 目录下创建新页面
- 组件开发:在 components 目录下创建可复用组件
- 工具类:在 utils 目录下创建工具类
- 数据模型:在 viewmodel 目录下定义数据模型
2. 数据库操作
- 使用 DatabaseManager 进行数据库初始化
- 通过各 Handler 类进行具体的数据库操作
- 新增功能时,需要在 DatabaseManager 中添加相应的建表语句
3. 国际化
- 在 I18nManager 中管理语言设置
- 使用 Resource 类型引用字符串资源
- 在资源文件中添加多语言支持
4. 性能优化
- 合理使用 @State、@StorageLink 等状态管理
- 避免频繁的 UI 更新
- 优化数据库查询,减少不必要的操作
注意事项
- 数据存储:当前版本使用本地数据库存储数据,未实现服务器端同步
- 权限申请:部分功能需要申请相应权限,请在使用前确保权限已获取
- 国际化:需要在资源文件中添加相应的多语言支持
- 兼容性:建议在 OpenHarmony 3.0 及以上版本运行
总结
ChatAppDemo 是一个功能齐全的模拟即时通讯应用示例,展示了如何使用 OpenHarmony 和 ArkUI 开发复杂的移动应用。该项目结构清晰,代码组织合理,是学习 OpenHarmony 应用开发的示例。通过本项目,开发者可以了解到如何实现用户管理、聊天功能、联系人管理、动态发布等核心社交应用功能,以及如何使用 OpenHarmony 提供的各种能力和 API。
许可证
本项目采用 Apache License 2.0 许可证,详情请参考 LICENSE 文件。