Skip to content

iOS 客户端产品线

职责与边界

iOS 客户端负责身份创建与本地保存、联系人信任呈现、端到端加解密的用户入口、消息状态、加密备份、实例 Profile 管理、本地双密码路由和系统级隐私保护。服务端、对象存储和 Push Gateway 不应接触消息明文或私钥。[MUST]

本文只固定用户可见行为与验收边界,不选择或冻结密码协议、KDF 参数、数据库实现、格式化底层编排或开源许可。[已验证事实]

已确认技术约束

  • iOS 客户端采用 Swift 与 SwiftUI;具体系统 API、第三方依赖和持久化实现仍按 ADR、许可证与可行性验证管理。[已验证事实]
  • 客户端面向 Go + Docker 服务端、PostgreSQL、Redis + 队列和 S3 兼容对象存储组成的后端路线,但不直接依赖某个云厂商。[已验证事实]
  • S3 兼容对象存储属于后端基础设施边界,不改变 MVP 只支持一对一文本、回复和反应的产品范围;图片、文件、语音和视频均不进入 MVP。[MUST]
  • 项目不建设 Web 管理后台;iOS 设置和诊断页只管理当前用户可见的实例连接与本地状态,不承担实例管理员后台职责。[已验证事实]

首版页面能力

  • 首次启动:欢迎、选择实例、校验实例、创建身份、备份提示。[MUST]
  • 联系人:列表、请求、地址输入、扫码、验证状态、安全码、密钥变化、阻止。[MUST]
  • 会话:会话列表、一对一文本聊天、回复、反应、复制、转发、删除本地、详情。[MUST]
  • 个人资料:显示名、头像、完整 VMax 地址、二维码、身份公钥、备份和删除身份。[MUST]
  • 设置:隐私、通知、会话、外观、存储、服务器与网络、安全诊断、App Lock、双密码与伪装。[MUST]
  • 锁屏与空白空间:统一密码输入;主密码进入真实空间,假密码进入独立空白空间。[MUST]

数据与界面隔离的用户可见要求

  1. 每个实例的身份和数据作为独立 Profile 呈现;切换实例必须选择已有 Profile、创建新身份或导入属于该实例的身份。[MUST]
  2. 真实空间和空白空间在联系人、会话、身份、实例、备份、搜索、通知、分享页和诊断中均不能交叉暴露。[MUST]
  3. App 进入后台时立即遮蔽多任务快照;通知采用最小内容预览。[MUST]
  4. 主密码、假密码、备份密码和可逆材料不出现在网络请求、日志、分析、崩溃报告或诊断导出中。[MUST]
  5. 权限只在用户触发相应任务时申请;拒绝权限后提供可继续或可恢复的路径。[建议]

状态与恢复

  • 所有远程操作都有明确的进行中、成功、失败和重试状态;不能用无限旋转指示器代替错误说明。[MUST]
  • 网络中断时,文本消息进入本地 Outbox;恢复后按顺序重试并保持幂等。[MUST]
  • 身份密钥变化、实例指纹变化和不支持的协议版本属于阻断状态,不可静默降级或自动消除。[MUST]
  • 数据迁移失败时安全停止并保留原始数据;页面提供退出、重试或查看帮助的路径,不暗示数据已经删除。[MUST]

平台体验要求

  • 使用系统字体、SF Symbols 和原生交互;不复制 iMessage 的私有动画或资产。[MUST]
  • 支持深浅模式、最大辅助字号、VoiceOver、Button Shapes、Increase Contrast、Reduce Transparency 和 Reduce Motion。[MUST]
  • 列表支持增量加载和本地搜索;说明书目标为 10 万条本地消息仍可在 2 秒内打开会话,须以真实设备验证,当前不是已验证性能。[MUST]
  • Face ID 或设备认证只作为真实空间的可选快捷入口;始终保留手动密码入口。[MUST]

安全文案边界

  • 可说:“消息内容在设备上加密”“此联系人密钥已变化”“本地格式化将删除本机可访问的关键密钥和 App 数据”。
  • 必须同时说明:“网络和实例可能观察元数据”“对方仍可截图或复制”“本地格式化不会物理覆写 NAND,也不会删除 App 外部备份”。
  • 不可说:“绝对安全”“无法追踪”“服务器完全看不到你”“已物理擦除”“量子安全”,除非未来审计和批准的发布声明明确允许。[MUST]

验证方式

  • UI 自动化覆盖首次启动、联系人验证、聊天、长按、详情、备份、主/假密码路由和格式化开关。
  • 真机覆盖后台快照、通知、Face ID、动态字体、VoiceOver、高对比度和减少动态效果。
  • 弱网覆盖断网、超时、重试、乱序、重复提交和 APNs 不可用。
  • 残留检查覆盖 Keychain、数据库及 WAL/SHM、附件、缓存、临时文件、本地通知和诊断导出。

系统初步设计 · 待决事项不代表批准 · 安全方案尚未完成独立审计