外观
无障碍设计
验收目标
VMax 的身份创建、实例选择、联系人验证、聊天、备份、统一锁屏和安全设置在动态字体、VoiceOver、高对比度、降低透明度和减少动态效果下都必须可独立完成。阻断级无障碍问题为 0 才能进入发布候选。[MUST]
这里的要求来自 v1.1 说明书与项目执行标准;当前仅完成文档事实验证,尚未经过真机和 Accessibility Inspector 验证。[已验证事实]
动态字体
- 全部正文和控件使用文本样式而非固定字号;核心信息不转成图片。[MUST]
- 最大辅助字号下允许标题、按钮、状态和表单纵向重排;页面可滚动,不截断、不重叠、不隐藏主操作。[MUST]
- Tab 标签、验证码分组、VMax 地址和消息状态不能依赖单行容纳;必要时提供详情页或复制动作。[MUST]
- 聊天气泡限制最大阅读宽度而非固定高度,长文本、连续字符、中文英文混排和 32 KB 边界均需测试。[MUST]
- 键盘出现时,发送、密码确认和恢复操作仍可见或可滚动到达。[MUST]
VoiceOver
通用顺序
焦点顺序遵循“页面标题 → 阻断警告 → 主要内容 → 主要操作 → 次要操作”。弹层出现后焦点进入弹层;关闭后回到触发控件。[MUST]
关键标签
- 验证状态读成完整含义,例如“已当面验证”,不能只读“L2”或颜色。
- 消息读成“发送者、时间、正文、状态、反应”,操作按钮与正文分开;装饰性气泡和头像不重复朗读。
- 长按菜单的六种反应逐项有名称、选中状态和操作提示;菜单不得让背景消息继续获得焦点。[MUST]
- VMax 地址与指纹默认按分组朗读,提供“复制完整地址”“按组浏览”的独立动作,避免连续字符无法核对。[建议]
- 密钥变化警告首先读取影响,再读取“核对安全码”等主操作,不能只朗读“错误”。[MUST]
- 密码字段不朗读内容,不暴露长度变化或主/假密码命中结果。[MUST]
自定义操作
消息项提供回复、复制、转发、删除和显示详情的 VoiceOver 自定义操作;不能要求用户必须完成精确长按手势。[MUST]
高对比度与非颜色表达
- 未验证、已固定、已当面验证、密钥变化和发送失败均同时使用文字与图标;颜色只作补充。[MUST]
- Button Shapes 开启后,所有文本按钮仍能被识别为可操作。
- Increase Contrast 下边界和填充使用系统高对比语义色;不能靠半透明玻璃区分前景与背景。[MUST]
- 焦点、选中、禁用和错误状态至少有一种非颜色差异,例如形状、描边、文本或图标。[MUST]
减少动态效果与降低透明度
- Reduce Motion 开启时禁用大范围位移、缩放、弹性强化和非必要循环动画;状态变化改用即时更新或轻量淡入淡出。[MUST]
- 消息发送、联系人验证和备份进度不能只靠动画表达,必须有可读取文本状态。
- Reduce Transparency 开启时以不透明系统背景替代 Liquid Glass;内容层级仍清晰。[MUST]
- 格式化与空白空间不能拥有独特的动画或触感序列,以免旁观者据此识别伪装状态。[MUST]
认知与文案可理解性
- 优先使用“未验证、已固定、已当面验证”等行为含义,技术等级作为次级信息;最终命名待 D-PROD-01 决策。
- 一条错误只说明一个主要原因和一个下一步;诊断细节放入展开区域。
- “已发送、已送达、已读”必须保持固定含义,不以相似图标让用户猜测。
- 不可逆操作用短句列出影响、不会发生的事和取消路径;确认按钮使用具体动词,如“启用本地格式化”,不用“确定”。[MUST]
权限与替代路径
| 权限或系统能力 | 申请时机 | 拒绝后的替代路径 |
|---|---|---|
| 相机 | 用户选择扫描联系人或部署二维码时 | 手动输入完整地址或 HTTPS 地址 |
| 通知 | 身份创建后解释离线消息价值时 | App 内提示如何稍后在系统设置开启;前台拉取仍可使用 |
| Face ID | 用户主动开启快捷解锁时 | 始终保留手动输入密码;假密码入口不依赖 Face ID |
| Files / 文档选择器 | 用户导出或恢复备份时 | 解释无法完成当前文件任务,不影响聊天 |
权限预提示要说明“为什么此刻需要”,不声称拒绝权限会破坏与该权限无关的核心功能。[MUST]
弱网与辅助技术组合
- 网络状态更新使用可读取的 live region 或等效机制,但避免每次自动重试都打断当前朗读。[建议]
- 发送失败后焦点不自动跳离编辑器;用户可以继续编辑、重试或查看原因。
- 重试成功只更新消息状态一次,不重复朗读或生成重复消息。[MUST]
- 扫码超时、证书错误和协议不支持分别提供文字原因;焦点落在标题而非危险的默认继续按钮。
测试矩阵
| 流程 | 默认字号 | 最大辅助字号 | VoiceOver | 深浅与高对比 | Reduce Motion / Transparency | 弱网 |
|---|---|---|---|---|---|---|
| 身份创建与实例选择 | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 联系人输入、扫码与验证 | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 聊天、长按与消息详情 | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 备份创建与恢复 | 必测 | 必测 | 必测 | 必测 | 必测 | 文件中断必测 |
| 统一锁屏与双密码 | 必测 | 必测 | 必测 | 必测 | 必测 | 验证过程不得联网 |
| 格式化设置与空白空间 | 必测 | 必测 | 必测 | 必测 | 必测 | 本地动作不得等待网络 |
发布验证
- 使用至少一台小屏 iPhone 和一台当前尺寸 iPhone 做真机人工走查。
- Accessibility Inspector 扫描后逐项人工复核标签、顺序、操作和值;自动扫描不能替代任务测试。
- 最大辅助字号下完成所有核心任务,记录截图和阻断问题。
- VoiceOver 开启后不看屏幕完成创建身份、添加联系人、发送失败重试、导出备份和手动密码解锁。
- 对统一锁屏和空白空间做旁观者检查,确认辅助功能朗读、通知和触感均不暴露真实空间或假密码存在。