You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
1 year ago | |
|---|---|---|
| .. | ||
| Classes | 1 year ago | |
| README.md | 1 year ago | |
| chat_storage.podspec | 1 year ago | |
README.md
Chat Storage 插件 - iOS 实现
概述
Chat Storage 插件的 iOS 实现,为 Flutter 应用提供本地 SQLite 数据库支持,用于存储和管理聊天记录。
功能特性
- 基于 SQLite 的聊天记录存储
- 支持按会话分组消息
- 提供分页查询功能
- 支持元数据存储
- 完整的增删改查 API
技术实现
本插件使用原生 Swift 实现,通过 SQLite C API 直接操作数据库,不依赖第三方 SQLite 封装库,以保持最小的依赖要求和最佳性能。
核心组件
ChatStorageHelper: 负责 SQLite 数据库操作,提供完整的数据操作 APIChatStoragePlugin: 插件主类,处理与 Flutter 的通信
数据库结构
数据库包含一个 messages 表,结构如下:
CREATE TABLE messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL,
message TEXT NOT NULL,
sender TEXT NOT NULL,
timestamp TEXT NOT NULL,
metadata TEXT
);
-- 索引
CREATE INDEX idx_session_id ON messages (session_id);
CREATE INDEX idx_timestamp ON messages (timestamp);
使用注意事项
SQLite 多线程访问
本插件所有数据库操作均在主线程执行,以避免 SQLite 多线程访问的复杂性。在处理大量数据时,建议在 Flutter 层面使用 compute 函数或 Isolate 进行异步处理。
数据格式
- 时间戳使用
yyyy-MM-dd HH:mm:ss格式的字符串 - JSON 转换遵循 Swift/Objective-C 的类型映射规则
调试与故障排除
- 日志前缀为
ChatStoragePlugin和ChatStorageHelper - 可通过 Console.app 查看日志输出
- 数据库文件存储在应用的 Documents/Databases 目录下
开发者须知
如果需要扩展此插件的功能,比如添加新的表或字段,应同时更新 Android 和 iOS 端的实现,并确保在版本升级时提供适当的数据库迁移策略。
数据库迁移逻辑目前实现为重建表,在生产环境中应该改为保留用户数据的方式。