# Chat Storage 插件 - iOS 实现 ## 概述 Chat Storage 插件的 iOS 实现,为 Flutter 应用提供本地 SQLite 数据库支持,用于存储和管理聊天记录。 ## 功能特性 - 基于 SQLite 的聊天记录存储 - 支持按会话分组消息 - 提供分页查询功能 - 支持元数据存储 - 完整的增删改查 API ## 技术实现 本插件使用原生 Swift 实现,通过 SQLite C API 直接操作数据库,不依赖第三方 SQLite 封装库,以保持最小的依赖要求和最佳性能。 ### 核心组件 - `ChatStorageHelper`: 负责 SQLite 数据库操作,提供完整的数据操作 API - `ChatStoragePlugin`: 插件主类,处理与 Flutter 的通信 ### 数据库结构 数据库包含一个 `messages` 表,结构如下: ```sql 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 端的实现,并确保在版本升级时提供适当的数据库迁移策略。 数据库迁移逻辑目前实现为重建表,在生产环境中应该改为保留用户数据的方式。