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.

2.0 KiB

Chat Storage 插件 - iOS 实现

概述

Chat Storage 插件的 iOS 实现,为 Flutter 应用提供本地 SQLite 数据库支持,用于存储和管理聊天记录。

功能特性

  • 基于 SQLite 的聊天记录存储
  • 支持按会话分组消息
  • 提供分页查询功能
  • 支持元数据存储
  • 完整的增删改查 API

技术实现

本插件使用原生 Swift 实现,通过 SQLite C API 直接操作数据库,不依赖第三方 SQLite 封装库,以保持最小的依赖要求和最佳性能。

核心组件

  • ChatStorageHelper: 负责 SQLite 数据库操作,提供完整的数据操作 API
  • ChatStoragePlugin: 插件主类,处理与 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 端的实现,并确保在版本升级时提供适当的数据库迁移策略。

数据库迁移逻辑目前实现为重建表,在生产环境中应该改为保留用户数据的方式。