介绍
FoxTalk 是基于 TangSengDaoDao 二次开发的 Flutter 客户端。基础模块按 Apache 2.0 开源,从聊天列表到音视频通话,全部用 Flutter 重写,与 iOS 原版逐像素对齐。
原版 TangSengDaoDao 提供了 iOS (Objective-C) 与 Android (Java) 两套实现。FoxTalk 选择 Flutter 重写, 是因为一份 Dart 代码可以同时输出 iOS 和 Android 的原生级体验, 让我们把精力放在 IM 业务本身, 而不是维护两套 UI 代码。
项目架构
FoxTalk 在客户端侧采用三层架构, 自上而下:
Layer 03
UI 层
widget · page · 导航 · 动效
lib/src/ui/foruiCachedNetworkImage
Layer 02
应用层
业务模型 · service · 本地缓存 · KV 持久化
lib/src/<domain>/sqfliteshared_preferences
Layer 01
IM SDK 层
TCP/WebSocket 连接 · 协议编解码 · 本地 DB
wukongimfluttersdk9 张本地表TCP + ACK
整体设计原则: UI 层不直接调 SDK, 必须经应用层 service 中转。这样测试好做, 后续替换 IM 协议或加 mock 也容易。
基础模块(开源)
构成 IM 应用最核心的部分按 Apache 2.0 发布。源码可读、可改、可商用。
- OPENIM 核心连接、消息协议、ACK 机制、断线重连
- OPEN基础消息文本、图片、语音、名片、用户资料
- OPEN会话与群组会话列表、好友、基础群聊
- OPEN聊天 UI消息列表、气泡、输入面板、表情面板
- OPEN本地持久化sqflite + shared_preferences, 按 uid 隔离
增强模块(可选)
在基础模块之上可选叠加, 满足更深度的运营需求。
- EXT收藏文本与图片消息的云端收藏
- EXT位置地图位置选择与位置消息发送
- EXT文件文件选择、上传与分享
- EXT标签联系人标签的创建与管理
- EXT群高级群禁言、管理员、群头像、入群审核
- EXT小视频短视频录制、发送与播放
- EXT安全与隐私手机号保护、设备锁、黑名单
- EXT表情商店自制表情、动图表情
- EXT朋友圈动态发布、查看、评论
- EXT客服专属客服与智能分配
- EXT旗舰消息已读未读、点赞、截屏通知
- EXT音视频单人及群组视频通话
下一步
后续文档会覆盖编译运行、项目配置、SDK 分层、自定义消息类型、 私有化后端对接等主题。当前文档站还在建设中, 完整章节预计在后续版本上线。
last updated · 2026-05发现问题? 在 GitHub 提 issue