移动情境交互设计规范
让人在注意力、手部能力和环境不断变化时,仍能看懂下一步、保住已做的工作,并在合适时继续。
6 条原则 · 13 条规则 · 必须 0 · 应当 0
目录
让人在注意力、手部能力和环境不断变化时,仍能看懂下一步、保住已做的工作,并在合适时继续。
配套:Design Token · 参考来源。
1. 范围与读法
适用于手机、手持终端等便携设备在步行、持物、换握、乘车、转场、短时查看、公共空间、弱连接及现实活动频繁中断时的交互。人的身体可以静止而注意力或可用手仍受限;使用手机也不必然处于本规范所说的移动情境。
本规范不把活动识别当作驾驶员识别,不以静止、模式简化或完成步行测试证明驾驶、骑行和危险作业安全。产品必须按实际任务、环境和人群声明支持范围。
必须/须表示验收义务;不得/禁止为同等强度禁止;应当/应默认采用,偏离需记录理由及等效方案;可以为可选。每个独立义务子句单独判断。适用与边界限定要求,示例与候选数值不新增义务。
先定义用户成果和现实中的中断点,再设计界面。手动简化、自动保存和回到原任务可以不依赖传感器;自动推断只有确有收益且用户可纠正时才启用。规则与字段是项目设计,来源支持范围见 reference。
2. 原则与规则
| 原则 | 对象与方向 | 规则 |
|---|---|---|
| MC1 注意可以随时转移 | 信息判断与任务分段 | MC1-1、MC1-2 |
| MC2 操作适应当下身体条件 | 可达性、输入意图与稳定目标 | MC2-1、MC2-2 |
| MC3 情境判断可解释可纠正 | 情境事实、用户选择与适配 | MC3-1、MC3-2 |
| MC4 环境变化有可用路径 | 输入输出替代与公共内容 | MC4-1、MC4-2 |
| MC5 位置与连接不确定仍可判断 | 地点判断、缓存与离线行动 | MC5-1、MC5-2、MC5-3 |
| MC6 中断恢复不丢意图 | 已保存状态、未决操作与结果 | MC6-1、MC6-2 |
3. 完整规则
MC1-1短时查看能判断对象与下一步
适用使用者需要在设备与现实环境之间切换注意。
要求必须优先表达当前对象、关键状态与必要下一步,包含判断需要的单位、方向、时效和后果。关键否定与对象差异不得机械截断;字号放大时不得通过缩字硬塞。重要结果和需要处理的异常须可重新查看,不以短暂提示、动画、颜色或声音作为唯一表达。
边界只读任务可以没有主要动作;信息预算不限制必要事实、退出和详情。不规定统一阅读秒数,也不以完成时间短证明使用安全。
设计应用到站信息同时给站名、方向和更新状态;返回后仍可查看此前的保存结果。
验证用户侧——在长文本、强光、放大文字和视线切换后复述状态;实现侧——检查内容、时效、辅助语义和结果回看对应真实对象。
两侧反例做不到——只显示“5”而不知对象和单位;做过头——首屏要求读完整段背景才能继续。
依据MC-S1支持注意与操作限制;信息层次为项目推导。
MC1-2任务允许在有意义的地方停下来
适用输入、比较、确认或分步处理可能被现实活动打断。
要求应当把任务分成可理解的小段,减少重复输入与不必要决策;必须提供与承诺相符的保存、退出和继续路径。需要持续注意的复杂判断应允许稍后处理,不得用短倒计时迫使仓促提交。必要时限必须说明实际原因、到期后果及可恢复内容;不能靠无限延长授权回避到期问题。
边界短步骤不意味着去掉关键后果。简单动作无需统一套确认;进入详情、退出和切回任务本身不得触发提交。
设计应用排队叫号时收起设备,未提交内容保存为草稿;回来显示“已填到这里”和下一项。
验证用户侧——被打断后能说明完成到哪、下一步是什么;实现侧——检查分段保存和退出是否生效,过期意图是否仍被拦截。
两侧反例做不到——稍一中断就整表重填;做过头——每填一项都弹确认并强迫保存。
依据MC-S1、MC-S2支持情境与时限问题;任务分段为项目推导。
MC2-1单手、持物和换握下仍有可达路径
适用手部占用、可动范围受限、晃动或握持变化。
要求主要动作和取消/返回须在声明的使用条件下可达。非本质必要的精细拖动、多指或设备动作须有替代操作;设备动作触发须可关闭。热区按适用平台要求与真实握持验证,不得扩大到相互争抢。左右手和用户显式选择须被尊重;语音输入不得作为全部身体限制的唯一答案。
边界不假定用户始终有两只可用手,也不把持物模拟等同所有身体能力。某任务当下不可用时保留进度与退出,不永久锁住全产品。
设计应用滑动可由点按步进完成;单手模式可选择操作侧,换握不强迫重新开始。
验证用户侧——实际左右手、持物和辅助技术条件下完成任务;实现侧——核对热区、系统手势冲突、焦点和替代路径。
两侧反例做不到——唯一提交必须双指拖动;做过头——以保护为由隐藏所有有用动作。
MC2-2输入期间目标稳定,误操作可取消
适用点按、滚动、换手、自动布局与颠簸干扰。
要求触点按下至释放或取消期间不得因情境变化移动目标。一般单指操作须有避免误触、取消或适当撤销机制;不可逆操作不得触下即执行,事前须有与后果相称的保护。自动更新不得持续抢焦点、替换正在确认的对象或把原目标位置变为另一个危险动作。
边界本质必要的触下响应须说明原因、所涉功能与缓解,不豁免不可逆操作保护。身份或权限失效时可立即取消受影响手势并解释,不能等待重排后才收紧。业务防重由 MC6-2 规定。
设计应用按下暂停后活动识别变化,仍完成当前合法输入,再在安全边界换布局。
验证用户侧——可取消误触且理解取消结果;实现侧——注入按下途中更新、权限失效、手指移开和快速连续独立输入。
两侧反例做不到——按下时按钮换成删除;做过头——所有轻量操作都要求长按和重复确认。
依据MC-S4支持指针取消;稳定目标为项目推导。
MC3-1情境事实有来源、限制与采集边界
适用使用活动、位置、手部状态或环境信息影响功能。
要求必须区分活动、输入能力、环境和业务资格,不用一个 moving 标志代表全部条件。事实须带来源、设备、观测时间与有效性;推断须可为未知,不能由“在交通工具中”推断驾驶员身份。需要采集时须说明用途、权限、保存范围与停止条件,拒绝或撤权后停止相关采集并保留不依赖它的功能。
边界不为了简化布局默认长期保存轨迹、持续开麦或制造注意力评分。允许使用手动选择;用户设置不能冒充传感观测。
设计应用活动识别缺失时保持布局;位置拒绝时允许输入地点。状态查询不偷偷扩大采集。
验证用户侧——理解适配依据与拒绝后的可用路径;实现侧——测试来源缺失、过期、乱序和撤权后的监听/保存/上传。
两侧反例做不到——坐车就被认定为驾驶员而自动执行车辆相关动作;做过头——普通查看先索取全部情境权限。
依据MC-S5、MC-S6提供能力背景;推断边界为项目要求。
MC3-2自动适配稳定,用户选择优先
适用根据活动或环境自动改变信息密度、布局或输入。
要求必须提供显式模式、停止自动适配和恢复默认的入口,说明作用范围。用户明确选择优先于推断,但不放宽权限和业务约束。进入与退出模式须有明确稳定条件;候选变化、未知或过期时不得反复重排。无有效推断时保持用户选择;没有选择时保持当前合法布局,首次无历史时才采用默认模式。
布局只在触点释放且编辑已安全保存后生效;隐私收紧和撤权立即限制相应输出与未执行动作。自动化收益必须通过与手动/普通模式的任务比较验证。
边界手动普通模式不证明周围环境安全。停止推断不取消与之无关的能力,也不要求每次启动重新校准。
设计应用提袋用户选择简化后,短暂停步不跳回复杂界面。
验证用户侧——发现并纠正误判,选择保持有效;实现侧——回放开始移动、停步、再移动、活动缺失和迟到事件,检查稳定时间与生效点。
两侧反例做不到——系统持续覆盖手动选择;做过头——为了防抖永远无法退出简化模式。
MC4-1环境使某通道失效时还有退路
适用强光、噪声、湿手、手套、振动、无麦或反馈不可感知。
要求核心任务必须声明所需输入输出及缺失后的行为:本端替代、保存稍后继续或说明不可完成。结果不得只依赖一种瞬时反馈;读屏、按键等声明支持路径须能完成对应任务与退出。组合条件须共同评估,替代路径不可依赖另一个已失效能力。
边界不要求设备添加不存在的硬件。不自动提高外放或开启麦克风来补偿环境;无法可靠操作时允许停下来继续。
设计应用嘈杂且无网时不把云端语音识别当退路,而保存草稿并保留本地输入或稍后入口。
验证用户侧——发现并完成替代路径;实现侧——组合强光/字号放大、无麦/无网、湿手/触控受限,检查结果与焦点。
两侧反例做不到——禁麦后唯一输入按钮仍是语音;做过头——所有故障都要求离开任务去完整设置向导。
MC4-2公共环境变化不擅自扩大内容暴露
适用旁观、锁屏、通知、快照、读屏或音频路由变化。
要求敏感内容必须定义公开预览和主动展开条件。屏幕、图片、辅助语义、应用可控快照与自动播报须遵循有效资格;失效及时收敛。耳机断开不得自动改为敏感外放;环境推断不能替代明确偏好与权限。获授权用户仍须有可访问的主动查看路径。
边界安静或静止不证明私密;辅助技术访问不等于自动公开。平台不可控输出限制须说明,不能承诺完全防旁观。
设计应用耳机断开暂停敏感播报,保留私密查看路径;返回公共预览不暴露已展开详情。
验证用户侧——能控制展开与退出,辅助技术用户不被排除;实现侧——测路由切换、锁定、主体变化、预览与后台快照。
两侧反例做不到——屏幕遮挡但自动大声播报;做过头——所有公共信息也被隐藏且无法继续。
依据项目推导;权限最小化背景见 MC-S6。
MC5-1地点判断表达精度、时效与不确定性
适用附近搜索、到达提示、地点相关条件或导航信息。
要求必须定义任务所需位置精度与有效性,区分权限粒度、实际测量精度和观测时间;位置权限、用户选定的目的地、围栏事件与当前有效位置是四种不同依据,不互相推导。近似位置不得直接当作精确到达,地理围栏事件不得当作无延迟的当前事实——位置事件的发生、接收与有效时点分别保留,迟到的到达通知不证明此刻仍在目标区域。精度不足、读数过期或事件迟到时须限制依赖它的结论,提供重查、手动选地点或可解释的等待;缺少时效或精度证据时保留未知,允许手动核对,不自动提交依赖当前位置的高后果动作。手动地点选择须标明是用户指定,不伪称当前位置。
边界拥有精确位置权限不保证当前精度;地图动画不能制造确定感。不设通用到达半径,允许无需位置的任务继续。
设计应用“当前位置精度不足,请核对入口”,不因一个旧围栏事件自动确认到店。
验证用户侧——知道是附近、手动选定还是位置已核对;实现侧——测近似授权、旧位置、延迟进入/退出、权限变化和无定位。
两侧反例做不到——旧位置让已离开的人被标为到达;做过头——查公开地址也强制持续精确定位。
MC5-2缓存与连接状态不伪装当前结果
适用弱网、失联、缓存展示与回到前台。
要求必须区分网络状态、服务可达性和数据新鲜度。可用本地内容应当及时显示,但须保留来源与原更新时间;更新中的旧数据不能自动标成当前。任务依赖的数据无有效性依据时须显示未知或过期,限制相应操作。连接恢复不能自动证明刷新成功;无新数据时仍保留适当的历史内容与退出。
边界平台联网图标不等于业务请求成功;无需时效的数据不强制配统一有效期。恢复可以先展示不依赖旧值的内容。
设计应用隧道中展示已保存行程并注明时效,不能宣称列车实时位置。
验证用户侧——分清历史内容与当前确认结果;实现侧——测网络可达但服务故障、缓存过期、系统时钟变化和重连刷新失败。
两侧反例做不到——旧价格刷新动画结束就变成有效价格;做过头——短暂断网即清空所有可用资料。
依据MC-S8;时效裁决为项目推导。
MC5-3离线保存、待发和同步冲突可处理
适用任务允许离线写入或延后提交。
要求必须区分本地草稿、已授权队列、发出状态与远端结果;只有具备可靠持久化才可承诺保存。允许排队时说明执行条件、有效期与发出前取消路径。重连前核对主体、目标、权限及条件;冲突须按任务明确处理,不静默覆盖已知受保护的人工修改。不能自动处理时保留各方可用内容并提供选择。
边界并非所有动作都适合离线排队;公开查询与付款不能沿用同一默认。冲突策略不是一律弹窗,能可靠合并且不改变用户意图的可以自动处理。
设计应用草稿本地已保存;真正进入“联网后发送”须有明确发送意图与取消入口。
验证用户侧——知道是否已发出、能取消什么;实现侧——测离线取消、队列到期、远端对象变化、存储失败和并发编辑冲突。
两侧反例做不到——重连后发出用户已删草稿;做过头——所有无冲突同步也要求逐项审批。
依据MC-S8支持离线写入与冲突;队列授权为项目推导。
MC6-1回来时能找回原对象与进度
适用现实活动中断、切后台、锁屏、进程终止、交接或恢复。
要求承诺恢复的任务须明确保存什么、何时保存、保存位置、期限及过期处置。恢复必须定位原对象、有效步骤与有意义的焦点,说明已完成和待完成部分;主体、对象、权限或必要条件变化时重新核对受影响部分。保存失败须如实说明,敏感草稿不得跨主体展示。
交接须绑定同一任务与未完成内容,接收未确认前保留恢复路径。进入详情、返回或重新打开不构成提交,未确认草稿不得自动执行。
边界不要求永久保留所有屏幕位置;原对象不存在时说明变化并给出可行去处,不机械恢复失效控件。
设计应用检票后回来继续填写同一份表单,焦点回到有效字段,而非默认首页。
验证用户侧——中断后能复述进度并继续;实现侧——测杀进程、期限到期、主体变化、原对象删除和交接失败。
两侧反例做不到——恢复后重新创建一份任务;做过头——每次短暂切出都要求登录并重新填写。
依据项目推导;情境中断背景见 MC-S1。
MC6-2核实实际后果,再决定重试或撤销
适用提交、弱连接重试、回执丢失或恢复后的未决操作。
要求必须区分已收到、已发出、已受理和实际成功/失败/未知。相同意图的重投保持同一操作标识,防重覆盖并发和已执行未记结果窗口;独立连续意图不得被吞掉。没有可靠回执先核对,不能因超时直接判失败或换新标识重发。自动重试仅在有幂等保证及有限范围时进行。
无法核实须保留未知和实际可用的查询、联系或稍后入口。已发后的取消请求与原操作结果分别核对;已发生结果的撤销属于另一个有后果的动作,不能由本地返回按钮伪造。
边界按钮禁用不是防重证据,接受请求不是业务完成。有限重试结束不代表已知失败。
设计应用服务已成功但回执丢失时显示核实状态,恢复后查同一操作而不是再次发送。
验证用户侧——能判断哪些结果已确认及下一步;实现侧——并发重投、远端成功后杀进程、迟到回执和连续两次独立操作分别核对实际后果。
两侧反例做不到——网络重试发出两条消息;做过头——只说“未知”却永久不给任何处理路径。
依据项目推导;离线背景见 MC-S8。
4. 状态与转换
活动、可用输入、环境、位置、身份、数据和提交状态各自独立;不以一个“移动模式”代替事实。未知、过期与无能力的编码见本目录 Token 字典。
| 事件 | 先核对什么 | 用户结果与禁止行为 |
|---|---|---|
| 首次进入任务 | 对象、能力、有效数据及手动选择 | 及时呈现可判断摘要,不默认开启所有传感 |
| 开始/停止移动 | 来源时效、用户模式、稳定条件 | 合法模式在安全边界生效;按下途中不重排 |
| 收起设备/现实打断 | 当前编辑、保存承诺与未决操作 | 保住草稿;退出不提交 |
| 通道失效/环境变化 | 实际可用输入输出、内容资格 | 提供可行替代;耳机断开不转敏感外放 |
| 定位变化 | 权限粒度、实际精度、观测时刻 | 不把旧事件或附近位置当作已到达 |
| 重连 | 本地数据、服务状态、授权队列与冲突 | 已保存与已完成分开;已取消内容不补发 |
| 回前台/交接返回 | 主体、原对象、已发生结果、有效焦点 | 继续同一任务或说明变化,不重复执行 |
5. 验收与交付
每个任务必须记录用户成果、适用条件、正常路径、中断点、能力退路、配置理由及证据负责人。测试前写清事件序列、预期行为、用户证据、机制证据、通过条件和未覆盖范围。
| 必测组合(按声明范围适用) | 用户侧证据 | 实现侧证据 |
|---|---|---|
| 长文本 × 强光 × 放大文字 | 对象、方向、时效与后果可理解 | 无必要内容截断,语义与事实一致 |
| 单手持物 × 换握 × 活动未知 | 可达、可退出、模式稳定 | 热区、触点期间布局和选择优先级正确 |
| 受控步行 × 现实中断 × 返回 | 重返任务后理解下一步 | 草稿、原对象、焦点和权限恢复正确 |
| 噪声 × 无麦 × 无网 | 替代路径确实可完成或暂存 | 不依赖已经失效的另一能力 |
| 公共预览 × 读屏 × 耳机断开 | 能合法查看且能控制输出 | 输出资格同步、无自动敏感外放 |
| 近似位置 × 围栏迟到 × 地点变化 | 不误认精确到达 | 精度、时效和事件顺序独立裁决 |
| 离线编辑 × 远端修改 × 重连 | 理解待同步和需处理冲突 | 人工内容受保护,队列到期/取消有效 |
| 远端已完成 × 丢回执 × 杀进程 | 理解核实与结果入口 | 防重生效、回执不串对象 |
| 静止、输入与网络良好 | 简单任务不被额外确认拖慢 | 普通模式与简化模式业务语义一致 |
敏感泄露、重复后果、假成功、丢已承诺保存内容和必要出口不可达,任一出现即不通过,不能用平均分抵消。任务完成率、正确理解率、误触、换握、恢复成功率、重返任务耗时及主观负担由产品预定目标;写清分母和失败/中断计法,报告分布与未覆盖样本。
受控移动测试允许参与者随时暂停和结束,不在危险道路制造失败。实际残障与辅助技术用户的研究不能由短时持物模拟替代。文档、机制与用户使用分别验证;本规范未声称已进行设备实验或用户实验。
实施验收场景
以下场景把已有条款转成可复核的验收输入,不另设通用性能阈值。按产品适用能力选取,补充真实设备、用户、输入序列和证据;不适用记录原因,未执行不得记为通过。
| 条款 | 测试输入与异常 | 预期行为与失败判据 |
|---|---|---|
| MC5-1 | 收到数分钟前的围栏进入事件,但人已离开。 | 不把迟到事件当当前到达,先核对有效位置。 |
| MC2-2 | 按下按钮时活动状态改变并触发简化布局。 | 当前目标不被替换,必要取消不等稳定等待。 |
| MC6-2 | 离线保存后重连,服务端已执行原提交但回执丢失。 | 先核对原动作,区分草稿、排队与实际完成。 |
每个场景分别核对配置的有效值、执行记录与用户可理解的结果。保留版本、目标、事件时点、失败范围和恢复结果;外部结果未知不填作成功或失败。
配合 设计规范 使用。先决定用户在当前情境中如何完成、暂停和恢复任务,再用字段记录决定;自动识别不是使用本字典的前提。
1. 数据分层与读取约定
| 层 | 前缀 | 用途与边界 |
|---|---|---|
| 视觉 Token | mobileContext.visual | 颜色、字体、间距、焦点等语义角色,不改身份与数据状态 |
| 交互参数 | mobileContext.interaction | 实际消费的信息预算、动作预算和模式稳定时间 |
| 策略配置 | mobileContext.policy | 输入适配、位置使用、离线行动、隐私及恢复决定 |
| 运行事实 | mobileContext.runtime | 活动、位置、输入能力、选择与业务结果;不是 Design Token |
字段由前缀与表中短键拼接。必选可继承可解析的产品决定;条件必选只在相应能力启用后要求完整。不适用写理由,不造空合同。默认不允许 null;未知、关闭、无限与未配置不能共享同一值。
视觉部分可用 DTCG 类型与别名;策略与事实使用项目结构,不虚构 DTCG policy 类型。dimension 使用 px/rem;原生 dp/pt 留在平台 profile,并明确接入映射。时间戳带时区,持续时间为非负整数毫秒,计数为整数,不设跨平台统一热区、到达半径或任务读取秒数。
每个决定记录负责人、适用范围、理由、生效时点、能力依赖与验证证据。合同引用至少可解析到 id、owner、appliesTo、decision,可以是文档段落或配置对象。引用缺失、循环、类型不匹配和未知枚举须定位到字段并拒绝受影响能力,不以扩大权限或自动执行兜底;已保存内容和无依赖的退出保持可用。
2. 视觉 Token 与平台接入
前缀 mobileContext.visual。表中别名是接入示意,须解析到实际产品集合;使用明确的原生组件时可由其样式提供对应角色。
| 条件 | 字段 | DTCG 类型 | 语义别名示例 | 规则 |
|---|---|---|---|---|
| 有关键文字 | primary | typography | {product.typography.bodyStrong},当前对象与关键状态 | MC1-1 |
| 有辅助信息 | secondary | typography | {product.typography.body},必要时效与单位仍须可读 | MC1-1、MC5-2 |
| 有文字/背景 | foreground、surface | color | {product.color.textPrimary}、{product.color.surface} | MC1-1、MC4-1 |
| 有异常/待处理 | statusAttention | color | {product.color.attention},配合文字或形状 | MC5-1、MC6-2 |
| 有相邻操作 | actionGap | dimension | {product.space.controlGap},不能让扩展热区冲突 | MC2-1 |
| 有内容边缘 | contentInset | dimension | {product.space.contentInset},结合安全区域和握持 | MC2-1 |
| 有焦点导航 | focusIndicator | color | {product.color.focus},轮廓与尺寸由组件 profile 定义 | MC2-1、MC6-1 |
visualSystemRef 须说明平台、组件、字号缩放、实际热区、系统手势区域、焦点和对比度依据。Web 目标尺寸条款含 24 × 24 CSS px 及明确例外,不是舒适单手的保证,也不外推原生设备;普通文字/大文字的 Web 对比度条件为 4.5:1/3:1,仍需核查完整适用条件和强光实际表现,见 MC-S3、MC-S10。
平台字号、减少动态效果、必要焦点和输入保护优先于主题。简化模式不得靠缩小文字、删除退出或关闭辅助语义达成;以减少可选内容、重写摘要或可访问滚动处理空间不足。
3. 交互参数
前缀 mobileContext.interaction。候选值是原型假设,不是人因标准。参数须实际用于设计或实现;步骤预算与研究指标放在指南中。
| 条件/字段 | 类型与合法值 | 候选与理由 | 生效与验证 | 规则 |
|---|---|---|---|---|
快捷入口/primaryActionBudget | integer ≥0,单位:个,同时突出动作上限 | 候选 1,聚焦下一步;只读为 0 | 安全布局边界生效;取消、返回、必要详情不计入且不可被挤掉 | MC1-1、MC1-2 |
可选辅助信息/previewFields | integer ≥0,单位:字段 | 候选 2,减少短时阅读;0 不显示可选辅助项 | 必要对象、异常、后果、单位和时效不受预算限制 | MC1-1 |
assisted/modeSettleMs | integer ≥0,单位:ms | 候选 1000,用于观察短时抖动;候选活动须连续稳定 | 候选变化、未知或过期重置等待;进入与退出均使用;0 不等待但仍须在安全边界生效 | MC2-2、MC3-2 |
若任务需要不同进入/退出时序,在 inputAdaptation 合同中明确定义并验证,不能暗改该字段含义。稳定等待不用于延迟撤权、隐私收敛、操作取消或位置失效。比较普通静止、手动简化和自动模式的误触、理解与恢复负担后再确定取值。
4. 策略字典
前缀 mobileContext.policy。除 modeSelection 外均为引用,surfaceProfiles 为非空引用数组。合同最低内容须能判断条件、允许/禁止行为、异常出口、依赖机制与证据。
| 条件 | 字段 | 最低决定与缺失处理 | 规则 |
|---|---|---|---|
| 必选 | visualSystemRef | 实际平台组件与视觉角色、字号/热区/焦点依据;缺失不宣告自定义界面可用 | MC1-1、MC2-1 |
| 必选 | surfaceProfiles | 各任务入口、对象、字段、动作、输入、返回、刷新与隐私;不把全部入口视作同一页面 | MC1-1、MC6-1 |
| 必选 | capabilityContract | 核心任务必要能力、本端替代、保存、交接目标与失败路径;无能力不假完成 | MC4-1 |
| 可中断的分步任务 | taskSegmentation | 可停的任务段、最小必要判断、自动保存与重新定位、必要时限和到期后果 | MC1-2、MC6-1 |
| 有输入操作 | inputAdaptation | 左右手/持物/辅助技术支持、拖动与设备动作替代、激活取消、触下例外、焦点与安全布局边界 | MC2-1、MC2-2、MC4-1 |
| 有模式选择 | modeSelection | 枚举 manual/assisted,候选默认 manual;assisted 依赖有效事实、稳定时间及手动纠正 | MC3-2 |
| 实际采集情境 | collection | 用途、触发、权限、保存位置/期限、撤权停止与替代;无采集则不配 | MC3-1 |
| 有敏感内容 | privacy | 主体资格、previewLevel=public/summary/hidden、主动展开、受控输出与通道切换;未知不扩大暴露 | MC4-2 |
| 使用位置 | locationUse | 任务精度与时效判据、权限粒度、围栏迟到处理、手动选地点、误判出口;不足不判定到达 | MC5-1 |
| 有时效依赖 | freshness | 每数据类的观测时点、有效期/区间/事件失效、时钟比较、历史展示、依赖操作与重查 | MC1-1、MC5-2 |
| 离线写入/排队 | offlineActions | 动作白名单、明确授权、持久保存、队列期限、取消、冲突与重连核对;无许可不自动排队 | MC5-3 |
| 承诺恢复/交接 | resume | 保存对象/范围/时点/期限、主体绑定、原对象与焦点、接收确认、过期与失败出口 | MC6-1 |
| 有实际后果操作 | submission | 意图标识、目标快照、受理/结果证据、防重窗口、有限重试、取消和未知处理 | MC6-2 |
modeSelection 的 manual 提供实际支持的 standard/simplified 手动选择;assisted 才可提供 automatic。用户选择 automatic 只是允许合法适配,不授予采集权限或执行资格。失去适配依赖时停止新推断,保留合法布局,在相关设置中说明不可用;不把用户选择覆盖回普通模式。
locationUse 所需精度可由任务接受的区域或可验证条件表达,不强制所有来源返回米值。不具有精度元数据时明确未知;不写 accuracyMeters=0。位置授权、原始坐标与“用户选择的目的地”是三个不同对象。
4.1 联动依赖
| 承诺 | 必须具备 | 缺失时 |
|---|---|---|
| 手动简化 | 显式选择、输入适配及稳定布局 | 保留可用输入,不要求活动权限 |
| 自动情境适配 | assisted、modeSettleMs、有效活动事实、collection、手动纠正与安全生效 | 不新增自动重排,保持合法选择 |
| 到达相关动作 | locationUse、freshness、有效位置与适用授权;有后果另配 submission | 重查或手动核对,不凭迟到事件执行 |
| 离线待发 | offlineActions、resume、submission、持久化、授权有效期与防重覆盖 | 只保留草稿或受限队列,不伪报已发送 |
| 交接后继续 | 原对象与内容、实际接收端、接收确认、失败恢复 | 原端可找回,不能仅显示“去另一设备” |
| 敏感音频继续 | 有效身份与用户选择、privacy、真实输出路由 | 通道丢失暂停受影响播报,保留主动查看路径 |
5. 运行时事实
5.1 单项封装
| availability | 必需字段 | 使用纪律 |
|---|---|---|
| known | value、source、deviceId、observedAt、receivedAt、ordering | 当前有效观测;known+false 是已知否定,不是未知 |
| stale | 原 value、source、deviceId、observedAt、receivedAt、ordering 及 reason | 保留历史,禁止重连时改观测时间让它重新有效 |
| unknown | source、deviceId、checkedAt、reason | 无 value、无虚构 observedAt;暂时没有可用判断 |
| unavailable | source、deviceId、checkedAt、reason | 无 value;区分 unsupported/permissionDenied/systemRestricted |
涉及权限或敏感内容须绑定 subjectId;业务内容与操作绑定 objectId 和必要的 targetSnapshotId。来源顺序可用同来源同会话序号或可信观测时间;重启区分会话。跨设备/跨时钟无法比较时保留待核实,不能按到达顺序覆盖。时效、排序和权限分别裁决;checkedAt 不能填作 observedAt。
5.2 事实目录
前缀 mobileContext.runtime。集合按键封装,不使用一个总 known。设备类型不适用在 profile 记录;必要字段不能由主题补乐观默认值。
| 字段 | value 或结构 | 适用边界 |
|---|---|---|
activity | stationary/walking/running/cycling/inVehicle,附原始来源类别映射 | 仅来源实际支持时采用;inVehicle 不表示驾驶员,未知在封装表达 |
inputCapabilities | 按能力分别封装,如 touch、microphone、screenReader、keys | 用户手部占用不从设备支持触屏推导;没有观测可用显式模式 |
environment | 可选、逐信号事实;例如来源实际提供的照度、噪声条件 | 不为填表默认开传感器;用户声明注明来源,不伪称客观测量 |
location | 位置、权限粒度、来源提供的精度说明、观测时间 | 源不提供精度就省略精度值并限制依赖判断;不以到达时刻代替观测时刻 |
selectedPlace | 用户选定地点与选择依据 | 不是当前位置,不能替代必须依赖真实到达的条件 |
connection | 链路可用与业务服务可达分别封装 | 网络正常不自动填业务可达 |
identity | 当前主体、锁定、权限范围 | 主体改变使前一主体敏感资格失效 |
audioRoute | 当前输出端点与可用状态 | 耳机离开不自动获得外放资格 |
content | 对象、字段、单位、有效性依据和缓存来源 | 数据时效与连接独立;估计与测量标识明确 |
userMode | standard/simplified/automatic,附来源、作用任务/入口和生效时间 | user 与 productDefault 区分;用户选择优先于推断 |
interactionState | 当前触点、编辑待保存、焦点对象 | 由输入系统提供,决定安全布局边界 |
checkpoint | 原对象、已保存内容、步骤/焦点、保存证据与到期时点 | 未持久化不填 saved;恢复先核对对象和主体 |
operation | 下节操作对象 | known 仅表示流程事实已知,不要求远端结果已确认 |
5.3 提交与结果组合
operation 至少有 operationId、objectId、适用 subjectId/targetSnapshotId、submission、outcome;确认结果附 receiptRef 或本地可验证证据。
| submission | 合法 outcome | 用户含义 |
|---|---|---|
| draft | notApplicable | 未确认,可编辑或放弃 |
| queued | pending | 已授权未发出,可取消,期限内按声明条件执行 |
| sent | pending/succeeded/failed/unknown | 已交给执行端,可直接收到最终结果 |
| accepted | pending/succeeded/failed/unknown | 已受理,不代表任务达成 |
| cancelled | notApplicable | 证实发出前取消,重连不补发 |
等待期间用 pending,超出可合理等待而无法判定时用 unknown;不得把无回执直接填 failed。已发取消保留真实 submission,另记 cancelRequest=requested/confirmed/rejected,原结果分别核实;不能把已发操作改写成未发 cancelled。撤销已发生结果是新的有后果操作。
同一意图重试保留标识,新意图使用新标识。防重覆盖并发、进程终止和允许排队/重试的整个范围;超过可保证期限先核对。旧对象或其他操作回执只更新对应记录,不覆盖当前任务。有限重试耗尽仍可能是未知,须有真实处理出口。
6. 解析顺序与生效
- 按任务、入口和声明条件解析引用及能力依赖,不把画像当实际事实。
- 核对主体、对象、当前输入能力、内容与必要位置的有效性,取共同允许的行为。
- 使用明确用户模式;无选择时首次用默认,有历史则保持当前合法布局。
- 用户选 automatic 且 assisted 依赖齐全时,候选活动连续稳定后才申请切换;未知/过期重置候选。
- 触点释放、编辑安全保存后应用布局;权限收紧与敏感输出收敛立即生效,必要时取消受影响输入并说明。
- 在允许范围解析视觉和辅助输出;前台恢复先核对依赖状态,公开静态内容与退出可先呈现。
主题不得覆盖身份、隐私、平台字号和必要控制。模式切换不改变业务目标,不重置提交状态或队列期限。新配置或回退不重放已发生后果。实际生效状态和请求切换状态分别记录,不能将请求当作已生效。
7. 完整设计配置示例:通勤中的回复草稿
本例选择手动简化、离线仅存草稿、联网后主动发送,不采集活动与位置,也不承诺后台发送。所有 policy 引用在 contracts 内可解析。visualSystemRef 选择具体原生组件职责,视觉字段可由该 profile 提供;示例是完整任务的设计输入,尚需真实组件与服务验证,不是可直接运行的产品。
{
"task": "commute-reply",
"interaction": { "primaryActionBudget": 1, "previewFields": 2 },
"policy": {
"visualSystemRef": "visual", "surfaceProfiles": ["editor"],
"capabilityContract": "capability", "taskSegmentation": "segments",
"inputAdaptation": "input", "modeSelection": "manual", "privacy": "privacy",
"freshness": "freshness", "offlineActions": "offline", "resume": "resume", "submission": "submit"
},
"contracts": {
"visual": { "id": "visual", "owner": "界面负责人", "appliesTo": ["commute-reply"], "decision": {
"platform": "Android phone", "components": ["native-text", "native-text-field", "native-button"],
"roles": "由原生主题提供正文、辅助文字、前景、背景、警示和焦点角色",
"font": "跟随系统字号,必要内容不缩字", "hitTargets": "逐组件记录平台依据和实际命中区域,单手实测后验收",
"focus": "输入、发送、返回按任务顺序可达,系统返回手势可用", "evidence": "待设备、读屏、对比度与强光验证"
} },
"editor": { "id": "editor", "owner": "界面负责人", "appliesTo": ["commute-reply"], "decision": {
"object": "current-account.selected-conversation.reply-draft",
"fields": ["recipient", "draft", "save-state", "send-state"], "actions": ["edit", "send", "back"],
"input": "native-touch-or-accessibility", "detail": "同一会话", "return": "会话列表",
"refresh": "打开和返回时核对会话;离线标明未核对", "privacy": "privacy"
} },
"capability": { "id": "capability", "owner": "任务负责人", "appliesTo": ["commute-reply"], "decision": {
"editRequires": ["usable-input", "local-persistent-storage"], "sendRequires": ["valid-account", "reachable-service", "current-recipient"],
"fallback": "离线保留草稿并退出;不能持久保存时明确未保存", "handoff": "本例不承诺交接到其他设备"
} },
"segments": { "id": "segments", "owner": "体验负责人", "appliesTo": ["commute-reply"], "decision": {
"steps": ["识别收件人", "编辑", "主动发送", "核对结果"],
"interrupt": "每次可持久化编辑后保存,退出不发送", "resumeCue": "原收件人、草稿与已保存状态",
"deadline": "无界面倒计时;发送时按当前会话资格重新判断"
} },
"input": { "id": "input", "owner": "体验负责人", "appliesTo": ["commute-reply"], "decision": {
"choices": ["standard", "simplified"], "default": "standard", "scope": "当前账号的回复编辑入口",
"alternative": "原生键盘、短语选择与辅助技术;语音非必需", "activation": "抬起激活且可移出取消",
"layout": "触点释放、当前编辑安全保存后切换;不改变收件人和待发内容",
"irreversibleProtection": "发送前显示收件人和内容,用户主动激活发送"
} },
"privacy": { "id": "privacy", "owner": "数据负责人", "appliesTo": ["commute-reply"], "decision": {
"previewLevel": "summary", "reveal": "有效账号且主动进入会话,读屏同样可访问",
"identityLoss": "隐藏敏感内容并阻止未执行发送", "outputs": "文本、图片、语义、可控快照同步裁决",
"audio": "无自动敏感播报;耳机断开不转外放"
} },
"freshness": { "id": "freshness", "owner": "业务负责人", "appliesTo": ["commute-reply"], "decision": {
"draft": "本地草稿按原保存时点呈现,不声称远端已写入", "recipient": "发送前核对当前对象与可发送资格",
"ordering": "服务对象快照与操作标识;不能比较的结果先核实", "stale": "保留草稿、暂停发送、允许重查"
} },
"offline": { "id": "offline", "owner": "业务负责人", "appliesTo": ["commute-reply"], "decision": {
"allowed": ["save-local-draft"], "queue": "不排队发送", "reconnect": "只刷新资格与状态,不自动发送",
"conflict": "保留本地草稿;远端会话变化影响发送时由用户确认去向,不静默覆盖"
} },
"resume": { "id": "resume", "owner": "业务负责人", "appliesTo": ["commute-reply"], "decision": {
"save": "编辑内容持久写入后才反馈已保存;发送前持久记录意图",
"scope": "主体、会话、草稿、焦点字段和未决操作", "retention": "草稿保留至成功发送或用户删除;退出账号保留隔离草稿,重新认证后才可访问",
"restore": "核对主体与会话后返回原草稿;对象已删除时保留可访问文本并说明",
"failure": "保存失败说明未保存,允许保持当前编辑或用户决定退出", "unconfirmed": "不自动发送"
} },
"submit": { "id": "submit", "owner": "执行负责人", "appliesTo": ["commute-reply"], "decision": {
"intent": "确认内容与收件人后形成稳定 operationId", "result": "服务成功回执才显示已发送,受理不等于成功",
"dedup": "服务处理同一标识的并发和重投,覆盖已执行未记结果窗口;能力不足则停止安全重投路径",
"autoRetry": "不自动重发", "unknown": "查询原操作;无法查明时保留未知及稍后查询入口,不生成新标识盲发",
"cancel": "仅未发操作可确认取消;已发取消请求与原结果分别核实"
} }
},
"validation": {
"status": "pending-device-and-user-tests",
"cases": ["单手持物", "被叫号后恢复", "离线保存", "存储失败", "主体切换", "回执丢失"],
"failIf": ["未确认发送", "重复后果", "丢已保存草稿", "敏感暴露", "必要退出不可达"]
}
}
不采用自动适配,所以省略 modeSettleMs 和 collection;不使用位置,所以省略 locationUse。若改为联网后自动发送,必须新增明确授权队列、期限和撤回机制,并验证防重覆盖,不可仅改一句提示文案。validation 是设计验收记录,不是运行时成功状态。
8. 配置验收
- manual 的任务可在不采集活动/位置时完整运行;assisted 启用后的依赖齐全。
- 原生单位、视觉别名与平台组件接入明确;可选预算不会吞掉必要信息和控制。
- 情境事实不互相代填;位置权限、实际精度、时效、用户选定地点分开。
- 用户选择稳定;候选活动失效重置等待;触点与编辑边界正确;收紧隐私不等防抖。
- 离线草稿、授权队列、提交与结果组合合法;无网不把本地保存结果写成失败。
- 恢复定位原对象与焦点,主体变化不暴露敏感草稿,取消后不补发。
- 防重、未知结果、冲突与期限外处理可实际执行,并有用户和机制两类证据。
完整配置仅证明决定可解释;真实情境可用性仍须按规范的任务矩阵验证。
配置交付与校验
模式稳定等待用于抑制短时适配抖动,不是位置有效期、驾驶员识别或安全保证。计时不能延迟撤权、隐私收敛或取消;模式变化时不把正在按下的目标变成另一动作。示例毫秒值为格式样例,需按真实握持和中断场景标定。
随附的可执行样例只覆盖 mobileContext.interaction.modeSettleMs,其余字段按本字典逐项校验;未覆盖不等于不适用或已通过。样例是所选字段的格式正反例,不是可直接启用全部能力的产品预设。完整产品交付另外包含适用性、依赖、证据、执行映射及进行中操作的生效边界。
字段名、类型或含义变更时更新引用方与验收样例;仅修改说明且不改变合法行为的,保留已有字段名。调用方读取解析后的有效配置,不由 UI 控件、动画或模型文字反推权限、测量或完成事实。参见对应场景。
参考来源
供 设计规范 和 Design Token 核对依据。来源区分研究、平台文档和标准解释;任务合同、规则编号、运行事实模型及候选参数是项目设计,来源不直接证明具体产品已经可用。
1. 情境与用户能力
MC-S1 · 行走情境中的移动交互研究
- 阅读范围:摘要、引言及行走对移动操作和环境注意的讨论。
- 支持内容:移动中的任务同时受到操作能力和现实环境注意需求影响,适合按真实情境评估。对应 MC1、MC2。
- 适用边界:不采用未复核的效应量、实验阈值或统一步行速度;受控步行结果不证明驾驶、骑行或危险作业安全。
MC-S2 · Sense and Accessibility
Microsoft Research:Sense and Accessibility(PDF)
- 阅读范围:摘要、研究对象、引言与情境障碍相关讨论。
- 支持内容:个体能力与环境共同影响移动使用,设计不能默认所有使用者具有相同身体能力。对应 MC2、MC4 及验收人群选择。
- 适用边界:不将研究样本代表全部残障群体,也不外推至未覆盖的读屏人群。短时持物模拟不能替代真实辅助技术使用者研究,这是据研究范围形成的应用判断。
2. 可操作与可感知
MC-S3 · W3C WAI:目标尺寸与操作替代
Target Size (Minimum) · Dragging Movements · Motion Actuation
- 阅读范围:目标尺寸、间距与例外条件;拖动及设备动作的替代。
- 支持内容:Web 目标尺寸最低条款涉及 24 × 24 CSS px 及明确例外,精细动作不能成为不必要的唯一入口。对应 MC2-1、MC4-1。
- 适用边界:解释页不替代 WCAG 规范文本。CSS px 不能直接换作原生 dp/pt;符合最低条款不等于适合所有单手和持物条件。
MC-S4 · W3C WAI:指针取消
- 阅读范围:触下与抬起、取消、撤销及必要例外的说明。
- 支持内容:保护用户有意激活与取消路径。对应 MC2-2。
- 适用边界:不是禁止所有触下操作;需要按具体动作的必要性和等效保护验收。网络重试防重属于业务机制,不能由指针取消单独保证。
MC-S10 · W3C WAI:文字对比度
- 阅读范围:普通文字、大文字的对比度条件及例外。
- 支持内容:Web 文字对比度依据包含普通文字 4.5:1、大文字 3:1,须同时核对字号定义与适用例外。对应 MC1-1、MC4-1 及视觉 profile。
- 适用边界:测得比值不能直接证明强光、反射或动态环境中的可读性,也不证明图标、焦点和其他界面元素的要求已经满足。
3. 情境来源、位置和离线行动
MC-S5 · Android:活动转换
Detect when users start or end an activity
- 阅读范围:活动进入、退出事件及订阅机制。
- 支持内容:情境适配需要处理活动转换,而非只保存一个永不失效的移动标记。对应 MC3-1、MC3-2。
- 适用边界:活动类别不证明驾驶员身份、可用手或环境安全;事件可用性依赖实际平台与许可。本规范稳定等待、手动覆盖和布局生效条件是项目设计,不是 API 的自动保证。
MC-S6 · Android:位置权限与精度选择
Request location permissions at runtime
- 阅读范围:运行时位置权限及近似/精确位置选择。
- 支持内容:用户可能只允许近似位置;产品应为精度不足和拒绝授权设计路径。对应 MC3-1、MC5-1。
- 适用边界:取得精确位置许可不等于每次观测都准确;手动目的地也不是当前位置。不把平台授权粒度当作测量误差数值。
MC-S7 · Android:地理围栏
- 阅读范围:围栏触发、延迟与影响响应的系统条件。
- 支持内容:围栏事件不能保证实时到达,必须考虑迟到与实际位置的不确定性。对应 MC5-1。
- 适用边界:不写跨平台统一到达延迟,也不将进入事件当作自动执行有后果操作的授权。到达核验和触发后果需由具体任务决定。
MC-S8 · Android:离线优先数据设计
- 阅读范围:本地数据、读取与写入策略、队列、同步和冲突处理。
- 支持内容:本地可用数据、待发写入和远端结果要分别处理;重连需要处理同步与冲突。对应 MC5-2、MC5-3、MC6。
- 适用边界:具体库或后台队列不自动保证业务幂等、用户授权期限和撤回成功。本规范分别定义草稿、授权队列、受理、最终结果和未知,是针对任务后果的设计约束。
4. 配置表达与验证
MC-S9 · Design Tokens Community Group:格式
- 阅读范围:类型、值、组、别名,以及视觉类型的格式。
- 支持内容:颜色、字体和间距等视觉 Token 可使用明确类型与可解析别名;dimension 使用 px 或 rem。
- 适用边界:这是社区组格式,不称为 W3C 推荐标准。本项目策略合同、原生尺寸、模式稳定时间和运行事实另行定义,完整任务配置不冒充标准 Token 文件。
5. 不从来源推导的结论
- 不设通用注意力分数,不因有传感器就默认持续采集活动、位置或环境。
- 不把
modeSettleMs候选值当作普遍反应时间,也不把步骤预算当作任务成功证据。 - 不以模拟器、自动检查或有效 JSON 代替真实情境、持物操作与辅助技术验证。
- 本文没有复核上述论文的全部统计分析;引用研究用于识别问题与确定测试条件,不据此声称本产品的量化改善。