iMessage 导入格式覆盖不足:语音/Tapback/贴纸等类型静默丢失
Author: Ghost-Sam1222Created Jun 19, 2026Updated Jun 30, 2026
Labelsfeature
背景
ChatLab README 已将 iMessage 列为支持平台,但当前 v0.0.2 schema 的消息类型仅有:
| type | 含义 |
|---|---|
| 0 | 文本 |
| 1 | 图片 |
| 3 | 视频 |
| 4 | 文件 |
而 iMessage 实际包含的消息类型远多于此。以 imessage-exporter 对 chat.db 的诊断为例(23,922 条消息,838 个会话),存在以下 gap:
iMessage 存在但 ChatLab 无法承载的类型
| iMessage 类型 | 说明 | ChatLab 现状 |
|---|---|---|
| 语音消息 (CAF) | iMessage 内置录音发送 | ❌ type 枚举无槽位,导入后静默丢失 |
| Tapback(❤️ 等) | 对某条消息的快捷 reaction | ❌ 无法表达「谁对哪条消息做了什么 reaction」语义 |
| 贴纸 (Sticker) | iMessage 贴纸包 | ❌ 丢失 |
| 消息特效 (Message Effect) | 气球、烟花等全屏效果 | ❌ 丢失 |
| 已编辑消息 | iMessage 支持编辑已发消息 | ⚠️ 编辑历史可能丢失 |
此外 #170 提到即使 type 1/3/4 已定义,导入后图片和媒体也仅显示相对路径,无法实际查看。
期望
- 覆盖缺失的消息类型:至少为语音和 Tapback 增加 type 定义,或提供一个
unknown/fallback兜底类型,避免静默丢弃 - 保持语义:Tapback 应能表达「谁对哪条消息做了什么 reaction」,而非降级为纯文本
- 统一媒体路径问题(关联 #170):确保附件文件能被 ChatLab 正确读取展示
参考
- imessage-exporter: https://github.com/ReagentX/imessage-exporter
- imessage-chatlab(社区 ChatLab JSON 导出工具): https://github.com/gamesme/imessage-chatlab
- 相关 issue: #170 图片和媒体仅显示相对路径
Source: ChatLab/ChatLab