跨设备交互设计规范
面向设计师与工程师:让用户在多台设备之间认得出同一件事、接得上同一个任务、信得过看到的状态,并且只被打断一次。
6 条原则 · 37 条规则 · 必须 30 · 应当 7
目录
面向设计师与工程师:让用户在多台设备之间认得出同一件事、接得上同一个任务、信得过看到的状态,并且只被打断一次。
用户的一件事很少只发生在一台设备上。手机上开始、电脑上完成,手表上确认、车机上收听,家里的电视和会议室的屏幕上还坐着别人。设计对象因此不只是每台设备上的界面,还包括设备之间的关系:任务怎么移动、状态以谁为准、能力不足时任务变成什么、提醒该在哪台响,以及这台设备前面的人是不是本人。
本规范由六条原则和37 条规则组成:原则说明设计方向,规则规定适用情境、行为要求与验证方式。每条规则归属且仅归属一条原则,规则编号即原则编号(D3-2 就是第三条原则下的第二条规则)。
本规范约束的是产品在多设备场景下对用户作出的体验承诺及其兑现机制的性质,不预设唯一的技术架构,不绑定任何一家的分布式方案、连接协议或生态能力。它不是组件库,也不是同步引擎的实现方案。采用本规范不能替代无障碍、安全、隐私、数据跨境与领域合规的专项评估;多设备场景显著放大隐私与旁观者风险,这些专项评估比单设备产品更必要,而不是更次要。
全文四章:第 1 章原则,第 2 章规则的读法与速查,第 3 章规则详解,第 4 章术语;验证清单、论据说明与完整场景见附录 A、B、C,完整来源见 reference.md。
1. 六条原则
六条原则按规范对象切分设计责任:每条原则管辖一类对象上的义务,每条规则按其义务的直接规范对象归属唯一原则。对象不同,原则就不会互相替代——这是切分的依据,也是检验切分的方式。
| 原则 | 规范对象 | 设计方向 | 管辖规则 |
|---|---|---|---|
| D1 设备可识别可信任 | 设备的身份、在场状态,以及此刻在设备前的人 | 不要把"连上了"当成"可以了"。设备属于谁、现在在不在、是不是私密的、前面是不是本人,这四件事分别成立,缺一不可代替 | D1-1 ~ D1-6 |
| D2 任务可迁移可协同 | 任务在设备之间的位置、角色分工与控制权 | 不要只做"发送到另一台"。既要定义迁移的后果,也要定义同时参与时谁负责输入、输出与控制,以及成员离开后任务落在哪里 | D2-1 ~ D2-7 |
| D3 状态有真相源 | 多端之间的状态及其收敛 | 不要让界面替你撒谎。哪一份是真的、现在收敛了没有、两边同时改了怎么办、离线写的东西回来算不算数,都要有定义并且看得见 | D3-1 ~ D3-6 |
| D4 能力差异可降级 | 设备能力与任务需求之间的落差 | 不要按屏幕大小裁剪功能。能力不足时任务要有定义好的降级形态,而不是"此设备不支持";也不是硬塞给一块承载不了后果的屏幕 | D4-1 ~ D4-6 |
| D5 注意力跨端唯一 | 打断在设备之间的分配 | 不要把提醒复制到每一块屏幕上。同一件事只有效打断用户一次,处理过了别处就该消解,情境状态跨设备继承 | D5-1 ~ D5-6 |
| D6 一致性有边界 | 产品表达跨设备的变与不变 | 不要追求长得一样。必须一致的是语义、后果表述和心智模型;靶区、字号、层级与密度按设备和情境验证 | D6-1 ~ D6-6 |
同一个场景可以触及多条原则——把一份文档从手机流转到客厅电视,同时涉及目标设备的私密级别(D1-3)、迁移时的内容裁决(D2-6)和提醒内容的呈现级别(D5-6)——这不是分类错误:三条规则约束的是三个不同规范对象上的义务,一个是设备的属性,一个是迁移这个动作,一个是打断这个动作。互斥与穷尽是这套切分接受检验的主张,不是宣布即成立的事实:规则增删或归属存疑时,按附录 A 的分类检验验证。检验不过,修改的是原则的切分。
本切分中最需要持续检验的两处边界,在此明示:D2 与 D3——迁移是"任务、内容、交互入口或控制关系的转移",同步是"数据的收敛",两者可以互不发生(可以不迁移而需要同步,也可以迁移时数据早已收敛);D4 与 D6——降级管"这台设备上这件事还做不做得成",一致性管"同一件事在这台设备上怎么表达"。这两处若在实践中反复出现归属争议,应当调整原则而不是增设中间层。
原则用于理解规则与裁决归属,本身不作为单独的判定条目。当原则与具体条款的解读出现冲突时,以适用条款为准,并记录需要澄清的歧义。
规则归属唯一,不等于机制不能复用。设备私密级别既是信任判定的输入(D1-3)、迁移内容的裁决依据(D2-6),也是提醒呈现级别的解析输入(D5-6);一次"设备类解析"既服务于可读性(D6-2)也服务于降级判定(D4-1)。同一机制一物多用是常态,写在哪条取决于义务的直接规范对象。
2. 规则的读法
2.1 每条规则的结构
| 部分 | 作用 |
|---|---|
| 一句话 | 规则的记忆版,不替代正文 |
| 适用 | 这条规则在什么情境下生效。不落在适用范围内的产品记录"不适用"即可,不必勉强套用 |
| 规则 | 规范正文,规定这条规则的要求 |
| 边界条件 | 与适用共同限定要求的适用范围:说明这条规则不要求什么、例外在什么条件下成立(仅部分规则有) |
| 设计应用 / 验证示例 / 反例 | 帮助落地的说明,不另行增加义务,也不指定唯一实现 |
| 依据与参考 | 失败记录与实现参考(仅部分规则有;论据类型与出处见附录 B 与 reference.md) |
一句话概括各部分的效力:规则正文规定要求;适用与边界条件共同限定要求的适用范围;设计应用、验证示例、反例与依据参考不另行增加义务。
规则写行为性质、不写实现方式:断开重连后不重复已完成的迁移是产品行为,用什么协议和幂等键实现是工程方案——两者必须对得上,但不是同一份交付物。
2.2 约束词
规则正文使用三级约束词:
- 必须:不满足即不符合本规范。缺了它,某条对用户的承诺会在可预见的情境下失效——这是标「必须」的唯一依据。
- 禁止:与「必须」同等强度的反向表述,指明不得出现的行为;正文中的「不得」与「禁止」等价。
- 应当:默认遵循;确有理由偏离时,记录理由与替代做法,并接受同样的验证。偏离不需要审批,但需要留痕。「不应当」是「应当」的反向表述。
合规判定以正文中的独立义务子句为单位:无约束词的陈述句承接所在规则标题的强度;显式标注约束词的子句按其自身强度判定——【应当】规则内的「禁止/不得」子句仍是硬约束(D3-6、D5-2、D5-5、D6-3、D6-4、D6-6 含此类子句),规则标题与速查表的强度标注不替代子句约束力。正文中的「不能」仅用于能力或事实陈述,不表达义务。
强度表示约束力,不表示重要性。
2.3 反例的两侧
反例分两侧:"做不到"是漏掉这条要求,"做过头"是为了满足它而堆确认、提示、开关和设备列表。两侧都算没做对。常见的过度设计包括:每台设备都弹一次、每次靠近都问一次"要不要流转"、为了"一致"把手表做成缩小的手机。
2.4 规则速查:37 条
下表是全部规则的一句话记忆版,点击规则名可跳到第 3 章的完整正文。速查不替代各条的适用条件与完整要求;个别【应当】规则内含禁止级子句(D3-6、D5-2、D5-5、D6-3、D6-4、D6-6),判定以正文为准(见 2.2)。
D1 设备可识别可信任
| 规则 | 强度 | 一句话 |
|---|---|---|
| D1-1 设备身份与归属可见 | 必须 | 让用户看得到哪些设备算"我的",并且能把它请出去。 |
| D1-2 在场状态真实 | 必须 | 设备列表里的可用状态来自真实探测,不把上次在线当现在可用。 |
| D1-3 设备私密级别分级 | 必须 | 电视、车机、会议室屏幕默认是共享的,不按私人设备对待。 |
| D1-4 账号在场不等于本人在场 | 必须 | 登录着不代表坐在前面的是本人,敏感操作前检查验证是否仍有效。 |
| D1-5 配对与解绑对称 | 必须 | 连得上就要断得开,解绑后残留的数据和授权有明确去向。 |
| D1-6 发现不等于授权 | 必须 | 同一个网络、离得很近,都只是发现条件,不是授权依据。 |
D2 任务可迁移可协同
| 规则 | 强度 | 一句话 |
|---|---|---|
| D2-1 迁移语义显式 | 必须 | 说清这次是移动、复制、接管还是镜像,四件事后果不同。 |
| D2-2 源设备终态明确 | 必须 | 任务走了以后,原来那台处于什么状态,用户看得见。 |
| D2-3 迁移粒度与承接点 | 必须 | 承接的是整个任务还是当前视图,接到哪一点,事先定义。 |
| D2-4 迁移可拒绝可撤回 | 必须 | 自动流转可拒绝;已完成的迁移在可行窗口内提供退回。 |
| D2-5 迁移失败不吞任务 | 必须 | 中断时保住恢复状态,结果未知先核对,不因重试重复执行。 |
| D2-6 迁移不扩大可见与权限 | 必须 | 任务换了设备,权限和内容可见范围按新设备重新裁决。 |
| D2-7 协同角色与控制权可交接 | 必须 | 多台设备一起用时,说清谁控制、谁呈现,离开一台之后谁接着做。 |
D3 状态有真相源
| 规则 | 强度 | 一句话 |
|---|---|---|
| D3-1 真相源与乐观呈现分离 | 必须 | 分清本机保存、跨端同步与业务完成,每种确认都有依据。 |
| D3-2 同步状态可见 | 必须 | 已同步、同步中、未同步、冲突,四态可分,不是只有一个对勾。 |
| D3-3 并发写入有裁决规则 | 必须 | 两台同时改,规则事先定好,任何一方的输入不静默消失。 |
| D3-4 离线写入有承诺边界 | 必须 | 说清离线能改什么、回来怎么合并、什么情况会被拒绝。 |
| D3-5 修改保护优先于同步覆盖 | 必须 | 后到的同步不得覆盖用户正在编辑或已认可的内容。 |
| D3-6 收敛延迟有承诺 | 应当 | 给出可预期的同步时间,超了要说,不让用户盯着转圈猜。 |
D4 能力差异可降级
| 规则 | 强度 | 一句话 |
|---|---|---|
| D4-1 能力按声明解析 | 必须 | 按设备声明的能力决定行为,不按型号和屏幕尺寸猜。 |
| D4-2 降级有定义,不是不可用 | 必须 | 能力不够时任务变成什么形态要事先定义,不是弹一句不支持。 |
| D4-3 代理到其他设备可知可控 | 必须 | 把输入或输出转到另一台时,说清转去哪、谁在等。 |
| D4-4 关键操作有设备门槛 | 必须 | 承载不了后果的设备上,不直接完成不可逆操作。 |
| D4-5 裁剪保留判断所需信息 | 必须 | 小屏可以少显示,但不能少到用户没法作判断还让他确认。 |
| D4-6 降级不减告知义务 | 必须 | 降级减的是功能,不是必要的说明、确认和回执。 |
D5 注意力跨端唯一
| 规则 | 强度 | 一句话 |
|---|---|---|
| D5-1 同一事件跨端去重 | 必须 | 一件事只有效提醒一次,去重范围和时间窗明确。 |
| D5-2 提醒路由基于真实在场 | 应当 | 送到用户此刻可能在用的设备,不是全都响一遍。 |
| D5-3 已读与已处理跨端消解 | 必须 | 一台处理完,其他设备的红点、横幅和待办跟着消。 |
| D5-4 情境状态跨端继承 | 必须 | 勿扰、驾驶、会议、睡眠在一处设定,别处不得绕过。 |
| D5-5 例外路径显式有限 | 应当 | 能穿透去重和勿扰的事项,范围写死、次数有限、可审计。 |
| D5-6 共享设备不呈现私密提醒内容 | 必须 | 客厅电视上弹的是有新消息,不是消息内容。 |
D6 一致性有边界
| 规则 | 强度 | 一句话 |
|---|---|---|
| D6-1 一致的是语义不是像素 | 必须 | 定义哪些语义固定、哪些按设备适配,不强求处处相同或不同。 |
| D6-2 靶区与可读性按设备类解析 | 必须 | 字号、靶区、对比度按观看距离和输入方式解析,不跨设备沿用。 |
| D6-3 输入模态改变路径不改变可达 | 应当 | 语音、遥控、旋钮下路径可以不同,但能做的事不应当凭空消失。 |
| D6-4 层级与密度适配注意力预算 | 应当 | 车机和手表上给几层、放多少,按用户能分出的注意力定。 |
| D6-5 同一对象跨设备可识别 | 应当 | 同一个任务在两台设备上叫同一个名字,用户认得出是同一件事。 |
| D6-6 平台惯例优先于内部统一 | 应当 | 和宿主平台的返回、通知、分享惯例冲突时,让给平台。 |
2.5 先选择跨设备方式,再配置能力
先写用户成果,例如“到电脑后继续修改刚才的段落”,不要以“支持手机、平板、电视”代替目标。比较以下路径,只有收益足以覆盖发现、授权、等待和恢复成本时才引入换端:
| 情境 | 优先考虑 | 需要讲清的后果 |
|---|---|---|
| 本端已能轻松完成 | 留在本端 | 不因发现附近设备就打断 |
| 另一端更适合继续同一任务 | 顺序接续 | 接到哪里、源端还可做什么 |
| 同时需要私密控制与共享呈现 | 分工协同 | 谁控制、谁观看、退出后留下什么 |
| 仅某一步缺少输入或认证能力 | 代理一步 | 在哪台完成、等什么、怎样取消 |
| 目标不可用或当前不适合操作 | 保留草稿、延后或受限查看 | 保存在哪里、何时能继续 |
最小设计记录包含:用户成果与单设备基线、参与者与设备角色、对象及成功证据、正常与失败路径、预设及取值理由、待验证的体验指标。不适用项记录原因,不要求把全部 Token 暴露为设置。
2.6 状态与界面事实契约
以下是 D2-5、D3-1、D3-2、D4-3、D5-1 的落地读法,不新增强度。传输阶段、结果、控制归属与内容状态分别记录,不压成一个“成功”标记。
| 对外表述 | 最低成立依据 | 不足时的表达与动作 |
|---|---|---|
| 目标可用 | 有效在场证据,且本任务的权限、能力与必要资源取得路径已核验;不表示内容已就绪 | “待检查”可触发探测,不可直接开始投送 |
| 已发送 / 目标已接收 | 发送记录 / 目标接收回执,绑定同一请求 | 尚不显示“已在另一台继续” |
| 可在目标继续 | 目标已恢复约定的任务状态与承接点,必要资源可用;需要交接控制时交接已生效 | 标明缺失项,源端保留恢复入口 |
| 已取消迁移 | 执行方已接受取消且确认未承接 | “正在取消,结果待核对”;不得抢先恢复双端独占写入 |
| 已返回源端 | 承接后另行发起的返回动作已获授权并完成 | 返回不抹除已发生的业务影响,不表述为原迁移从未发生 |
| 已同步 | 对指定内容修订及声明范围的确认 | “已存本机,目标尚未确认”;连接图标不充当内容回执 |
| 已停止远端操作 | 执行端已到达定义的停止点并回执 | “停止请求待送达/待核对”;离线不冒充停止 |
| 已处理 | 业务动作实际完成并有对应结果 | 收到、已读、划掉横幅均不表示完成 |
支撑状态承诺的记录建议包含对象、主体、请求身份、来源、确认范围与时间;内容相关事实还需能识别所依据的数据修订。只保留支撑核验和恢复的必要信息,不把密码、验证码或完整私密内容复制进遥测。
3. 规则详解
本章按六条原则展开全部 37 条规则。每条的结构与各部分的约束力见 2.1;其中的设计应用、验证示例与反例只是帮助落地的说明,不指定唯一组件,也不要求新增独立交付文档。
3.1 D1 设备可识别可信任
设备是这套体系里最容易被含糊处理的对象:一台设备"在不在""是谁的""私不私密""前面坐着谁",是四个互相独立的事实,产品经常用其中一个替代另外三个——连上了就当可用,登录了就当是本人,是自己的账号就当没有旁人。本原则管辖这四个事实各自的成立方式。
D1-1设备身份与归属可见必须
一句话:让用户看得到哪些设备算"我的",并且能把它请出去。
适用任何在两台及以上设备之间共享账号、状态、内容或控制权的产品。
规则产品必须让用户能够查看当前被纳入跨设备能力范围的设备清单,每台设备可由用户识别(名称、类型、最近使用时间或位置线索之一以上);用户必须能够移除任一设备,移除后该设备失去继续获取新内容与新授权的资格。设备清单必须反映实际生效的范围,不得只展示部分设备或把已失效的设备长期留在清单中。移除后的残留数据处置见 D1-5。
边界条件本条不要求为一次性、就近、无账号的临时协同(如一次投屏、一次文件传送)建立持久设备清单;这类协同的范围由该次会话的存续期界定,结束即失效。
设计应用把设备清单放在用户找得到的位置(账号或隐私设置),而不是埋在某个功能的二级设置里;用用户能认出的名字,而不是内部标识符。
验证示例
- 用户侧:让用户指认清单中每一项分别是自己的哪台设备;再让其移除一台不再使用的设备,观察能否完成并理解后果。
- 实现侧:移除后验证该设备无法继续拉取新内容、无法承接新的迁移、既有令牌失效。
反例做不到——设备清单里躺着七个"iPhone",用户分不清哪个是旧手机,也没有移除入口;做过头——每次在新设备上打开应用都要走一遍确认与命名流程。
D1-2在场状态真实必须
一句话:设备列表里的可用状态来自真实探测,不把上次在线当现在可用。
适用向用户呈现其他设备可用性,或提供选择目标设备入口的场景。
规则呈现给用户的设备可用状态必须来自当前有效的在场判定(连接、近场信号、近期交互或用户显式选择之一以上),并明确该判定的有效期;判定过期后必须呈现为状态未知或不可用,不得沿用历史状态。不具备承接条件的设备禁止呈现为可流转、可投送或可控制的目标;用户选择后才发现目标不可用的,必须给出可执行的下一步而不是静默失败(失败处置见 D2-5)。
设计应用区分"不在线"与"状态未知";把探测成本高的判定做成用户触发的刷新,而不是常驻轮询。
验证示例
- 用户侧:把目标设备关机或断网,观察源设备上该设备的呈现在多长时间内变化,用户是否会误选。
- 实现侧:检查在场判定的信号来源与有效期;验证过期状态不被缓存复用。
反例做不到——设备列表长期显示三天前用过的平板"可用",点了转圈三十秒后失败;做过头——为了状态实时,持续高频广播探测,明显影响电量与网络。
D1-3设备私密级别分级必须
一句话:电视、车机、会议室屏幕默认是共享的,不按私人设备对待。
适用内容或提醒可能出现在非用户独占设备上的产品。
规则产品必须为纳入范围的设备维护私密级别(至少区分私人设备与共享设备),并以该级别作为内容呈现、提醒内容与迁移裁决的输入。设备私密级别未知时必须按共享设备处理,禁止默认按私人设备处理。私密级别必须可由用户查看与更正;产品可以给出推断的默认值,但推断不得覆盖用户的明确设置。本条只规定级别的成立与默认方向,级别在各动作中的具体后果分别见 D2-6(迁移)、D5-6(提醒)、D4-4(关键操作)。
设计应用把私密级别做成设备的属性而不是每个功能各自的开关;在用户首次向一台新设备投送内容时,是询问级别的自然时机。
验证示例
- 用户侧:把内容投送到客厅电视,观察默认呈现是否按共享处理;用户把该电视标记为私人后,行为是否随之变化。
- 实现侧:验证未知设备的默认级别为共享;验证用户设置优先于推断。
反例做不到——同账号登录的车机被当作私人设备,锁屏摘要在副驾面前完整展开;做过头——每台设备每次连接都要求用户重新回答一遍私密性问题。
D1-4账号在场不等于本人在场必须
一句话:登录着不代表坐在前面的是本人,敏感操作前检查验证是否仍有效。
适用共享设备,以及长期保持登录状态的设备上的敏感操作。
规则产品必须区分“账号处于登录状态”与“当前操作者已被验证”两个事实。在共享设备或长期保持登录的设备上执行敏感操作(涉及支付、权限变更、对外发送、删除、查看敏感个人信息)前,必须核验当前操作者的身份验证仍有效;缺少有效验证时重新确认本人。验证必须绑定用户、设备或会话、适用范围与有效期,账号切换、撤权及风险变化可提前使其失效。验证方式必须与设备能力相称,不具备可靠验证能力时禁止直接完成该类操作(D4-3、D4-4)。凭据与支付凭据必须在可信认证界面中由用户控制使用,禁止由普通业务界面、模型或跨端代理收集后转录到另一设备;用户主动使用的密码管理器、系统自动填充和粘贴不在此禁令之内。不得把记忆密码、手工抄码或扫描二维码作为没有等效替代的唯一认证路径。
边界条件本条不要求为浏览、播放、查询等低影响操作增加重验;也不要求有效验证范围内每次点击都重新做生物识别。身份验证不等于对具体业务操作的授权或确认,后者仍须独立成立(D4-3)。
设计应用把重验绑定到操作的影响而不是绑定到时间;闲置时长可以作为重验的触发条件之一,但不是唯一条件。
验证示例
- 用户侧:在共享设备上让另一个人尝试执行一次支付或一次对外发送,观察是否被拦下。
- 实现侧:检查敏感操作前的验证检查、范围及有效期;切换账号、超时或撤权后旧验证不能复用,身份已验证也不能替代具体操作批准。
反例做不到——家庭共享的平板长期登录,任何人可直接下单;做过头——用户在自己手机上每看一条消息都要验一次生物识别。
D1-5配对与解绑对称必须
一句话:连得上就要断得开,解绑后残留的数据和授权有明确去向。
适用建立持久跨设备关系(配对、绑定、加入设备组)的产品。
规则任何可建立的跨设备关系必须可由用户解除,解除入口的可发现性应当与建立入口相当。解绑必须撤回该设备上继续获取新内容与新授权的资格,并明确本地缓存内容、未完成迁移与已授予权限的处置;处置结果必须告知用户,不得让用户以为已清除而实际保留。解绑不影响已同步到其他设备的合法内容,也不追溯撤销该设备在解绑前已产生的合法结果;需要撤销既有影响时,必须另行核对操作是否可撤、用户权限及实际结果。
授权撤回与远端数据清除必须分别记录结果。设备离线、仅支持离线验证的凭据尚未到期、或平台无法清除缓存时,必须说明生效边界与残留风险;禁止把“已提交清除请求”呈现为“已清除”。撤回决定必须在相应授权检查点生效;重连后必须先核对撤权与清除要求,再恢复内容交换。退出账号或切换工作空间时,旧身份的缓存、待提交操作与接续入口必须隔离,不得提交到新身份下。
依据与参考Apple Find My 的离线擦除说明区分待擦除与实际擦除。此处据此补充回执边界,不要求普通应用具备系统级远程擦除能力。
设计应用解绑时区分"从这台设备移除"与"删除内容",两者用户心智不同,不要用一个按钮同时做两件事。
验证示例
- 用户侧:让用户在丢失一台设备的假设下完成解绑,观察其能否找到入口并理解哪些内容仍留在那台设备上。
- 实现侧:验证授权检查点拒绝后续访问;离线设备清除显示待执行,只有取得清除回执才显示已完成,重连不复活撤回的权限。
反例做不到——配对一步完成,解绑要联系客服;做过头——每次短暂断连都提示用户是否要解除绑定。
D1-6发现不等于授权必须
一句话:同一个网络、离得很近,都只是发现条件,不是授权依据。
适用使用近场、同网段、同账号或其他环境信号发现设备的产品。
规则环境信号(物理邻近、同一局域网、蓝牙或超宽带可见、同一账号在场)只能作为发现与候选排序的依据,禁止作为授予控制权、读取内容或执行操作的授权依据。跨设备的控制与内容访问必须有独立于环境信号的授权依据(用户显式选择、既有配对关系或有效凭据)。被发现的设备发送的名称、描述与提示文本属于外部内容,不得因被读取而获得指令权威。
发现阶段必须限制广播与采集的信息,不得为尚未授权的候选发现暴露任务正文、访问凭据或不必要的稳定个人标识;发现范围与持续时间应当与当前用途匹配。设备名称只作识别线索,不能单独证明设备身份。使用扫码或短码建立关系时,授权界面必须使用户能够核对实际设备、账号或工作空间、请求范围及有效期;扫描或输入代码本身不得替代对授权对象的核对。
使用扫码、短码或推送授权时,必须呈现发起来源、用途、实际授权对象及后果,并提供清楚的拒绝或取消入口;对非本人发起或不符合预期的请求,不得默认接受。配对码须绑定请求并受有效期与使用次数约束,重复到达不得建立额外授权。名称相同、访问了真实登录域名或完成了多因素验证,都不独立证明请求来自用户预期的设备。
外部依据:RFC 10027 §6.1.14强调保留请求上下文及明确拒绝入口,并指出界面说明需与其他缓解机制结合;邻近可辅助核对,不替代授权。
依据与参考这是跨设备场景中与单设备产品差别最大的一条,也是最容易被便利性侵蚀的一条:为了"走近就能用",把邻近判定接到了授权路径上。物理邻近是可被制造的条件——同一间办公室、同一节车厢、同一个咖啡馆都满足。本条要求便利性只作用于发现与排序,不作用于授权。
设计应用靠近提示可以把目标设备排到第一位,但确认动作仍由用户在源设备上完成;不要用"检测到附近有设备"直接触发内容投送。
验证示例
- 用户侧:在同一网络下用另一个账号的设备尝试发起控制,观察是否被要求独立授权。
- 实现侧:验证仅有环境信号时不会获准;情境可以收紧既有授权,但不能自行扩大授权。在设备名称中植入指令性文本,验证只作为显示字符串处理。
反例做不到——同一 Wi-Fi 下任意设备可直接向本机投送内容并自动播放;做过头——每次在自己家里从手机投到自己的电视都要走一次完整配对。
3.2 D2 任务可迁移可协同
迁移是有语义、有承接点、有终态的动作;协同则允许多台设备持续承担不同角色。本原则管任务的位置、分工与控制权:这次移动是什么性质、接到哪一点、谁继续执行、谁可以控制,以及成员变化后怎么办。数据在两端如何收敛见 D3。
D2-1迁移语义显式必须
一句话:说清这次是移动、复制、接管还是镜像,四件事后果不同。
适用提供任务、内容或控制权跨设备转移能力的产品。
规则产品必须为每类跨设备转移定义并向用户表达其语义,至少区分:移动(主要交互入口转到目标设备,源设备不再作为同一任务的独立主动交互入口;实际执行位置另由执行角色定义,可以保留在源端或服务端,本项不要求重启执行)、复制(两端各自持有,此后可独立演进)、接管(目标设备取得控制权,源设备转为受控或旁观)、镜像(两端呈现同一内容,控制权不变)。同一入口禁止在不同情境下产生不同语义而不加区分。语义必须在用户确认迁移前可知,不得只在结果中体现。
边界条件四种语义只在产品实际提供对应能力时区分,不要求提供四种入口,也不穷尽持续协同形态。"迁移"是本规范对任务、内容、交互主场或控制关系跨设备转移的统称——复制与镜像不移动任务主场,产品按本条声明每一类的实际变化即可;若产品提供的是独占控制的移交,另须满足 D2-7 的接管义务。手机显示讲稿、电视显示幻灯片属于分工协同,按 D2-7 处理;远端独立播放不必是镜像。“投屏”“在此继续”等名称不能代替对实际后果的定义。只打开同一任务的另一个视图,不得隐式复制任务或重启执行。
设计应用用动词而不是图标传达语义——"在电脑上继续"(移动)、"也发到平板"(复制)、"用手机遥控"(接管)、"投到电视"(镜像);同一产品内保持动词与语义的固定对应。
验证示例
- 用户侧:让用户在流转前预测原设备之后会怎样,比对其预测与实际行为是否一致。
- 实现侧:枚举产品全部转移入口,检查每个入口的语义唯一且已声明。
反例做不到——一个"发送到设备"按钮,有时是复制有时是移动,用户回到原设备才发现任务没了;做过头——每次流转都要求用户从四种语义里先选一种。
D2-2源设备终态明确必须
一句话:任务走了以后,原来那台处于什么状态,用户看得见。
适用任何会改变源设备上任务状态的跨设备转移。
规则迁移完成后源设备的状态必须被定义(继续、暂停、只读、退出之一)并对用户可见;源设备上的呈现必须与该状态一致,不得停留在迁移前的画面让用户以为仍可继续操作。若源设备转为只读或退出,正在进行中的未提交编辑必须被保留或明确告知其去向。源设备上的后台执行是否继续,必须与实际执行情况一致,不得声称在后台继续而实际已停止。
设计应用在源设备上留一个明确的落点——"已在客厅电视上继续播放"并附带取回入口,而不是直接把界面关掉。
验证示例
- 用户侧:迁移后回到源设备,观察用户能否说出这台设备现在还能做什么。
- 实现侧:验证源设备呈现状态与实际执行状态一致;验证未提交内容未被丢弃。
反例做不到——手机上流转到电脑后界面照旧,用户继续在手机上编辑,改动全部作废;做过头——迁移后在源设备上弹出全屏说明页,挡住用户想做的其他事。
D2-3迁移粒度与承接点必须
一句话:承接的是整个任务还是当前视图,接到哪一点,事先定义。
适用提供跨设备接续能力的产品。
规则产品必须定义每类迁移的粒度(任务、视图、播放或阅读位置、当前选区之一以上)与承接点的精度,并使目标设备的起始状态与该定义一致。承接点必须落在用户可识别的位置上;无法达到声明精度时必须告知实际承接位置,禁止静默退回到起点或跳到不相关位置。跨设备接续必须可靠保存目标、进度、已确认决定、待处理输入及恢复位置,不得依赖模型或界面重新推测用户此前进行到哪里。
接续状态必须绑定同一任务或对象标识、所属账号或工作空间与内容修订标识,并明确必要草稿、附件、本机资源的可用范围。目标端必须校验这些依赖;依赖不齐或数据格式不兼容时按 D4-2 降级,不得打开空白任务冒充接续成功。承接点应当保存为可映射的段落、字段或媒体位置,而非只保存源设备的像素坐标;目标布局变化后的焦点与辅助技术接续见 D6-3。
设计应用视频与音频接续到播放位置,文档接续到滚动位置与光标,表单接续到已填字段与当前焦点;写清哪些内容不随迁移过去(如未保存的本地草稿、依赖本机的资源)。
验证示例
- 用户侧:在长文档中途流转,观察用户是否需要重新寻找刚才读到的位置。
- 实现侧:验证承接点来自持久工作状态;验证声明的精度在弱网与冷启动下仍成立。
反例做不到——播客流转到车机后从第一集开头开始播;做过头——为了精确承接,迁移前强制等待全量同步完成,用户在设备前干等。
D2-4迁移可拒绝可撤回必须
一句话:自动流转可拒绝;已完成的迁移在可行窗口内提供退回。
适用由系统自动发起、或由邻近与情境触发的迁移。
规则非用户显式发起的迁移必须提供拒绝路径,且拒绝不得被计为同意;迁移提示未获响应不视为同意,提示有有效期,过期即失效。迁移完成后应当在合理时间窗内提供退回源设备的入口。禁止把自动迁移设为无法关闭的默认行为;产品可以提供自动迁移,但用户必须能够将其收敛为需要确认或完全关闭。
近场与情境提示应当有重复提示的冷却规则;同一机会被拒绝或忽略后,不应当因信号抖动反复出现。有效预先授权可以覆盖自动流转,其设备范围、内容范围与触发条件必须明确;不能以“自动”为由将一次未响应的邀请转为授权。
边界条件本条不要求为用户在源设备上主动点击发起的迁移额外增加一次确认;也不要求对已在目标设备上产生了不可逆外部影响的迁移提供退回;此时必须说明哪些影响已发生,提供仍可执行的停止或补救路径,禁止把返回源端表述为撤销既有影响。
设计应用把"要不要流转"的提示做成低打扰的可忽略形态而不是模态弹窗;退回入口放在目标设备完成迁移后的原位。
验证示例
- 用户侧:走近电视时观察是否被自动接管播放;用户忽略提示后行为是否保持不变。
- 实现侧:验证未响应的提示到期失效且不产生迁移;验证关闭自动迁移后不再触发。
反例做不到——走进客厅手机上的音乐自动转到电视,正在通话的用户手忙脚乱;做过头——每次流转前后各弹一次确认,来回四次点击。
D2-5迁移失败不吞任务必须
一句话:中断时保住恢复状态,结果未知先核对,不因重试重复执行。
适用所有跨设备迁移。
规则迁移过程中断(连接失败、目标设备不可用、超时、用户取消)时,必须保留可恢复的工作状态与恢复入口,禁止因过早清理源状态造成两端都无法恢复。发出请求、目标已接收、目标可接续必须可区分;仅收到传输回执不得宣告迁移成功。目标实际承接前,源状态不得被销毁。迁移结果必须区分成功、失败与未知三态;结果未知时必须先核对目标设备的实际状态,不得因超时假定目标未执行,也不得在两端重复执行具有外部影响的动作。失败或待核对状态必须告知用户,并给出可执行的下一步。
取消与承接同时发生时,必须以可核验的生效顺序裁决;已承接后的取消应表达为新的返回或停止动作,不得宣称原迁移从未发生。结果未知期间必须保留请求身份和恢复点,核对仍无结果时提供等待、查询或人工处理路径,不得用无限重试掩盖未知。
边界条件两端离线或执行归属不明时,不承诺立即继续全部操作;可以暂缓外部写入并保留浏览、草稿或等待恢复的路径。“保住任务”不等于在无法确认安全性时允许两端同时执行。
设计应用把源设备的退出安排在目标设备确认承接之后,而不是发起迁移的同时;对涉及外部影响的操作使用可去重的标识。
验证示例
- 用户侧:在迁移过程中断开目标设备网络,观察能否找到保留的任务、理解待核对状态并继续可安全进行的工作。
- 实现侧:注入超时与部分成功故障,验证不出现双端丢失、不出现重复外部影响。
反例做不到——点了流转后源设备立即退出,目标设备没接上,任务消失;做过头——每次迁移失败都要求用户手动核对两端状态并选择保留哪一份。
D2-6迁移不扩大可见与权限必须
一句话:任务换了设备,权限和内容可见范围按新设备重新裁决。
适用所有跨设备迁移,尤其是目标的私密级别、受众或权限环境不同的场景。
规则迁移到目标设备后,内容可见范围与操作权限必须按目标设备的私密级别(D1-3)、当前用户及任务所属账号或工作空间重新裁决,禁止直接沿用源设备的可见范围与权限。向共享设备迁移可能使私密内容对旁观者可见时,必须在内容呈现前由用户确认或按降级级别呈现。目标端只承担呈现或控制、实际执行仍在源端或服务端时,必须分别校验目标端的查看或控制权限与执行端的行动授权,禁止借代理绕过任一边界;权限不足按 D4-2 降级。
输出受众变化时必须重新裁决可见范围,包括新外接屏接入、镜像开始、录制开始与私密耳机切换外放。无法可靠感知变化的平台必须说明能力边界,并采用预先选定的共享输出或敏感内容不呈现策略;不得先输出私密内容再要求用户补确认。
依据与参考本条与 D1-3、D5-6 共用"设备私密级别"这一机制,但规范对象不同:D1-3 规定级别本身如何成立,本条规定迁移这个动作如何使用它,D5-6 规定打断这个动作如何使用它。三处要求不可互相替代。
设计应用投屏时把"完整呈现"与"仅呈现共享内容"作为迁移前的选项,而不是投出去之后再让用户去关;通知与消息内容按目标设备级别单独裁决。
验证示例
- 用户侧:把包含私密信息的文档投到会议室屏幕,观察默认呈现内容与用户预期是否一致。
- 实现侧:验证目标设备上的权限判定不引用源设备的授权结果;验证降级呈现在内容首帧即生效,而不是渲染后再遮挡。
反例做不到——手机投屏到会议室大屏,私人消息横幅照常弹出;做过头——向任何设备迁移都要求逐项勾选哪些内容可以带过去。
D2-7协同角色与控制权可交接必须
一句话:多台设备一起用时,说清谁控制、谁呈现,离开一台之后谁接着做。
适用多台设备同时参与同一任务,包括第二屏、分布式界面、远程控制与多人设备组。
规则产品必须定义并使参与者可知各设备的输入、输出、执行与控制角色,以及当前有权控制的主体和作用对象。设备组成员资格不等于任务的全部权限;多人参与时必须区分参与者身份及各自可见、可操作范围。共享控制必须定义冲突命令的裁决与回执,不得用内容合并策略替代暂停、跳转、提交等命令的执行裁决。独占控制发生交接时,必须在实际执行入口核对生效点:新控制范围已生效、旧控制范围已失效、残余动作已按预定方式处置,三项分别有据;交接后的旧主控不得继续以原控制权发出有效命令,各端界面同时显示“已接管”不构成交接完成的证据。采用独占还是共享控制,须分别声明其冲突裁决与失联后援。
主控断开、成员退出、组到期时,必须按预定规则转交、暂停或结束相应协同能力,并告知任务留在哪里;禁止静默产生两个独占主控。退出某台设备、断开控制连接、停止远端呈现、结束设备组与取消任务必须区分。离组后依赖本组取得的临时访问与控制资格必须失效,不撤销独立于本组的既有授权;重连的旧设备不得凭缓存身份恢复已经转移或已过期的控制权。
边界条件主控丢失后不要求自动选举新主控;暂停并提供有权用户接管的入口也是有效策略。单人双设备不要求展示成员管理页,当前控制端与退出后果可在现有控制界面内表达。
设计应用手机上保留演讲者备注与控制,电视只显示幻灯片;“断开我的手机”与“结束大屏演示”采用不同动作。电脑执行后台任务、手机监督时,停止请求返回已接收与已生效的真实状态,不因手机离线重建执行实例。
验证示例
- 用户侧:两人各用一台设备加入演示,再让主控退出;观察双方能否理解谁现在可以翻页、大屏是否继续以及如何结束。
- 实现侧:注入同时接管、主控断网、旧命令延迟到达与离组后重连,验证独占控制不分裂、临时权限失效、退出不误取消任务。
反例做不到——两部手机都声称是主控,反复把大屏切到不同页面;做过头——每次翻页都让所有参与者确认一次。
依据与参考W3C Presentation API分别定义控制端、呈现端及连接关闭与呈现终止;Android Sessions API区分 transfer 与 share。两者是模型参照;本条的控制权与离组行为是本规范的设计要求,不是这些 API 的通用保证。
3.3 D3 状态有真相源
多端产品最伤用户的失败不是慢,是撒谎:界面显示已保存而服务端没有,两台设备各自显示一份不同的内容而都声称是最新,用户在飞机上写的两千字回到地面被静默覆盖。本原则管辖状态在多端之间的收敛及其呈现——哪一份是真的、现在收敛了没有、冲突怎么裁决、用户的输入受不受保护。任务在哪台设备上进行不在本原则之内,见 D2。
D3-1真相源与乐观呈现分离必须
一句话:分清本机保存、跨端同步与业务完成,每种确认都有依据。
适用任何在多台设备之间共享可变状态的产品。
规则产品必须为每类跨设备共享状态定义权威来源或确定的合并规则,并使各端呈现可以解析到该定义。可以采用服务端、指定主设备或本地优先的多副本模型;多副本模型必须明确内容修订、冲突与收敛判定,禁止将某台设备上最后看到的值任意当作全局事实。内容状态与控制命令可以采用不同的权威模型(D2-7)。
界面必须区分本机持久保存、声明范围内的同步与业务动作完成。本机持久化已确认时可以显示“已保存到本机,尚未同步”;禁止将仅在内存中回显的输入说成已保存,将本机保存或服务端接收说成目标设备已可用。对外发送、支付及其他不可逆影响可以立即显示“待发送”“处理中”,但禁止乐观宣告成功,完成必须以真实业务回执为准。
依据与参考Local-first software讨论离线工作与多副本协作,提示本规范需要容纳本地优先模型;这不意味着所有操作都能离线完成,也不证明用户一定理解同步状态。
设计应用编辑后先反馈“已保存到本机”,上传确认后反馈“已同步到账号”;只有核实目标端已取得对应内容修订与必要资源,才表达“可在平板继续”。发送中的气泡可以先出现,但保留待发送状态与失败后的内容。
验证示例
- 用户侧:断网状态下完成一次编辑,观察用户是否会认为内容已经保存到云端。
- 实现侧:分别检查本机持久化、同步确认与外部动作回执;验证未收到业务回执时不显示成功,且失败后保留用户输入。
反例做不到——离线时点击发送,界面显示"已发送",对方三小时后才收到或根本没收到;做过头——每一次输入都等待服务端确认才回显字符。
D3-2同步状态可见必须
一句话:已同步、同步中、未同步、冲突,四态可分,不是只有一个对勾。
适用内容可在多设备间同步且用户可能在同步未完成时切换设备的产品。
规则用户必须能够就当前工作对象获知其同步状态,至少区分已同步、同步中、未同步(含离线与失败)与存在冲突四种情况;处于非"已同步"状态时,必须能获知这意味着什么以及可以做什么。同步失败禁止仅以静默重试处理而不告知用户;重试可以自动进行,但持续失败必须可被用户发现。状态呈现的详略可按设备类调整(D6-4),但四态的可分性不因设备而取消。
“已同步”必须说明其确认范围:到服务端、到指定设备、或到当前参与同步的设备集合,不得暗示所有离线设备都已更新。确认范围或内容修订未知时必须标明未知;目标端只取得较早的内容或缺少附件时,必须说明当前可用内容与缺失项。四态是最低语义区分,可以叠加保存位置、最近确认的内容修订与等待原因,不要求压成一个互斥枚举。
边界条件本条不要求为每一次微小改动都呈现同步指示;对用户不可见、不影响其决策的内部状态同步不在适用范围内。
设计应用把状态挂在对象上而不是全局角落里——用户关心的是"我这份文档"同步了没有;离线时给出"回到网络后会怎样"的说明,而不只是一个感叹号。
验证示例
- 用户侧:制造一次同步失败,观察用户多久发现、是否会在另一台设备上误以为拿到的是最新内容。
- 实现侧:验证四态在界面上确有区分;验证持续失败在合理时间内升级为用户可见的提示。
反例做不到——同步失败后图标不变,用户在另一台设备打开的是三天前的内容;做过头——每保存一次弹一条同步成功的提示。
D3-3并发写入有裁决规则必须
一句话:两台同时改,规则事先定好,任何一方的输入不静默消失。
适用同一对象可能在两台及以上设备上被同时修改的产品。
规则产品必须预先定义并发写入的裁决策略(阻止并发编辑、自动合并、保留双方副本交由用户裁决、后写入生效之一以上),并使策略与实际行为一致。任何策略下都禁止静默丢弃任一端已被用户认可的输入:采用后写入生效时,被覆盖的内容必须可被用户发现并取回;采用自动合并时,合并结果必须可被用户识别与更正。存在冲突且无法自动裁决时,必须保留双方内容并交由用户处理,不得以任一方为准直接覆盖。
设计应用把“保留双方副本”设计成可比对形态。按数据语义决定自动合并范围:不同段落的新增可以自动合并;同一收款方、数量或删除与编辑的冲突需要专门裁决。短文本不天然比长文本安全。
验证示例
- 用户侧:在两台设备上同时编辑同一段落后恢复连接,观察用户能否理解发生了什么、能否取回自己那一版。
- 实现侧:注入并发写入与时钟偏差,验证不出现静默丢失;验证被覆盖的内容可取回。
反例做不到——平板上写的段落被手机端较早的内容覆盖,没有任何提示也无法恢复;做过头——任何两端先后修改都判为冲突,用户每天要处理十几次合并。
D3-4离线写入有承诺边界必须
一句话:说清离线能改什么、回来怎么合并、什么情况会被拒绝。
适用允许在无连接或弱连接状态下继续操作的产品。
规则产品必须定义离线状态下允许的写入范围,并在用户进入该状态时使其可知;超出范围的操作必须在用户投入之前被拦下并说明,禁止让用户完成大量输入后再告知无法提交。恢复连接后的处理方式(提交、合并、进入冲突裁决、被拒绝)必须与声明一致;可能被拒绝的操作必须事先告知这种可能,并在被拒绝时保留用户输入的内容。离线期间产生的、依赖外部状态的操作按 D3-1 不得呈现为已完成。
离线草稿与排队待执行的命令必须分开。依赖时效或外部状态的命令必须定义有效期;重连提交前必须重新校验当前账号、授权、对象修订标识及删除状态。过期、撤权、对象已删除或关键条件改变时,不得按旧条件自动执行;保留仍有权保留的输入并说明可选路径。恢复草稿不等于重新授权发送,也不得让离线旧副本静默复活已删除的共享对象。
设计应用区分"离线可写并保证提交"与"离线可写但可能失败"两类,并在入口处就体现差异;把不能离线做的事灰掉并说明原因,而不是允许操作后失败。
验证示例
- 用户侧:在飞行模式下完成一段较长的编辑并恢复连接,观察内容是否完整、用户是否需要重做。
- 实现侧:验证离线写入范围与声明一致;验证被拒绝时用户输入仍可取回。
反例做不到——地铁上写完长评论,出站后提示"网络错误",内容清空;做过头——检测到网络不稳定就整体切换为只读,用户什么都做不了。
D3-5修改保护优先于同步覆盖必须
一句话:后到的同步不得覆盖用户正在编辑或已认可的内容。
适用同步可能在用户正在操作时到达的产品。
规则来自其他设备的同步结果禁止以丢弃输入、破坏已确认内容或改变业务含义的方式覆盖用户工作。符合 D3-3 裁决策略且能保护贡献的变更可以自动合并,不要求用户逐次采纳;无法安全合并的重叠修改必须保留双方内容并提供裁决入口。同步到达时必须保留用户输入与组合输入状态,将光标、选区与焦点映射到更新后的对应位置,不得无故跳转、重置或丢失。影响用户判断的远端变更必须可识别,并提供内容取回或修复路径;本地撤销不得无差别抹掉其他人的独立贡献。
设计应用非冲突修改自动进入协作文档;重叠改写提供行内比较,用户仍可继续编辑其他区域。输入法候选词尚未提交时保护组合输入,不能用远端整段刷新打断选字。
验证示例
- 用户侧:在一台设备上输入的同时从另一台推送更新,观察输入是否被打断、光标是否跳走。
- 实现侧:验证非冲突合并、冲突隔离、组合输入与选区映射;验证取回内容及本地撤销不删除他人的独立修改。
反例做不到——正在写的一段被另一台设备的内容整段替换,光标跳到文首;做过头——任何远端更新都要求用户先处理才能继续输入。
D3-6收敛延迟有承诺应当
一句话:给出可预期的同步时间,超了要说,不让用户盯着转圈猜。
适用用户可能在同步完成前切换设备的产品。
规则产品应当为主要内容类型给出可预期的收敛时间范围,并在超出该范围时告知用户当前情况与可行的下一步;超时后禁止继续呈现为同步中而不加区别,长时间未收敛应当归入未同步或失败并按 D3-2 呈现。收敛承诺应当以用户可感知的对象为单位表达,而不是以内部批次或队列为单位。
承诺应当声明计时起点、确认范围、适用网络与资源条件;超时只表明未在承诺内确认,不证明操作没有生效。产品必须禁止把目标设备时钟较快、重连或重新打开界面当作新的授权期限或重试机会;跨端有效期由可核验的时间依据裁决。
边界条件本条不要求承诺一个精确数值,也不要求在网络条件不可控时保证达成;要求的是有可预期的范围、超出时有告知。
设计应用在用户即将切换设备的时机(如发起迁移前)主动检查收敛状态,而不是等到另一台设备上打开才发现内容是旧的。
验证示例
- 用户侧:在弱网下保存后立即切换设备,观察用户是否被告知内容可能尚未同步。
- 实现侧:验证超时后状态发生变化而非无限停留在同步中。
反例做不到——同步指示转了十分钟,用户在另一台设备上打开发现是空的;做过头——每次同步都显示预计剩余秒数,数字反复跳动。
3.4 D4 能力差异可降级
手表没有键盘,车机在行驶中不能读长文,电视没有精确指点,头显里打字很慢,音箱没有屏幕。这些不是"不支持",是能力落差。本原则管辖落差本身:能力怎么判定、任务在能力不足时变成什么形态、什么操作根本不该在这台设备上完成、裁剪到什么程度就不该再让用户拍板。表达上的差异不在本原则之内,见 D6。
D4-1能力按声明解析必须
一句话:按设备声明的能力决定行为,不按型号和屏幕尺寸猜。
适用在不同设备上呈现不同功能或形态的产品。
规则跨设备的功能与形态差异必须依据可解析的能力维度(主输入模态、屏幕类别、是否可私密显示、可持续注意程度、是否可后台执行、是否可离线写入等)判定,禁止仅以屏幕尺寸、设备型号或操作系统作为唯一判定依据。能力维度必须可解析到明确的来源(设备自述、平台查询或产品预设映射)与有效性依据;来源不可用时按最低能力假定,并使降级结果符合 D4-2。用户可覆盖的能力设定(如"在这台设备上按大屏处理")优先于推断。
能力必须在承接时及相关条件变化后重新判定,包括应用与数据格式兼容性、必要资源可用性、后台限制与当前输入能力。网络连接成功不等于这些条件成立;缺少应用、格式不兼容或后台执行被限制时,必须在相应承诺前说明。用户的布局偏好不能覆盖平台实际限制、授权或安全门槛。
依据与参考OpenHarmony 跨设备迁移文档提供目标应用兼容性检查及不兼容反馈的实现示例;不兼容的后果取决于产品,不能仅因已连接就宣告可接续。
Android 自适应布局指南提供按窗口适配布局的实践。本条另外区分设备能力与情境:同样宽度下,键盘桌面、遥控电视与行驶中的车机具有不同交互条件。窗口尺寸可以决定布局,但不足以单独决定行动能否成立。
设计应用把能力维度定义成产品级的少量枚举而不是每个功能各自判断;折叠、外接屏幕、外接键盘等运行中变化的能力必须能被重新解析。
验证示例
- 用户侧:给平板接上键盘,观察产品行为是否随之变化;在车机静止与行驶状态下比较可用功能。
- 实现侧:验证功能开关的判定输入是能力维度而非型号;验证能力变化被重新解析而不是仅在启动时读取一次。
反例做不到——按屏幕宽度判定为"手机",于是接了键盘的折叠屏展开后仍然没有快捷键;做过头——为每一种设备型号维护一套独立的能力表与界面分支。
D4-2降级有定义,不是不可用必须
一句话:能力不够时任务变成什么形态要事先定义,不是弹一句不支持。
适用主要任务可能在能力不足的设备上被发起或承接的产品。
规则对每类主要任务,产品必须定义能力不足时的行为(功能降级为受限形态、代理到具备能力的设备、明确不可用并说明原因之一以上),并使实际行为与定义一致。禁止静默失败:不可用必须被告知,且告知中包含用户可执行的下一步。降级形态必须仍能达成该任务的核心价值或明确地把用户导向能达成的路径,不得只保留一个空壳入口。
设计应用常见降级方向是只读、摘要、确认、排队待办——手表上不编辑但可以确认,车机上不阅读但可以收听,音箱上不选择但可以记下待办。
验证示例
- 用户侧:在能力最弱的目标设备上尝试发起主要任务,观察用户是否知道现在能做什么、接下来去哪里做。
- 实现侧:枚举主要任务与设备类的组合,检查每个组合有定义好的行为,不存在未定义的静默失败。
反例做不到——手表上点开文档提示"该设备不支持",没有下一步;做过头——在手表上勉强塞进完整编辑器,字小到无法操作还必须用它完成。
D4-3代理到其他设备可知可控必须
一句话:把输入或输出转到另一台时,说清转去哪、谁在等。
适用把某一步骤的输入或输出转交给其他设备完成的场景。
规则将输入或输出代理到其他设备时,产品必须明示目标设备、正在等待什么、以及该等待的有效期;用户必须能够取消代理并在当前设备上选择其他路径(若存在)。目标设备必须处于真实可用状态(D1-2),不得把请求发往不可达设备后无限等待。代理不改变授权范围:目标设备上完成的操作仍按其自身权限与私密级别裁决(D2-6、D1-4)。凭据与支付凭据类输入的代理受固定底线约束,必须由人在具备该能力的设备上直接完成。
跨设备确认必须绑定请求标识、发起设备、账号或工作空间、对象修订标识与实际操作后果;确认前关键内容变化必须使旧确认失效。同一请求在多端确认只生效一次;取消、过期后的迟到确认不得重新触发执行。验证身份、批准设备登录与批准某项业务操作是不同决定,不得互相冒充。人在手机的可信认证界面完成登录、仅向电视返回限定授权结果,是认证接续;不得把密码转录或转发到电视输入框。
依据与参考RFC 8628提供受限设备在另一设备上完成授权的协议,并讨论设备核对与远程钓鱼;此处借鉴其绑定与过期边界,不把登录授权等同于业务操作批准。
设计应用在发起端明确显示"已发送到你的手机,等待确认"并附带取消入口;在目标端使请求的来源与内容可辨认,避免用户不知道自己在批准什么。
验证示例
- 用户侧:在电视上触发需要输入密码的步骤,观察用户是否清楚要去手机上完成、以及等多久会失效。
- 实现侧:验证等待超时、取消与批准竞争、内容变更及迟到回执;两端显示实际状态,未生效不冒充已取消,重复确认不重复执行。
反例做不到——电视上停在"请在手机上确认",手机上什么也没收到,也没有超时;做过头——每一次跨设备输入都要求两端各确认一次。
D4-4关键操作有设备门槛必须
一句话:承载不了后果的设备上,不直接完成不可逆操作。
适用具有不可逆外部影响或高影响后果的操作(删除、对外发送、支付、权限变更、发布)。
规则产品必须为该类操作定义最低设备能力门槛,门槛至少覆盖能否充分呈现操作对象与后果、能否可靠确认本人在场(D1-4)、当前情境是否允许用户投入必要注意力。不满足门槛的设备上禁止直接完成该类操作,应当代理到满足门槛的设备(D4-3)或延后至满足条件时。行驶中、运动中、锁屏及其他受限情境按同一门槛判定,不因设备本身能力充足而豁免。
边界条件本条不禁止在受限设备上发起或排队该类操作;禁止的是在无法呈现后果、无法可靠确认的条件下完成它。紧急场景(如求助、停止执行)的必要操作不适用本条门槛。"停止类控制通道始终可用"指其入口与受理不被普通的完成门槛关闭;远端是否真正送达与生效,按真实状态如实反馈——离线时呈现为"待送达/待核对"而不是"已停止"。本句不新增无授权的停止权。
设计应用把"发起—确认—完成"三步在设备之间拆开,而不是把三步都塞进能力最弱的那一端;受限情境下把操作转为待办而不是直接拒绝。
验证示例
- 用户侧:在行驶中的车机上尝试完成一次转账或删除,观察是否被拦下并给出可行路径。
- 实现侧:验证门槛判定覆盖全部该类操作;验证停止类控制不受门槛限制。
反例做不到——手表上一次误触即完成付款,屏幕上根本没显示金额与收款方;做过头——在用户自己的电脑上执行常规删除也要求切换到手机确认。
D4-5裁剪保留判断所需信息必须
一句话:小屏可以少显示,但不能少到用户没法作判断还让他确认。
适用在小屏、无屏或注意力受限设备上呈现需要用户判断的内容。
规则为适配设备而裁剪内容时,必须保留用户作出当前判断所必需的信息:操作对象的身份、关键数量与金额、不可逆性、以及与用户预期可能不符之处。无法在该设备上完整呈现判断所需信息时,禁止在该设备上索取用户的确认,应当按 D4-2 降级或按 D4-3 代理。摘要与截断必须可被识别为摘要,并提供获取完整内容的路径(可以在其他设备上)。
设计应用先确定"这一步用户凭什么作判断",再决定裁剪什么;金额、收件人、影响范围属于永不裁剪的项。
验证示例
- 用户侧:在手表上呈现一次需要确认的操作,让用户复述自己正在批准什么,比对其复述与实际内容。
- 实现侧:枚举各设备上索取确认的场景,检查判断所需信息是否完整呈现。
反例做不到——手表上只显示"确认这笔支付?",金额与收款方都在下一屏或根本没有;做过头——把完整合同全文塞进手表,用户滚动两百屏才看到确认按钮。
D4-6降级不减告知义务必须
一句话:降级减的是功能,不是必要的说明、确认和回执。
适用所有采用降级形态的设备与情境。
规则降级只减少功能与呈现细节,不减少必要的告知:操作的实际结果、失败与阻塞、不可逆性、以及控制动作的回执必须保留并可在获授权的入口查询;有可用交互通道时及时反馈,没有通道时保留待告知状态。表达可以采用语音、简短文本或可理解的触觉信号,但不得以单次震动替代无法辨认的结果含义。禁止以"这台设备屏幕太小"或"驾驶中不便打扰"为由省略必要回执或不告知失败。本条按三件事分别裁决:
- 事实保留:必要结果、失败与不可逆性在获授权的入口持续可查,这一项在任何情况下不得省略。
- 当前端的在线反馈:存在在线交互且通道可用时,在当前端及时给出可被理解的最短反馈。
- 主动补达:只使用用户允许、符合私密与情境约束的通道,并受 D5 的路由与去重约束——不得为满足本条而绕过用户已关闭的通道或另选设备推送。当前没有任何可用通道时,记录为"待告知/未确认送达",在后续取得授权通道时呈现;"已排队"不得表述为"已送达"。
安全关键告警另按其适用的专项规则处理,不由本条自行取得穿透资格。
设计应用为无屏与小屏设备预先定义必要告知的最短表达;把"稍后在手机上查看详情"作为补达而不是替代。
验证示例
- 用户侧:在音箱上发起一次会失败的操作,观察用户是否知道失败了、以及去哪里了解详情。
- 实现侧:枚举必要告知项,验证在线反馈、可查询事实、获准补达与无通道时的待告知状态;投递未确认不得标为已送达。
反例做不到——车机上语音下单失败,全程没有任何反馈,用户到家才发现没下成;做过头——每一次微小状态变化都用语音朗读一遍,驾驶中被持续打断。
3.5 D5 注意力跨端唯一
用户只有一份注意力,设备却有五台。同一条消息在手机、手表、电脑、平板和电视上各响一次,会让用户逐台消除重复提醒。本原则管辖打断在设备之间的分配:一件事有效打断几次、送到哪台、处理过了别处怎么消解、勿扰和驾驶状态跨不跨得过去、共享屏幕上显示到什么程度。
D5-1同一事件跨端去重必须
一句话:一件事只有效提醒一次,去重范围和时间窗明确。
适用同一账号或同一用户在多台设备上可能接收同一事件提醒的产品。
规则在产品可协调的设备范围内,同一事件的同一次提醒机会必须只分配一个有效打断目标;事件标识、提醒轮次、去重时间窗与协调范围必须可解析,其他设备只作静默呈现。任何配置不得取消该范围内的跨端去重,不得因经过不同设备或重复投递而把同一事件算成新事件。再次提醒或换端升级必须依据明确的次数、间隔及停止条件;穿透去重或勿扰另受 D5-5 约束。
产品必须定义提醒的业务有效期,过期事件禁止在设备重连后按新事件打断。投递服务已接受、设备已收到、实际已呈现与用户已处理必须区分,未知回执不得当成已送达或未送达。平台限制或网络分区使跨端协调不可用时,必须采用预定的单端保守路由或有限升级策略,并记录可能漏达或重复的边界;禁止退化为无差别全端广播,也不得声称能保证用户恰好感知一次。
边界条件本条约束产品可控制的提醒分配,不保证人的实际感知,也不承诺离线与跨生态条件下既绝不漏达又绝不重复。不同用户各自计算提醒;不同事件不应误合并。用户明确启用的有限升级不等于取消去重,每轮仍需去重并在已处理或过期后停止。
依据与参考FCM 消息生命周期明确接受投递不等于到达,且折叠针对同一注册令牌的待投递消息;传输层折叠不能代替产品跨端去重。Wear OS 桥接指南展示了平台内去重与消解能力,也明确其跨平台限制。
设计应用把去重放在服务端或统一的路由层,而不是让每台设备各自判断;定义清楚什么算"同一事件"——同一条消息的多次投递是同一事件,同一会话的多条消息通常不是。
验证示例
- 用户侧:让用户同时携带手机与手表、面前放着电脑,触发一条消息,数一数用户被打断了几次。
- 实现侧:验证去重的判定键与时间窗;在设备时钟偏差与离线补投条件下验证去重仍成立。
反例做不到——一条消息在四台设备上响四次,用户在会议中逐台静音;做过头——为了去重把提醒压到只在一台早已放在抽屉里的设备上响,用户始终收不到。
D5-2提醒路由基于真实在场应当
一句话:送到用户此刻可能在用的设备,不是全都响一遍。
适用具备多设备在场判定能力,且提醒具有时效性的产品。
规则提醒应当路由到用户此刻最可能接收的设备,路由依据应当是真实的在场与近期交互信号(D1-2),而不是设备的默认优先级或注册顺序。在场判定不可用时应当回退到用户显式指定的默认设备,禁止以在场判定不可用为由退化为全设备广播。路由结果应当可被用户覆盖:用户能指定某类提醒固定送往某台设备。
设计应用把"最近交互"作为主要信号,把"设备类型优先级"作为回退;对时效性弱的提醒不必路由,进入列表即可。
验证示例
- 用户侧:用户在电脑前工作时触发提醒,观察是否出现在电脑上而不是只在口袋里的手机上震动。
- 实现侧:验证路由输入为真实交互信号;验证信号缺失时回退到指定设备而非广播。
反例做不到——用户正在电脑前,提醒只送到手表,需要抬手才能看到;做过头——为了判断用户在哪台设备前,持续采集摄像头或麦克风信号。
D5-3已读与已处理跨端消解必须
一句话:一台处理完,其他设备的红点、横幅和待办跟着消。
适用在多台设备上呈现待处理项、未读标记或未完成提醒的产品。
规则用户在任一设备上读取或处理某一事项后,其他设备上对应的未读标记、角标、待办项与未消解的提醒必须相应更新;更新的延迟必须在用户可接受的范围内并有明确承诺(D3-6)。处理动作的跨端消解不得依赖用户在每台设备上重复操作。尚未消解的原因(离线、同步中)必须可被用户理解,不得让用户以为事项未被处理而重复处理一次;同一业务请求必须复用其身份并核对处理结果,禁止重复提交造成重复外部影响。
关闭横幅只消解对应提醒,已读只更新阅读状态,已处理必须依据业务结果;禁止因通知被划掉就把任务标为完成。提醒过期也不自动完成或取消业务任务。重连设备在补投前必须核对已读、已关闭、已处理与过期状态;离线缓存中的可执行按钮必须重新校验当前对象状态,避免处理已结束的请求。
设计应用把"已读"与"已处理"分开——看过不等于办完;对会产生外部影响的事项,消解必须以真实处理结果为准而不是以本地点击为准。
验证示例
- 用户侧:在手机上回复一条消息,观察手表与电脑上的未读提示多久消失。
- 实现侧:验证消解状态的同步路径与延迟;验证离线设备恢复连接后正确消解而非重新提醒。
反例做不到——手机上已回复的消息,手表上的红点留了一整天;做过头——每次消解都在其他设备上弹一条"已在别处处理"的提示。
D5-4情境状态跨端继承必须
一句话:勿扰、驾驶、会议、睡眠在一处设定,别处不得绕过。
适用提供勿扰或情境模式,且用户可能同时携带多台设备的产品。
规则用户设定的免打扰与情境状态必须在其名下参与该情境的设备之间生效,禁止以未在该设备上单独设置为由绕过。产品自身的提醒必须遵守当前生效的情境状态;确需穿透的事项按 D5-5 处理。情境状态的生效范围必须可被用户理解与调整(对所有设备生效,还是仅本设备),产品可以提供默认,但默认方向应当是保护用户不被打扰。
设计应用把情境状态当作用户级属性而不是设备级设置;对于产品无法读取系统级情境的平台,至少保证自身的跨设备提醒受产品内设定统一约束。
验证示例
- 用户侧:在手机上开启勿扰后触发提醒,观察手表、平板与电脑是否仍然发声。
- 实现侧:验证情境状态的同步与生效范围;验证穿透事项确在例外清单内。
反例做不到——手机开了勿扰,会议中手表照样震动;做过头——一台设备进入睡眠模式,导致用户在另一个时区的工作电脑上也收不到任何提醒。
D5-5例外路径显式有限应当
一句话:能穿透去重和勿扰的事项,范围写死、次数有限、可审计。
适用存在需要穿透去重或免打扰的紧急或时效性事项的产品。
规则可穿透去重(D5-1)与情境状态(D5-4)的事项应当以显式清单定义,清单应当尽量小、有频次上限、且穿透行为可被审计与复盘。禁止将营销、推荐、增长类提醒纳入例外清单。例外清单应当可被用户查看与调整;产品认为不宜由用户关闭的事项(如安全告警),应当说明理由并仍然接受频次上限。
设计应用把例外的判定标准写成产品级规则(后果的时效性与不可挽回性),而不是交给各业务方各自申请;定期复核清单,把用不上的移出去。
验证示例
- 用户侧:查看例外清单,让用户判断其中每一项是否值得在会议中打断自己。
- 实现侧:验证例外清单外的事项确实无法穿透;验证穿透次数受上限约束并被记录。
反例做不到——"重要通知"作为例外项,实际包含运营活动推送;做过头——把安全告警也一并纳入勿扰,账号异常登录时用户毫不知情。
D5-6共享设备不呈现私密提醒内容必须
一句话:客厅电视上弹的是有新消息,不是消息内容。
适用提醒可能出现在共享设备或旁观者可见位置的场景。
规则本条规范的是"通知预览"这一呈现动作的默认值与配置上限,与用户主动查看原文是两件事。在私密级别为共享或未知的设备上(D1-3),提醒内容必须按降低的可见级别呈现,至少不直接展开消息正文、验证码、金额、健康与其他敏感个人信息;用户可以主动提升该设备的呈现级别,但产品的默认方向必须是保护。
共享设备、未知私密级别的设备,以及正在投屏或录制的画面上,通知预览不得包含验证码原值——普通用户偏好不得放宽这一上限。用户在具备相应权限的可信私密界面上主动查看原始内容,是一次独立的查看动作,按其自身的权限与重验规则裁决,不受本条对预览的限制。**其他敏感类别的主动展开须定义可展开的对象、范围与有效期(另见 D2-6)。
锁定状态、投屏状态与录制状态属于同一类判定输入,其中任一成立时按更保守的级别呈现;"更保守"按各输入所允许的内容取交集裁决,不是在一条强度轴上取最小值——不能提供满足所有限制的筛选摘要时,退至"仅存在性"或"不呈现",不得给出一个可能保留被遮蔽字段的摘要。
依据与参考本条与 D1-3、D2-6 共用设备私密级别这一机制而规范对象不同:D1-3 规定级别如何成立,D2-6 规定迁移动作如何使用它,本条规定打断动作如何使用它。投屏与录屏是最容易被漏掉的输入——设备本身是私人手机,但此刻它的画面正在会议室大屏上。
设计应用把"有新消息"与"消息内容"设计成两个呈现级别而不是一个开关的开与关;投屏与录屏期间自动切到保守级别,并让用户可见这一变化。
验证示例
- 用户侧:投屏演示时收到一条私人消息与一条验证码,观察大屏上呈现了什么。
- 实现侧:验证投屏、录屏、外接显示等状态触发保守级别;验证通知预览中的验证码原值不受用户配置放宽;另验证私人设备上的主动查看仍可按其自身权限进行。用"私人/共享/未知 × 锁定/投屏/录制/普通 × 正文/金额/验证码"逐格记录默认内容、可否主动展开与最终结果;摘要中出现应被遮蔽的字段即为失败;撤销展开或新增共享输出后须立即重新裁决。
反例做不到——会议投屏中,私人消息全文弹在大屏正中;做过头——用户自己的私人手机在锁屏时也一律只显示"你有一条通知",无法配置。
3.6 D6 一致性有边界
跨设备设计里常见的误解是把一致性理解成“长得一样”,于是把手表做成缩小的手机、把电视做成放大的网页。需要一致的是用户的心智模型——同一个对象叫同一个名字、同一个操作产生同一种后果;靶区、字号、层级深度与信息密度则应按实际使用条件适配。本原则管表达的边界,功能能否成立见 D4。
D6-1一致的是语义不是像素必须
一句话:定义哪些语义固定、哪些按设备适配,不强求处处相同或不同。
适用在两种及以上设备类别上提供界面的产品。
规则产品必须明确划定跨设备锁定项与按设备解析项两个集合,并使实现可解析到该划分。锁定项至少包含:对象与操作的术语、状态与语义的表达(成功、失败、进行中、不可逆)、操作后果的表述、以及品牌识别要素;锁定项禁止按设备类别改变含义。解析项至少包含:字号、行高、间距、触控靶区、层级深度、信息密度与动效时长;必须结合当前设备与情境验证,不得未经验证直接套用另一端的固定值。不同设备解析后可以得到相同值,不得为了体现差异而强行改变。划分本身必须有单一来源,不由各端各自决定。
依据与参考DTCG 的相关模块属于社区组报告,不是 W3C Recommendation;Format Module定义交换格式与类型,Resolver Module提供多情境解析机制。本规范补充的是跨设备行为及约束词汇,不宣称既有标准不能表达时长或情境差异。具体表达见配套 Design Token.md。
设计应用把划分写在一处并被各端引用;新增设备类别时先回答"它落在哪些解析项的哪一档",而不是新开一套界面规范。
验证示例
- 用户侧:让用户在手机与电视上完成同一操作,观察其对操作后果的预期是否一致。
- 实现侧:检查锁定项来自同一来源,解析项具有各端验证依据;相同值可以通过,未经验证的跨端硬套不能通过。
反例做不到——同一个动作在手机上叫"归档"、在桌面上叫"移出收件箱",用户以为是两件事;做过头——为了一致把电视端的触控靶区尺寸也设成手机的值,遥控焦点几乎选不中。
D6-2靶区与可读性按设备类解析必须
一句话:字号、靶区、对比度按观看距离和输入方式解析,不跨设备沿用。
适用所有提供可视界面的设备类别。
规则可读性与可操作性的关键值(字号、行高、最小触达区域、对比度、焦点可见性)必须按设备类别及当前情境解析,输入至少包含典型观看距离与主输入模态;未经验证不得把某一类别的值直接沿用到另一类别。解析结果必须满足各目标平台适用的无障碍要求,按设备解析不得成为低于无障碍下限的理由;用户的系统级字号、对比度与动效偏好在各设备上分别生效,不得因跨设备统一而被忽略。
边界条件本条不规定具体数值,也不替代各平台的无障碍规范与人因标准;它要求的是解析机制的存在与下限的守住。
设计应用把设备类别做成少量枚举(手表、手机、平板、桌面、电视、车机、头显、无屏)并为每一类给出解析结果;遥控与旋钮操作的可达性由焦点顺序而不是靶区尺寸解决。
验证示例
- 用户侧:在典型使用距离上(电视三米、车机臂展、手表抬腕)让目标用户读取关键信息与完成选择。
- 实现侧:检查关键值确由设备类解析而来;检查系统级无障碍偏好在每一端都生效。
反例做不到——把网页端的正文字号原样搬到电视,三米外无法阅读;做过头——为了保证可读性把手表上的每屏内容压到只剩一行,用户要翻十屏才看完一条消息。
D6-3输入模态改变路径不改变可达应当
一句话:语音、遥控、旋钮下路径可以不同,但能做的事不应当凭空消失。
适用同一产品在不同主输入模态的设备上提供的功能。
规则不同输入模态下的操作路径应当各自适配该模态(语音用意图表达、遥控用焦点导航、旋钮用有限层级、触控用直接操作),路径可以不同、步数可以不同。在设备能力允许的前提下,同一能力不得仅因输入模态不同而无法到达;确因能力不足而不可达的,按 D4-2 定义降级形态并告知,不得静默地在某一模态下隐藏功能。多模态并存的设备上,各模态应当可以互相接续,用户中途切换模态不必从头开始。
迁移或切换模态后,应当恢复到目标设备上与任务进度相符的焦点及阅读位置,保留目标端的辅助技术偏好;不得仅以动画或屏幕坐标提示承接成功。状态变化与控制入口必须能被目标平台支持的辅助技术识别。扫码、拖拽、靠近、语音等入口应当有适用的替代路径;目标设备不在手边或用户无法使用该模态时,按 D4-2 保留继续或恢复路径,不反复要求同一种失败动作。
依据与参考WCAG 2.2的焦点顺序(2.4.3)与状态消息(4.1.3)是 Web 内容的验证依据;跨端焦点接续是本规范据此提出的设计应用,并非 WCAG 直接规定的跨设备协议。
认证接续还应提供可使用的替代路径:二维码不可读时可从可信入口输入关联码;需输入密码或验证码时支持用户控制的粘贴、系统填充或等效辅助方式。相关依据为 WCAG 可访问认证说明;它不要求将凭据透露给另一设备。
设计应用为每种模态设计其原生路径而不是移植——语音不做"读菜单让用户选第几项",遥控不做需要精确指点的拖拽。
验证示例
- 用户侧:用语音、遥控和触控分别完成同一任务,比较能否完成以及各自的步数。
- 实现侧:枚举功能与模态的组合,检查不可达的组合是否都有明确的降级定义。
反例做不到——车机语音只能导航和放歌,其他功能必须触屏,行驶中无法使用;做过头——为了模态齐备给语音也做了一套逐级朗读的树形菜单,用户听完三层还没选中。
D6-4层级与密度适配注意力预算应当
一句话:车机和手表上给几层、放多少,按用户能分出的注意力定。
适用用户注意力不完整或使用时长受限的设备(车机、手表、头显、大屏远距离操作)。
规则信息层级深度与单屏信息密度应当按该设备上用户可分配的注意力与典型单次使用时长解析,而不是按屏幕能容纳多少内容解析。注意力受限设备上的主要任务应当在有限的层级与交互步数内完成;驾驶等安全相关情境下的界面设计不得仅以本规范为依据,必须同时满足适用的行业人因标准与法规要求(本规范不替代此类评估)。
边界条件本条不规定具体的层数或步数上限;此类上限在安全相关领域由专门标准规定,本条要求的是把注意力预算作为解析输入而不是事后检查。
设计应用为注意力受限设备定义主任务清单并只保留它们;把"能放下"和"该放下"分开评估。
验证示例
- 用户侧:在模拟受限情境下(双手占用、间歇注视)让用户完成主要任务,记录中断次数与完成率。
- 实现侧:检查注意力受限设备的界面是否由专门解析产生,而非从大屏界面裁剪而来。
反例做不到——车机把手机端五层菜单原样搬来,用户在行驶中逐层点选;做过头——手表上每屏只放一个字,简单查询要滑动二十次。
D6-5同一对象跨设备可识别应当
一句话:同一个任务在两台设备上叫同一个名字,用户认得出是同一件事。
适用同一对象(任务、文件、会话、订单)在多台设备上被呈现的产品。
规则同一对象在不同设备上应当具备一致的名称、标识与关键状态表述,使用户能够确认这是同一件事;排序、分组与呈现形态可以按设备不同,但对象的身份表达不应当改变。跨设备接续时目标设备上呈现的对象应当可被用户与源设备上的对象对应起来(承接 D2-3 的承接点要求)。
设计应用对象命名以用户可见的名称为准而不是内部标识;避免同一对象在一端显示为文件名、在另一端显示为标题的第一行。
验证示例
- 用户侧:在两台设备上并排展示对象列表,让用户指出哪些是同一个。
- 实现侧:检查跨端呈现的名称与标识来自同一字段。
反例做不到——手机上的"周会纪要"在电脑上显示为"未命名文档 (3)";做过头——为了标识统一,在所有设备上都显示完整的内部编号。
D6-6平台惯例优先于内部统一应当
一句话:和宿主平台的返回、通知、分享惯例冲突时,让给平台。
适用在多个宿主平台上分发的产品。
规则产品内部的一致性与宿主平台的系统级交互惯例(返回与导航手势、通知呈现与管理、分享与文本选择入口、系统级设置的归属)冲突时,应当遵从平台惯例;不得为了跨平台统一而拦截或改写平台的系统级控制通道,包括返回、停止、关闭与系统通知设置。让位于平台惯例的项应当被显式记录,属于 D6-1 中的解析项而不是锁定项。
边界条件本条不要求在每个平台上重做界面,也不要求放弃品牌识别;它约束的是系统级交互惯例这一有限集合。
设计应用把"让位清单"写进产品级规范并逐平台维护;产品自有的返回逻辑与平台返回手势保持行为一致而不是各行其是。
验证示例
- 用户侧:在各平台上用系统惯例操作(侧滑返回、系统返回键、通知长按管理),观察是否得到该平台用户预期的结果。
- 实现侧:检查让位清单的实现覆盖各平台;检查未拦截系统级控制通道。
反例做不到——为了跨端统一自绘返回栈,安卓上的系统返回键直接退出应用;做过头——为迎合每个平台的惯例把核心信息架构也改成三套,用户换设备后完全找不到功能。
4. 术语和定义
| 术语 | 定义 |
|---|---|
| 设备 | 用户可用于与产品交互的独立终端,具备可解析的能力维度与私密级别。 |
| 设备类别 | 用于解析呈现与能力的少量枚举(手表、手机、平板、桌面、电视、车机、头显、无屏等),与具体型号无关。 |
| 能力维度 | 决定任务在该设备上能否成立的可解析属性:主输入模态、屏幕类别、是否可私密显示、可持续注意程度、是否可后台执行、是否可离线写入等。 |
| 私密级别 | 设备在旁观者可见性上的属性,至少区分私人与共享;未知按共享处理。 |
| 在场 | 设备当前可承接交互的判定结果,由连接、近场信号、近期交互或用户显式选择产生,有明确有效期。 |
| 迁移 | 任务、内容或控制权在设备之间的转移动作,具有移动、复制、接管、镜像四类语义之一。 |
| 承接点 | 迁移后目标端的任务进度与语义位置,绑定对象、主体、内容修订标识及必要资源,不限于滚动坐标。 |
| 真相源 | 某类状态的权威模型,可以是单一来源,也可以是多副本的确定合并规则;须有内容修订标识与确认依据。 |
| 本机保存 / 同步确认 / 业务完成 | 本机持久化成立 / 在声明设备或服务范围内确认内容收敛 / 外部业务动作真实成功,三者不能互相替代。 |
| 乐观呈现 | 在收敛完成前于本地立即呈现的状态,须与已确认状态可区分。 |
| 收敛 | 多端状态达成一致的过程与结果。 |
| 降级 | 能力不足时任务改为受限形态继续成立的方式,区别于不可用。 |
| 代理 | 把某一步骤的输入或输出转交给具备相应能力的其他设备完成。 |
| 有效打断 | 会主动争夺用户注意力的呈现(声音、震动、横幅、语音播报),区别于静默呈现。 |
| 锁定项 / 解析项 | 跨设备必须保持一致的表达要素 / 必须按设备类别解析的表达要素。 |
| 设备组 | 为一次跨设备协同而组成的设备集合,具有存续期,结束不等于任务结束。 |
| 分工协同 | 多设备同时承担同一任务的不同输入、输出、执行或控制角色,不必发生任务迁移。 |
| 控制权 | 某主体在指定对象及期限内发出有效控制命令的资格;设备组成员资格不自动授予全部控制权。 |
| 提醒轮次 / 业务有效期 | 对同一事件按策略分配的一次提醒机会 / 该事件仍有必要主动提醒的期间;去重窗口到期不自动产生新轮次。 |
| 任务 | 有目标、约束、进度与成果的一项工作;关闭界面、断开设备或结束设备组不自动完成或取消任务。 |
| 工作状态 / 恢复点 | 可可靠读取的目标、进度、已确认决定、草稿与依赖 / 足以恢复某一步工作的状态记录;界面截图不自动构成恢复点。 |
| 请求标识 / 幂等键 | 标识一次逻辑操作的身份 / 使该操作在重试、重复投递与多端确认时不重复生效的机制输入;保存范围须覆盖允许的重试及迟到窗口。 |
| 结果未知 | 尚无足够证据判断操作成功或失败;不是失败的别名,也不产生重新执行的授权。 |
| 确认事实 | 带对象、主体、来源、观察时点与适用范围的运行证据;超过有效期或出现反证后不再支持原承诺。 |
附录 A:故障注入验证清单
按原则给出可执行的故障注入项。每项验证的是规则在失败条件下是否仍然成立——通过不代表符合全部要求,不通过即存在明确缺口。
D1 设备与信任
- 目标设备断电或断网后,源设备上的可用状态在多长时间内变化;期间用户是否会误选。
- 移除一台设备后,该设备是否仍能拉取新内容、承接迁移或使用既有令牌。
- 向未知私密级别的新设备投送内容,默认呈现级别是否为共享。
- 在共享设备上由非本人尝试支付、对外发送与权限变更,是否被重新确认拦下。
- 在设备广播名称中植入指令性文本,验证其只作为显示字符串处理。
- 在同一网络下用未授权设备发起控制,验证被独立授权要求拦下。
D2 迁移
- 迁移过程中断开目标设备,验证工作状态与恢复入口仍保留,结果未知时不重复产生外部影响。
- 迁移结果未知时,验证系统先核对目标状态而非单方面终止源任务。
- 忽略自动迁移提示,验证提示到期失效且不产生迁移。
- 向共享设备迁移含私密内容的任务,验证可见范围按目标设备重新裁决且在首帧即生效。
- 源设备存在未提交编辑时发起迁移,验证内容被保留或明确告知去向。
D3 状态
- 断网编辑后切换设备,验证“已存本机”“已同步到账号”“目标端可用”各自有证据,不相互冒充。
- 在两台设备上并发修改同一对象后恢复连接,验证任一方已认可的输入未被静默丢弃、被覆盖的内容可取回。
- 制造持续同步失败,验证在合理时间内升级为用户可见提示而非无限静默重试。
- 用户正在输入时推送远端更新,验证输入位置与焦点未被破坏、变更可回退。
- 离线完成超出允许范围的操作,验证在用户投入之前被拦下且输入可取回。
D4 能力与降级
- 为平板接入键盘、展开折叠屏,验证能力被重新解析而非仅在启动时读取。
- 在能力最弱的设备上发起每一项主要任务,验证不存在未定义的静默失败。
- 在行驶中的车机、运动中的手表上尝试不可逆操作,验证被门槛拦下并给出可行路径。
- 在小屏设备上索取确认,让用户复述正在批准的内容,验证判断所需信息完整。
- 在无屏设备上触发失败,验证在线最短反馈、详情可查及获准补达;无可用通道时保留待告知,不绕过通知关闭。
D5 注意力
- 用户同时持有三台以上设备时触发同一事件,统计有效打断次数。
- 在一台设备上处理事项,验证其他设备的未读与待办在承诺时间内消解。
- 一台设备开启勿扰后触发提醒,验证其他设备不发声。
- 遍历例外清单,验证清单外事项无法穿透去重与勿扰、清单内穿透受频次上限约束。
- 在投屏与录屏状态下接收私人消息与验证码,验证呈现级别自动收敛。
D6 表达
- 检查锁定项来自单一来源,解析项经过各设备与情境验证;相同数值可以成立,未经验证的照搬不成立。
- 在典型使用距离上进行可读性与可选中性测试;验证系统级无障碍偏好在每一端生效。
- 用各输入模态分别完成同一任务,记录不可达的组合是否都有明确降级定义。
- 在各宿主平台上使用系统级手势与通知管理,验证未被产品拦截或改写。
组合边界回归
- 离线设备被解绑后继续使用旧凭据,再恢复联网;验证撤权检查点、待清除状态与实际清除回执分别成立(D1-5)。
- 同一终端退出个人账号并进入工作账号,验证旧草稿、缓存与排队命令没有提交到新账号(D1-5、D2-6)。
- 广播同名设备、展示过期配对码,验证名称不能冒充可信身份、过期请求不能获准;发现广播不泄露任务正文(D1-6)。
- 目标仅接收数据但尚未恢复页面或缺少附件,验证未宣告接续成功;不兼容的应用有明确恢复路径(D2-3、D2-5、D4-1)。
- 已忽略的近场提示因信号抖动再次触发,验证冷却与既有自动授权范围,未响应不成为授权(D2-4)。
- 两台设备同时申请独占控制,主控随后断网,旧命令延迟到达;验证不会产生两个独占主控,用户知道如何接管(D2-7)。
- 分别退出控制设备、结束远端呈现、解散组与取消任务,验证后果不混淆,离组临时权限失效(D2-7)。
- 采用多副本离线编辑,服务端已经收到但目标端仍离线,验证“已同步”的范围没有暗示目标已更新(D3-1、D3-2)。
- 一端删除对象,另一端离线编辑后重连,验证不静默复活原对象;可保留的草稿有取回路径(D3-4)。
- 排队命令过期、授权撤回或对象关键字段改变后重连,验证不按旧条件自动执行(D3-4)。
- 输入法组合输入尚未结束时到达非冲突与冲突更新,验证安全合并不逐次询问、冲突不丢内容,焦点和选区正确映射(D3-5)。
- 手机确认前,电脑修改请求对象,或取消与批准交错到达;验证旧批准不生效,重复批准不重复执行(D4-3)。
- 同一事件经系统桥接和应用推送到达,回执丢失后尝试改投;验证每轮去重、升级有界、过期不补响(D5-1)。
- 只划掉通知而未处理任务,再从离线设备打开旧操作按钮,验证通知关闭不等于任务完成,操作先核对当前状态(D5-3)。
- 使用读屏、键盘或开关控制完成发现、接续与返回;布局改变或扫码不可用时,验证任务位置与替代路径仍可达(D6-2、D6-3)。
- 用转发的配对码和同名设备发起非预期授权,验证来源、用途与授权后果可辨认,拒绝与取消可达,已使用代码不会重复授予资格(D1-6、D4-3)。
- 承接成功回执丢失后源端取消,验证显示待核对或返回操作,不假称原迁移从未发生,不恢复两个独占控制端(D2-5、D2-7)。
- 私密耳机切为外放,或任务中途新增共享显示器,验证敏感输出在下一次输出前被拦截或降级(D2-6、D5-6)。
- 禁用摄像头并启用读屏,通过可信入口与辅助输入完成认证;不要求记忆、手抄或由他人代输秘密(D1-4、D6-3)。
- 在期限 T 前、到达 T、超过 T 及设备时钟偏移时接收回执,验证到期按失效处理、读取与重连不续期,未知不冒充失败(D1-2、D2-4、D3-4、D4-3)。
上述项目应组合覆盖单人顺序接续、多人同时协同、共享屏幕、源端执行与异端确认四类真实任务;记录用户是否认得出对象、能否继续、能否纠错,以及系统据何回执判定。故障清单不替代完整用户旅程验证。
分类检验:可随机抽取产品中的 10 条具体要求,由三名以上未参与撰写的评审者独立判断原则归属;分歧超过三成时,重新检查原则切分或规则粒度。人数与阈值是本规范建议的内部诊断办法,未经外部实证校准,不作为行业标准或单独的上线硬门槛。
附录 B:论据边界与来源类型
本规范使用以下来源类型,来源、阅读范围与适用边界见 reference.md。文件自身的规范地位不等于对本规范全部体验主张的证明力,不将不同类型简单按强弱排序:
| 类型 | 说明 | 在本规范中的作用 |
|---|---|---|
| 正式标准与推荐规范 | 如 WCAG 2.2 与 RFC 8628;适用对象和符合性要求各有范围 | 在适用范围内引用,本规范不替代其判定;Web 数值不自动成为所有设备的统一下限 |
| 标准草案与社区报告 | 如 Presentation API 候选推荐草案与 DTCG 稳定社区组报告 | 提供模型与互换机制参照,不能称为已经完成的 W3C Recommendation |
| 平台实现指南 | 各生态发布的多设备能力与适配指南 | 作为实现参考与既有实践证据,说明某类机制在真实产品中已被采用;单一生态的做法不构成跨生态的收敛证据 |
| 学术研究与分类法 | 同行评议的跨设备交互研究与文献综述 | 作为问题空间的划分依据与失败模式来源;分类法提供坐标系,不直接产生义务条款 |
| 行业实践与失败记录 | 公开的产品行为、事故复盘与实践总结 | 作为"做不到"与"做过头"两类反例的来源;单一来源的实践作参考而非收敛证据 |
本规范尚未收敛的部分,在此显式声明,不以条款语气掩盖:
- D5-1 的去重范围与时间窗、D3-6 的收敛延迟、D6-4 的层级与密度上限:本规范只要求"有明确定义",不给出数值。这些数值在不同产品类别下差异很大,且缺少可直接引用的跨领域标准。
- D4-4 的设备能力门槛:门槛的具体构成(哪些能力、达到什么程度)目前只有各产品的分散实践,未见收敛的行业共识。
- D1-3 的私密级别枚举:本规范采用私人/共享二分并要求未知按共享处理;是否需要第三档(如家庭共享)随产品形态而定,留待真实项目验证。
- D2 与 D3 的边界、D4 与 D6 的边界:见第 1 章的明示。这两处若在实践中反复出现归属争议,应当调整原则的切分。
- D3 的用户理解证据:本地优先研究补足架构与失败模式依据,但未验证本规范的状态命名能被目标用户正确理解。
- 空间计算与特殊领域:尚未系统检视空间锚定、坐标重定位与领域专项安全要求;设备类别列入头显不等于完成该领域覆盖。
配套的 Token 词汇表见 Design Token.md;本规范不通过 Token 字典产生新的义务,字典也不替代本规范。
附录 C:完整场景与验收记录
下表把规则连成用户旅程,示例不是指定实现。每个项目仍需填写真实设备、参与者、允许保留的数据范围和验收阈值。
| 场景与成果 | 正常旅程与成立证据 | 故障旅程与恢复 | 做过头的检查 | 主要规则 / Token |
|---|---|---|---|---|
| 手机草拟文档,在电脑继续修改 | 选择电脑 → 检查身份、能力与附件 → 源端保存草稿和段落锚点 → 目标恢复 → 目标确认可编辑 → 手机只读并显示去向 | 目标仅收到正文但附件缺失时,显示受限状态;源端保留恢复点。确认丢失先核对,不能重复建文档 | 不为无关历史附件等待全量同步;安全合并不逐字询问 | D2-1~D2-5、D3-1~D3-5;handoff.*、sync.* |
| 演讲者私密看备注,大屏持续展示 | 选择输出屏 → 仅共享幻灯片 → 私人端控制翻页 → 每次命令按有效控制资格裁决 | 主控失联后禁止无依据接管;屏幕保留允许展示的内容。新主控取得资格后旧命令被拒绝;退出手机与结束大屏分别操作 | 不让每次翻页都请求批准;不把备注镜像到共享屏 | D1-6、D2-6、D2-7;device.role、session.* |
| 在共享电视上登录媒体服务 | 电视发起限定授权 → 手机可信入口核对电视、账号、用途与有效期 → 用户认证并授权 → 电视只取得限定结果 | 陌生请求可拒绝;扫码不可用有替代;到期需重新发起。电视回执未知时查询原请求,手机不复制密码给电视 | 不把登录批准变成购买或支付批准;不禁用用户控制的密码管理器 | D1-4~D1-6、D4-3、D6-3;trust.*、degrade.proxy.* |
| 手机、手表、电脑协调一条待处理提醒 | 同一事件分配一个打断目标 → 其他端静默 → 业务处理确认 → 同步消解 | 目标回执未知按预定策略静默保留或有限升级;手表离线重连先核对,已处理或过期不再响 | 不为消解再发一轮通知;不因追求不重复而无限等候失联设备 | D5-1~D5-6;attention.* |
每项验收记录什么
| 记录 | 可检验的口径 |
|---|---|
| 体验收益 | 对照单设备流程,记录总完成时间、重复输入、重新寻找位置、意外切端、纠错与打断次数;同时报告失败与放弃,不只看成功样本平均值 |
| 状态理解 | 在关键节点让用户预测“哪台可编辑、保存在哪里、谁控制、是否已完成”,比对真实行为;不能仅问“是否理解” |
| 时效 | 起点、终点、离线是否计入、所需资源、阈值来源、样本与失败分布;T 的值由项目验证,不借用推送平台默认寿命 |
| 机制证据 | 请求及对象身份、来源回执、控制生效点、恢复位置、拒绝原因;脱敏后仍能追踪同一逻辑操作 |
| 判定 | 通过/不通过/不适用/未验证;不适用写理由,未验证不计入通过 |
错误主体获权、敏感内容出现在禁止的受众中、用户工作丢失、重复外部影响、未知冒充完成,均不可用平均完成率抵消。体验阈值由项目预先声明;本附录提供验证方法,不宣称已经完成用户研究或设备实测。
实施验收场景
以下场景把已有条款转成可复核的验收输入,不另设通用性能阈值。按产品适用能力选取,补充真实设备、用户、输入序列和证据;不适用记录原因,未执行不得记为通过。
| 条款 | 测试输入与异常 | 预期行为与失败判据 |
|---|---|---|
| D2-7 | 目标接管后源设备离线连接恢复并重放缓存命令。 | 旧控制范围不恢复,显示与执行来源一致。 |
| D2-5 | 目标收到任务但无法读取必需资源。 | 不宣称可继续,源端保留恢复路径。 |
| D2-6 | 私密内容迁移到共享屏幕。 | 重新裁决可见范围;批准迁移不等于批准公开。 |
每个场景分别核对配置的有效值、执行记录与用户可理解的结果。保留版本、目标、事件时点、失败范围和恢复结果;外部结果未知不填作成功或失败。
使用说明
本字典记录可复用的跨设备行为决策:任务怎么移动、状态以谁为准、能力不足时如何继续、在哪台设备上提醒。颜色、字号、间距等值由产品视觉资源提供,xd.consistency 记录其跨端解析约束。先确定用户旅程和成功条件,再选择适用字段;字段数量不等于用户设置数量。
本字典配套《跨设备交互设计规范》使用,承接其适用要求;字典不替代整套规范,也不构成安全、隐私或合规证明。字段名一律以 xd. 为前缀。规则编号 D1–D6 均指本目录内的设计规范。
字段表示可复用的设计决策,不存放设备 ID、真实凭据、运行回执或当前主控等实例数据;后者由运行模型按字段所定义的策略提供。配置只能选择已有机制能够兑现的行为,不能靠填值宣称能力成立。
八类速览
| 类别 | 前缀 | 必选 | 可选 | 合计 | 负责什么 |
|---|---|---|---|---|---|
| 设备 | xd.device | 3 | 5 | 8 | 这台设备是谁的、在不在、能做什么 |
| 信任 | xd.trust | 2 | 4 | 6 | 这台设备上能看到什么、前面是不是本人 |
| 迁移 | xd.handoff | 3 | 6 | 9 | 任务怎么从一台走到另一台 |
| 同步 | xd.sync | 4 | 5 | 9 | 状态以谁为准、怎么收敛、冲突怎么裁决 |
| 降级 | xd.degrade | 2 | 4 | 6 | 能力不足时任务变成什么 |
| 注意力 | xd.attention | 3 | 7 | 10 | 在哪台提醒、提醒几次、处理后怎么消解 |
| 协同组 | xd.session | 2 | 7 | 9 | 一次跨设备协同怎么组成、谁控制、怎么结束 |
| 一致性 | xd.consistency | 3 | 3 | 6 | 哪些表达锁定、哪些按设备解析 |
必选与可选
| 级别 | 含义 | 配置方式 |
|---|---|---|
| 必选 | 适用的产品或设备类别必须明确的基础决策。 | 可以继承产品预设,也可以用合法的关闭、空范围或单设备取值表达限制;不要求用户逐项填写。 |
| 可选 | 仅在特定能力或差异化需求下采用的参数。 | 无对应能力时不配置;启用能力后,必要依赖必须有明确值或可执行的继承规则(见第九节)。 |
省略与异常的统一读法(六种情况互不代替):省略先解析该字段已声明的继承;无继承而适用条件成立,即为配置不完整,该能力不得被宣称成立;条件不适用时记录原因与判断依据(例如无屏设备上的视觉解析项);空集合只有在该字段明示其"关闭"含义时才表示关闭;未知是运行事实不足,按该字段声明的退路处理,不当作确定值;非法枚举、引用不存在或循环继承是配置错误,须报出并停用受影响能力,不得静默当作未知设备或回落到最宽松档。
设备、设备组、迁移、任务与状态的边界
| 对象 | 负责什么 | 关键边界 |
|---|---|---|
| 设备 | 一个可交互终端的身份、能力、在场与私密级别。 | 可以承载任务执行或仅作交互入口;设备离线不等于任务结束,设备移除不等于任务取消。 |
| 设备组 | 为一次跨设备协同组成的设备集合及其控制权归属。 | 有存续期;组解散不等于任务结束。依赖本组取得的临时权限随离组失效,独立于本组的既有授权另行管理。 |
| 迁移 | 本字典对任务、内容、交互主场或控制关系跨设备转移的统称,有语义、承接点与终态。 | 是一个有结果的动作(成功/失败/未知),不是一次数据同步;迁移失败不等于任务失败。四种语义各自改变的东西不同:移动改变主要交互入口,复制改变内容持有,接管改变控制权,镜像只改变呈现位置;执行位置是独立的一维,由执行角色表达,不由迁移语义决定。 |
| 任务 | 一项工作的目标、约束、进度与成果。 | 任务的目标、进度、已确认决定与恢复点可靠保存;关闭设备界面或解散设备组不自动完成或取消任务。 |
| 状态 | 可在多端之间共享的可变数据及其收敛结果。 | 本地乐观值不是已确认状态;界面呈现的一致不等于已收敛。 |
同一任务可以由设备 A 发起、设备 B 承接、设备 C 确认。各设备先按自身私密级别与授权裁决可见范围和权限,不沿用发起设备的裁决结果;恢复与接续读取可靠工作状态,不靠重读界面或重新推测。
xd.session 表达协同设备组,不表示一次界面打开或一次对话;设备组与任务分别管理生命周期。持续分工协同采用 device.role 与 session.*,不强行配置一次性的 handoff.*。
"这台设备在场"与"这台设备获得授权"是两件事,任何在场信号都不产生授权(对应规范 D1-6)。"用户在这台设备上"与"用户本人在这台设备前"也是两件事(对应 D1-4)。
字段读取约定
每节前缀与表中的字段拼接为完整名称,例如 xd.handoff 与 source.on_transfer 组成 xd.handoff.source.on_transfer。八类统一使用 级别、设计决定、字段、类型与合法取值、适用条件与作用 五列。
时长带单位,距离带单位;范围引用可解析到明确的设备、设备组或数据类。集合不默认全选。设备类别引用 xd.consistency.device_class 的枚举,不各自新造。多个硬限制同时生效时取共同允许的范围,不按"后配置覆盖前配置"放宽保护;设备级配置不得放宽用户级或账号级的保护设定。
未知设备、未知能力、未知私密级别一律按最保守的一档解析,不按最宽松的一档解析。
值格式与解析纪律
本 Markdown 是行为决策字典,不是可直接导入的 DTCG 文件。DTCG Format提供值与引用的交换格式,Resolver提供情境解析机制;二者均为社区组报告。业务授权、控制权和去重条件仍需产品实现,普通 token 工具不会自动执行这些约束。
| 值形状 | 本字典的读法 |
|---|---|
| 枚举 / 集合 | 枚举选一个合法值;集合去重且不默认全选。只有明示允许的空集合才表示关闭 |
| 时长 | 可写为 {value: 30, unit: s},单位只用 ms、s、min、h、d 并显式换算;示例数值不构成默认。正时长必须大于零 |
| 映射 / 复合决定 | 每项明确条件、结果与未命中退路;同一输入不得解析出互斥动作。表内列出的组成项缺失,视为配置不完整 |
| 策略引用 | 可追溯到具体规则、适用范围、决定者、值来源及验证依据;只有标题或“继承默认”不足以解析 |
| 运行事实 | 设备 ID、当前主控、认证结果、实际承接位置、请求回执与事件时间另行记录,不可成为跨任务复用的预设常量 |
解析顺序:确定能力是否适用 → 展开继承并检查类型与引用 → 校验联动依赖 → 读取仍有效的运行事实 → 对硬限制求共同允许范围 → 在允许范围内应用本次选择、用户偏好和产品默认 → 输出实际行为、原因与退路。普通偏好按“本次明确选择优先于用户偏好,用户偏好优先于产品默认”;均不得放宽组织限制、平台限制或固定底线。可见内容按类别求交集,时效采用所有适用限制中最早到期者;不能将所有限制简化为一个数字大小比较。
时间统一语义:在到期时刻即失效;读取缓存、重复投递、页面重开与断线重连不重置计时。各端保留同一事件起点或可信截止时刻,不从各自收到消息时重新计时;本地短时计时避免依赖可跳变的墙上时钟,跨端裁决依赖可核验的时间依据。时钟误差无法保证有效性时,待核对且暂停受影响授权动作;不把时钟不确定解释为延长授权。保留期表示最短恢复承诺,不表示获准保留超出隐私删除要求的数据。
禁用范围:非法配置只停用受影响的可选能力,并说明原因;不清空已有工作。与权限、可见性或关键操作相关的配置无法解析时,禁止该受影响动作。未知事实可以落入声明的保守退路;非法枚举或不存在的引用不能伪装成未知。
一、设备:这台设备是谁的、在不在、能做什么
前缀:xd.device
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 设备角色 | role | 本字段保存的是角色定义与分配规则(可用角色:主控/承接/输入/输出/执行/通知;一台设备可同时承担多个角色)。某次任务中各设备的实际角色分配是运行事实,另行记录并带来源,不写进本字典。随任务解析,不是设备固定属性。 | 描述分工,角色不代表授权(D2-7)。 |
| 必选 | 能力声明来源 | capability.source | 枚举:设备自述/平台查询/产品预设映射。须可解析到来源与有效性依据。禁止以型号或屏幕尺寸作为唯一判定依据。 | 决定能力从哪里来;来源不可用时按最低能力假定(对应 D4-1)。 |
| 必选 | 在场判定信号 | presence.signal | 集合:连接状态/近场信号/近期交互/用户显式选择。至少一项;须可解析到有效期。 | 决定"这台设备现在可用"这一结论的依据;不具备承接条件的设备不得呈现为可选目标。 |
| 可选 | 能力维度 | capability.dimensions | 集合:主输入模态/屏幕类别/可私密显示/可持续注意程度/可后台执行/可离线写入。运行中可变化的维度须可重新解析,不只在启动时读取一次。 | 需要按能力而非按设备分发形态时配置;接入键盘、展开折叠屏等变化须触发重新解析。 |
| 可选 | 承接兼容条件 | compatibility.requirements | 条件集合:应用能力/数据格式兼容性/必要资源/后台运行条件。仅声明会影响本任务的条件;条件不满足时走 xd.degrade.on_capability_gap,不把“已连接”当作兼容。 | 涉及兼容性或依赖本机资源接续时明确(D2-3、D4-1)。 |
| 可选 | 在场有效期 | presence.ttl | 正时长(单位明确);自形成该在场结论的最后一次有效观测起算;展示缓存的读取与用户查看不续期;出现失联等明确反证时提前失效。超过后在场结论转为未知或不可用,不得沿用历史状态。 | 使用探测成本高或非实时的在场信号时配置。 |
| 可选 | 设备发现范围 | discovery.scope | 集合:同账号/同局域网/近场/显式配对。仅作为发现与候选排序依据,不作为授权依据。 | 提供设备发现能力时配置;发现范围放宽不放宽授权。 |
| 可选 | 移除后处置 | unbind.on_remove | 处置集合及生效条件:撤回令牌/请求清除本地缓存/收回未完成迁移/退出所属设备组。分别报告撤权与清除结果,离线待清除不得写成已清除;无法清除的范围须说明。 | 提供解绑或账号退出时配置;重连先核验撤权,再恢复交换(D1-5)。 |
边界:角色与能力决定这台设备能做什么,在场决定它现在能不能做,发现范围只决定它能不能被看见。三者都不产生授权。
二、信任:这台设备上能看到什么、前面是不是本人
前缀:xd.trust
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 设备私密级别 | privacy.level | 本字段保存的是私密级别的默认与覆盖规则(可用取值:私人/共享/未知;未知按共享解析;用户设置优先于产品推断,推断不得覆盖用户的明确设置)。某台设备当前的实际级别与其来源是运行事实,不写进本字典;预设中不出现具体设备标识、当前主控或一次性的认证结果。 | 作为内容呈现、迁移裁决与提醒级别的共同输入(对应 D1-3)。 |
| 必选 | 内容可见级别 | content.visibility | 呈现策略引用,解析结果为:完整/经筛选的摘要/仅存在性/不呈现。策略须逐项给出各情境下的内容上限、按内容类别的筛选规则、以及允许主动展开的条件。按私密级别、锁定状态、投屏、录屏及当前输出受众解析;私密耳机切外放或新增共享输出时重新裁决;多项限制同时成立时取共同允许的内容(按类别求交),不是在一条强度轴上取最小值;无法生成满足全部限制的筛选摘要时,退至"仅存在性"或"不呈现"。通知预览的默认与配置上限受 sensitive.masking 约束;用户在可信私密界面上的主动查看是另一次动作,按其自身权限裁决。 | 决定这台设备上呈现到什么程度;投屏与录屏是最易遗漏的输入。 |
| 可选 | 旁观者处理 | bystander.mode | 枚举:不处理/降级呈现/需显式展开。仅在私人设备且用户明确选择时可取"不处理"。 | 设备可能被他人看到时配置。 |
| 可选 | 本人重验触发 | reauth.triggers | 集合:共享或长期登录设备敏感操作前缺少有效验证/超过闲置时长/切换设备后首个不可逆操作/权限变更。身份验证限定用户、设备或会话、范围及有效期,不能替代业务批准。长期登录的私人设备也须引用验证有效期规则,不只检查共享设备。 | 存在长期登录或共享设备时明确(D1-4)。 |
| 可选 | 共享设备会话时效 | shared.session_ttl | 正时长(单位明确);自本次验证通过起算;普通读取与页面停留不续期,续期须有预定义规则或一次新的验证;到期后回到未验证状态。 | 产品可在共享设备上保持登录时配置。 |
| 可选 | 敏感内容遮蔽类型 | sensitive.masking | 集合:验证码/金额/收款方/健康信息/位置/私人消息正文,每项含其在各情境下的呈现上限与可否主动展开。验证码原值在通知预览中的上限不受普通用户配置放宽(共享、未知私密级别、投屏或录制时),但这不禁止用户在可信私密界面上主动查看原文;其余类别的主动展开须声明对象、范围与有效期(见第十一节的固定底线)。 | 需要在非完整可见级别下逐类控制时配置。 |
边界:私密级别是设备的属性,可见级别是这次呈现的结果,重验是对人的判定。三者分别成立,不可互相替代。
三、迁移:任务怎么从一台走到另一台
前缀:xd.handoff
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 迁移语义 | semantics | 枚举:移动/复制/接管/镜像。同一入口在不同情境下不得产生不同语义而不加区分;语义须在用户确认前可知。 | 决定迁移后两端各自的处境(对应 D2-1)。 |
| 必选 | 迁移粒度 | granularity | 枚举:任务/视图/播放或阅读位置/当前选区。决定承接点落在哪一层。 | 决定目标设备的起始状态。 |
| 必选 | 源设备终态 | source.on_transfer | 枚举:继续/暂停/只读/退出。与 semantics 联合校验:移动不允许源端保留同一任务的独立主动交互入口;执行位置由执行角色另行决定;接管后源端不得保留原独占控制。呈现、后台执行及草稿去向须与声明一致。 | 避免迁移语义与源端实际行为冲突(D2-1、D2-2)。 |
| 可选 | 发起方式 | trigger | 集合:用户显式/近场提示/情境自动。含自动项时必须提供拒绝路径,且提示未响应不视为同意。 | 提供自动或半自动流转时配置;自动流转必须可收敛为需确认或关闭。 |
| 可选 | 承接点精度 | resume.precision | 按内容类引用的承接位置规则,每项含:语义锚点类型(时间位置、段落与光标、已填字段与焦点等)、内容变化时的映射策略、允许偏差(如媒体的时间量,须带单位)、以及达不到该精度时的回退与告知方式。"精度"与"锚点类型"是两件事,不合为一个枚举;具体的段落标识与当前播放位置是运行状态,不写进本字典。 | 承诺精确接续时配置。 |
| 可选 | 迁移邀请有效期 | offer.ttl | 正时长(单位明确);自邀请创建起算,投递延迟计入有效期;到期失效且不产生迁移,迟到的响应不得复活已失效的邀请。 | 提供迁移提示或邀请时配置。 |
| 可选 | 重复提示冷却 | offer.cooldown | 正时长 + 同一机会的判定范围;自明确拒绝或邀请到期起算,信号抖动、查看提示或重连不续期、不生成新机会。未到期的未响应邀请不重复展示;必要的新事项与原机会分别判定。 | 提供近场或情境提示时配置(D2-4)。 |
| 可选 | 失败处置 | on_failure | 枚举:保留源状态并恢复/有限核对或重试后恢复/保留恢复点并等待处理。选择有限核对或重试时,须引用次数上限、等待期限与用尽后的待处理入口;仅在确认重试不会重复外部影响时重试。结果未知先核对;取消与承接竞争按实际生效顺序裁决,清空两端恢复状态不能成立。 | 迁移可能中断时配置(D2-5)。 |
| 可选 | 目标端权限裁决 | target.permission_check | 枚举:按目标设备重新裁决/按目标设备重新裁决并对私密内容要求确认。不提供"沿用源设备裁决"取值。 | 所有跨端迁移时配置(对应 D2-6)。 |
边界:迁移结果分成功、失败与未知;发出、接收与目标可接续分别确认。未知先核对实际状态,保留恢复入口且不重复外部影响;不以“两端必须立即可写”替代任务保护。接续记录绑定对象、账号或工作空间、内容修订与资源依赖。
四、同步:状态以谁为准、怎么收敛
前缀:xd.sync
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 真相源 | source_of_truth | 枚举:服务端/指定主设备/多副本按确定规则合并/按数据类分别指定。每类可解析到权威来源或合并规则及适用范围;多副本不等于以任一设备的当前显示为准。 | 定义可信状态模型,允许本地优先架构(D3-1)。 |
| 必选 | 呈现状态集 | state.display | 枚举集合,至少含:已同步/同步中/未同步/冲突。四态的可分性不因设备类别取消,详略可按设备调整。 | 让用户能判断此刻切换设备是否安全(对应 D3-2)。 |
| 必选 | 同步确认范围 | ack.scope | 枚举:服务端确认/指定目标设备确认/当前参与设备集合确认/按数据类分别指定。集合及确认条件可解析;未获目标确认不得暗示目标可用,离线端不默认包含在已完成范围中。 | 解释“已同步”具体确认到哪里(D3-2)。 |
| 必选 | 并发裁决策略 | conflict.strategy | 枚举:阻止并发编辑/自动合并/保留双方副本交由用户裁决/后写入生效。取"后写入生效"时被覆盖的内容必须可发现且可取回;取"自动合并"时合并结果必须可识别与更正。 | 同一对象可能被多端同时修改时配置(对应 D3-3)。 |
| 可选 | 离线写入范围 | offline.write_scope | 集合;超出范围的操作须在用户投入之前被拦下并说明。空集合表示离线只读。 | 允许离线操作时配置。 |
| 可选 | 回联处理 | offline.on_reconnect | 枚举:校验后提交/校验后合并/进入冲突裁决/保留草稿等待处理。先校验账号、授权、内容修订及删除状态;可能被拒绝须事先说明。拒绝后保留仍获准保留的输入,不静默复活已删除对象。 | 配置离线写入范围时必须明确(D3-4)。 |
| 可选 | 离线命令有效期 | offline.command_ttl | 按命令类指定正时长 + 到期后处置:保留草稿/丢弃待执行命令并告知。自用户发起时计算,重连不自动续期;草稿内容的保留期限另行管理。 | 排队操作依赖时效或外部状态时明确(D3-4)。 |
| 可选 | 收敛延迟承诺 | convergence.target | 复合决定:{预期范围, 提示阈值, 适用网络与资源条件, 超时表达};时长单位明确,自本端提交变更起算,确认范围取 ack.scope。离线等待单独表达,不通过重连重置起点美化延迟;超过提示阈值显示未在承诺内确认,结果未知不等于未执行。 | 用户可能在收敛完成前切换设备时配置(对应 D3-6)。 |
| 可选 | 乐观呈现范围 | optimistic.scope | 操作类型及允许的暂态映射;可安全修复的编辑可即时回显,对外发送、支付等只可先显示待发送或处理中,禁止提前显示成功。真实本机持久化不属于乐观承诺。 | 采用本地即时反馈时配置(D3-1)。 |
边界:本机保存、范围内同步与业务完成分别确认。安全的非冲突合并可自动发生;冲突不得丢贡献,合并不得打断组合输入与焦点。本地撤销保护他人的独立贡献。
五、降级:能力不足时任务变成什么
前缀:xd.degrade
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 能力落差时的行为 | on_capability_gap | 枚举:降级为受限形态/代理到具备能力的设备/明确不可用并说明。不提供"静默失败"取值;不可用必须包含可执行的下一步。 | 主要任务可能在能力不足的设备上被发起或承接时(对应 D4-2)。 |
| 必选 | 关键操作设备门槛 | critical.min_capability | 阈值集合;每项为能力维度与最低要求,至少覆盖能否呈现操作对象与后果、能否可靠确认本人在场、当前情境是否允许必要注意力。不满足即不得在该设备上直接完成。 | 存在不可逆或高影响操作时配置(对应 D4-4)。停止类控制不受本门槛限制。 |
| 可选 | 内容裁剪策略 | content.reduction | 枚举:摘要/分段/关键字段优先。任一策略下必须保留判断所需信息(对象身份、关键数量与金额、不可逆性);无法完整呈现时不得在该设备索取确认。 | 在小屏或注意力受限设备上呈现需判断的内容时配置。 |
| 可选 | 代理目标选择 | proxy.target_policy | 枚举:用户指定/最近使用/能力最优。选择策略还须引用等待规则:请求起算点、有效期、取消、生效回执与超时退路。先按授权、能力和在场筛选,再排序;“最近使用”不得选中不满足条件的设备。 | 采用"代理到其他设备"这一落差行为时必须明确。 |
| 可选 | 情境限制 | context.restrictions | 映射集合;每项为情境(行驶中/运动中/锁屏/公共场合/会议中)与其受限操作集。情境限制与设备能力独立判定,能力充足不豁免情境限制。 | 设备会进入注意力或安全受限情境时配置。 |
| 可选 | 降级告知通道 | notice.channel | 集合:屏幕文本/语音/震动/补达至其他设备。仅选择获准且可用的通道;事实持续可查,无通道时保留待告知。震动只能表达预先可理解的最短含义,不能替代无法传达的失败原因;补达受提醒去重与情境限制。 | 存在无屏或极小屏降级形态时配置(对应 D4-6)。 |
边界:降级改变的是任务的形态,不改变必要的告知、确认与回执;门槛决定的是"这台设备上能不能完成",不是"能不能发起"。
六、注意力:在哪台提醒、提醒几次
前缀:xd.attention
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 去重范围 | dedup.scope | 枚举:同一用户的产品可协调设备/按事件类分别指定可协调设备。须解析到事件标识、提醒轮次与协调范围;不含某设备时说明限制,不能将不支持冒充全端保证。 | 决定跨端去重范围(D5-1)。 |
| 必选 | 去重时间窗 | dedup.window | 正时长;仅表示重复识别记录的最短保留窗口,自该轮提醒首次被分配目标时起算。不是提醒频率、业务有效期或升级间隔。同一事件的同一提醒轮次只分配一个打断目标;窗口到期不把同一轮次变成新轮次,也不自动产生新提醒;去重所依赖的事件与轮次标识,其保留期须覆盖已声明的迟到投递窗口与业务有效期——记录被提前清理不得导致重复主动提醒。与业务有效期分别配置,已处理与过期优先阻止重提。 | 离线补投与重复触发按相同标识核对(D5-1)。 |
| 必选 | 已读与已处理同步 | read_state.sync | 枚举:在线即时同步/延迟并给出承诺时长。两者均须引用从状态确认到声明设备范围消解的时效规则与超时反馈;“即时”不表示零延迟。离线恢复后先核对再补投;已读、关闭提醒、业务已处理分别同步,不以关闭横幅完成任务。 | 多设备呈现未读或待办时必须兑现消解(D5-3)。 |
| 可选 | 提醒业务有效期 | event.ttl | 按事件类指定正时长或明确业务截止条件;时长自业务事件发生起算,投递和重连不续期;已处理、撤回或取消提前结束提醒资格。过期停止打断与升级,可留历史记录;不改变业务任务状态。 | 主动提醒必须明确(D5-1)。 |
| 可选 | 投递未知时的回退 | delivery.on_unknown | 枚举:保留单端路由并静默留存/按有限升级策略改投。记录漏达或重复边界;改投依赖 escalation.policy,不得把未知当作未送达后无限补投。 | 无法确认设备实际呈现或跨端协调中断时明确(D5-1)。 |
| 可选 | 路由策略 | routing.policy | 枚举:在场设备优先/用户指定默认设备/按事件类分别指定。在场信号不可用时回退到指定设备,不得退化为全设备广播。 | 具备在场判定且提醒有时效性时配置(对应 D5-2)。 |
| 可选 | 情境状态继承 | context.inherit | 集合:勿扰/驾驶/会议/睡眠。生效范围(全部设备/仅本设备)须可被用户理解与调整,默认方向为保护不被打扰。 | 提供情境模式时配置(对应 D5-4)。 |
| 可选 | 例外清单 | override.allowlist | 集合,每项声明事件判据、适用用户与情境、计数窗口及次数上限;空集合表示无例外。穿透行为可审计。禁止纳入营销、推荐与增长类提醒。 | 存在需穿透去重或勿扰的事项时配置(对应 D5-5)。 |
| 可选 | 未处理升级策略 | escalation.policy | 复合决定:重提或改投次数上限(非负整数,0 表示禁止升级)+ 间隔(正时长,自上一轮分配时起算)+ 停止条件;已处理、过期或取消即停止。每轮去重,仍受情境状态约束;穿透另需例外清单。 | 未处理或回执未知需再提醒时配置。 |
| 可选 | 共享设备呈现级别 | shared.content_level | 引用 xd.trust.content.visibility;不在本类重复定义取值。 | 提醒可能出现在共享设备上时配置(对应 D5-6)。 |
边界:去重、路由、情境约束与例外清单分别裁决。业务有效期不是去重时间窗,投递接受不是实际呈现,实际呈现不是用户处理;不承诺用户恰好感知一次。
七、协同组:一次跨设备协同怎么组成与结束
前缀:xd.session
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 成员构成 | group.membership | 枚举:仅同账号设备/同账号加受邀设备/开放加入需批准。开放加入时须有批准环节,邻近不构成加入资格。 | 多设备同时参与一项工作时(对应 D1-6)。 |
| 必选 | 控制权归属 | control.owner | 枚举:发起设备/指定主控设备/共享控制。指定的是归属策略;实际主控与有效期由运行状态提供。共享控制依赖 control.arbitration,内容合并另见 xd.sync.conflict.strategy。 | 定义谁的命令生效(D2-7)。 |
| 可选 | 命令裁决策略 | control.arbitration | 枚举:独占控制交接/按对象分配控制/统一排序并校验后执行。明确生效点、迟到命令处置与回执;旧主控命令在交接后不得以原资格生效。 | 多端可发出互相冲突的控制命令时明确(D2-7)。 |
| 可选 | 主控丢失处置 | control.on_loss | 枚举:暂停并等待有权者接管/按预先授权规则转交/结束协同并保留任务。不得产生两个独占主控,不承诺离线立即完成远端停止。 | 存在主控或主持设备时明确(D2-7)。 |
| 可选 | 成员角色权限 | member.permissions | 参与者或角色到对象、查看与控制范围的映射;加入不默认获得全部权限,依赖本组的临时权限随离组失效。 | 跨用户协同或有主控与旁观角色时明确(D1-6、D2-7)。 |
| 可选 | 加入与退出规则 | join.policy | 复合决定:{加入时机(随时/仅发起阶段/指定窗口), 准入批准规则(无需批准/需主控批准/按成员角色), 退出后果引用}——三者是不同的决策轴,单选枚举无法表达"仅开场加入且需主持批准"。也可引用一份能同时表达三者的产品规则。含退出后其已产生结果的处置说明。 | 协同组成员可能中途变化时配置。 |
| 可选 | 协同组存续期 | group.ttl | 正时长(单位明确)或以显式结束为准;自组建立起算;续期须有预定义规则或一次明确的新决定——断线重连本身不续期;到期解散。解散不等于任务结束,任务按其自身生命周期存续。 | 组可能被遗忘在后台时配置。 |
| 可选 | 断开后状态保留 | state.retention | 正时长;自成员进入可恢复断开状态起算。仅读取或尝试重连不续期;重新获准加入并建立有效连接后,再次断开才形成新的保留窗口。到期不再承诺原位恢复,保留状态不延长成员权限;与任务状态保留分别管理。 | 承诺断开后可重新加入时配置。 |
| 可选 | 与任务的绑定 | task.binding | 枚举:一组一任务/一组多任务/任务独立存续、按次关联。都须能定位当前操作的任务;组结束不自动完成或取消任务。 | 明确生命周期与关联关系,不允许控制请求无任务归属(D2-7)。 |
边界:退出设备、断开连接、停止呈现、解散组与取消任务分别定义。组解散或控制权转移不自动改写任务目标及已完成进度;必要时按声明暂停。重连先核对身份、内容修订与当前控制权,不复活旧授权。
八、一致性:哪些锁定、哪些按设备解析
前缀:xd.consistency
| 级别 | 设计决定 | Token 字段 | 类型与合法取值 | 适用条件与作用 |
|---|---|---|---|---|
| 必选 | 设备类别枚举 | device_class | 本字段维护的是产品所支持的设备类词表(默认:手表/手机/平板/桌面/电视/车机/头显/无屏),须为少量枚举且各端共用同一份。某台设备属于哪一类是按能力解析得到的运行结果,不写进本字典;未列入词表的设备按"未支持"处理,或经显式映射归入已有类别;不以型号或屏幕宽度替代,也不为一种外接配置新增一个型号级类别。 | 作为全部按设备解析的输入基准(对应 D6-1、D6-2)。 |
| 必选 | 跨设备锁定项 | locked | 集合,至少含:对象与操作术语/状态与语义表达(成功、失败、进行中、不可逆)/操作后果表述/品牌识别要素。锁定项须来自单一来源,禁止按设备类别改变含义。 | 保证用户的心智模型跨设备成立。 |
| 必选 | 按设备解析项 | resolved_by_device_class | 集合,至少含:字号/行高/间距/最小触达区域/对比度/焦点可见性/层级深度/信息密度/动效时长。按设备及当前情境验证,结果可以相同;禁止未经验证跨端硬套,须满足适用无障碍要求。 | 保证各端可读可操作,不为差异而改变(D6-1、D6-2)。 |
| 可选 | 解析输入维度 | resolution.inputs | 集合:典型观看距离/主输入模态/可分配注意力/典型单次使用时长/环境亮度。至少含观看距离与主输入模态。 | 需要说明解析依据而非仅给出结果时配置。 |
| 可选 | 视觉 token 引用 | visual_tokens.ref | 指向产品视觉 token 集合的引用(可为 DTCG 格式文件或其他单一来源)。本字典不重复定义视觉值,只规定其跨设备的变与不变。 | 已有视觉 token 体系时配置,供各设备解析已定义的视觉值。 |
| 可选 | 平台让位清单 | platform.defer | 集合:返回与导航手势/通知呈现与管理/分享入口/文本选择/系统级设置归属。让位项属解析项,不属锁定项;不得拦截或改写平台的系统级控制通道。 | 在多个宿主平台分发时配置(对应 D6-6)。 |
边界:锁定项与解析项按同一粒度互不重叠;让位清单是解析项的子集,表示由宿主平台决定。按设备解析不意味着各端数值必须不同。无障碍偏好、任务语义焦点与阅读位置共同决定接续表现。
九、可选项的联动要求
能力可以不启用;启用后,依赖必须完整。下表不新增字段或第三种级别,相关值可由产品规则继承。表内省略共同前缀 xd.。
| 能力或承诺 | 必须明确的依赖 | 未满足时 |
|---|---|---|
| 提供接续能力 | handoff.semantics、handoff.granularity、handoff.source.on_transfer、handoff.resume.precision、handoff.on_failure;目标就绪与取消回执可核验,恢复状态有实际存储保障。 | 不宣称可接续;保留源端工作,提供普通打开或受限查看。 |
| 自动或近场触发的迁移 | handoff.trigger、拒绝与关闭路径、handoff.source.on_transfer;采用提示时明确 handoff.offer.ttl 与 handoff.offer.cooldown。 | 仅显式发起;未响应提示不产生授权。自动执行另需有效预先授权。 |
| 目标端内容与权限裁决 | trust.privacy.level、trust.content.visibility、handoff.target.permission_check。 | 按目标设备的最保守可见级别呈现,不沿用源设备裁决。 |
| 离线可写 | sync.offline.write_scope、sync.offline.on_reconnect、sync.conflict.strategy;队列命令依赖时效或外部状态时另需 sync.offline.command_ttl。 | 保留本地草稿或只读,明确区别;不先积累不可提交的输入。 |
| 本地即时反馈 | sync.optimistic.scope、sync.state.display 与 sync.ack.scope。 | 可以按真实回执声明本机保存,不把待执行或未同步表述为业务成功、目标可用。 |
| 多端同时编辑 | sync.conflict.strategy、贡献保护与内容取回路径。涉及控制命令时另按协同组依赖处理。 | 阻止并发编辑,或保留双方副本交由用户裁决。 |
| 跨设备提醒 | attention.dedup.scope、attention.dedup.window、attention.read_state.sync;主动提醒需 attention.event.ttl,回执不确定需 attention.delivery.on_unknown。 | 限定为可协调的单端提醒,其他端静默;不提供无依据的全端去重承诺。 |
| 未处理或未知时升级 | attention.escalation.policy、attention.event.ttl;每轮去重,已处理或过期停止,穿透需 attention.override.allowlist。 | 不自动重提或改投,保留静默记录。 |
| 穿透勿扰的提醒 | attention.override.allowlist 及每项频次上限、可审计记录。 | 一律遵守情境状态;不设例外。 |
| 代理到其他设备完成 | degrade.proxy.target_policy、目标设备在场判定、等待有效期与取消路径;运行请求绑定设备、主体、对象修订标识与后果。 | 不代理;按 degrade.on_capability_gap 的其他取值处理。 |
| 在受限设备上完成关键操作 | degrade.critical.min_capability 与 trust.reauth.triggers。 | 不在该设备上完成;发起或排队后转由满足门槛的设备完成。 |
| 持久设备关系 | device.unbind.on_remove 与可发现的解绑入口。 | 不建立持久关系;按单次协同的存续期界定范围。 |
| 多设备协同组 | session.group.membership、session.control.owner;冲突控制需 session.control.arbitration,主控模式需 session.control.on_loss,角色差异或多人参与需 session.member.permissions。 | 不开放缺少定义的共同控制;主控归属未知时保留状态并等待有权者接管。 |
| 兼容性与资源依赖接续 | device.compatibility.requirements、degrade.on_capability_gap、与承接点绑定的对象修订标识及必要资源。 | 说明限制并保留源状态,提供更新、受限查看或其他设备路径。 |
| 新增设备类别 | 该类别在 consistency.resolved_by_device_class 各项上的解析结果,以及 degrade.on_capability_gap 在该类别下的取值。 | 不声称支持该类别;选用预设也须先完成该类别验证。 |
| 把某台设备呈现为可选的迁移目标 | device.presence.signal 可解析到有效期或等效的失效规则(presence.ttl,或所引用平台的失效机制)。 | 呈现为“待检查”并允许刷新或探测;检查通过前不把用户点击当作真实可用或获准的证据。 |
| 在共享设备上允许敏感操作 | trust.reauth.triggers 与 trust.shared.session_ttl(或等效的验证有效期规则),且失效后的检查点已声明。 | 不在共享设备上开放该类操作;转由满足门槛的设备完成。 |
| 承诺离组后可重新加入并接续 | session.state.retention 与重连时的权限复核规则。 | 不作可接续的表述;重新加入按新会话处理并重新取得授权。 |
| 可视设备的按类别适配 | consistency.resolution.inputs 至少含观看距离与主输入模态,且解析结果可查。 | 不作跨设备适配承诺;无屏设备把视觉解析项记为"不适用"并引用其对应的输出策略,不被迫填写字号与焦点。 |
| 引用视觉 token | consistency.visual_tokens.ref 可解析到单一来源与适用范围,且各要素已归入 locked 或 resolved_by_device_class 之一。 | 不声称跨端视觉一致;不由各端各自决定哪些可变。 |
"继承默认"必须能解析到明确的值、来源与适用范围,不能只是一句说明。
十、预设记录与使用示例
10.1 每项决定的记录
| 项 | 内容 |
|---|---|
| 适用 | 用户成果、任务类别、设备类与情境;不支持的能力明确列出 |
| 决定者 | 产品默认、组织限制、用户偏好或本次任务选择 |
| 取值与理由 | 值或可解析引用;为什么适合这项任务,依赖什么实际机制 |
| 生效 | 何时应用,如何影响进行中的迁移、协同组和排队提醒 |
| 证据 | 值来源、验证范围与记录;无依据的数值记为“项目待测”,不作为已生效承诺 |
| 退路 | 事实未知、能力缺失、类型非法时分别如何处理 |
运行中的任务记录实际采用的有效设置及来源。撤权与更严格的保护在相应检查点立即约束后续动作;普通偏好按声明的时点应用。设置改变不得延长已有授权、重置提醒轮次或把未处理事项变成已处理。
10.2 完整预设:私人文档从手机接续到电脑
成果:用户能在电脑继续编辑同一文档的当前段落,手机转只读。产品只提供用户主动发起的顺序接续;本场景不启用近场提示、离线命令、协同设备组和主动通知。以下覆盖全部适用必选项及其条件依赖;是供实现与评审使用的示例,不宣称已有运行引擎或实测结果。
表内省略 xd.。策略引用 A–F 在表后完整定义;它们是本示例的规则名称,不是新增 Token。时效值未填实测值时不启用依赖它的承诺。
| 字段 | 取值 | 原因与机制 |
|---|---|---|
device.role | 源端输入,目标承接并输入,按迁移阶段分配 | 源端在成功后不保留独立编辑入口;内容存储由服务端承担 |
device.capability.source | 平台查询 | 核对应用可编辑、输入与存储能力;失败不猜测 |
device.capability.dimensions | 主输入模态、屏幕类别、可私密显示、可离线写入 | 只使用会改变本场景结论的维度 |
device.compatibility.requirements | A:正文格式、必要附件、对象权限均兼容 | 在目标可继续前检查 |
device.unbind.on_remove | 撤回令牌、请求清除本地缓存、收回未完成迁移 | 继承账号设备管理:拒绝新交换,清除单独取回回执;离线仅显示待清除 |
device.presence.signal | 连接状态、用户显式选择 | A 中的请求应答支持可用判定;点击只触发检查 |
trust.privacy.level | B:未知按共享;用户可标记私人 | 用户标记不覆盖当前投屏等硬限制 |
trust.content.visibility | B:按受众、锁定和输出状态解析 | 共享或未知输出不展示本场景的私密正文 |
handoff.semantics | 移动 | 只改变主要交互入口,不复制文档 |
handoff.granularity | 任务 | 带入文档草稿、必要附件与语义位置 |
handoff.source.on_transfer | 只读 | 保留去向与恢复入口 |
handoff.trigger | 用户显式 | 不需要迁移邀请和提示冷却参数 |
handoff.resume.precision | C:段落与光标锚点规则 | 精度和不可映射时的退路都有定义 |
handoff.on_failure | 保留源状态并恢复 | 结果未知先核对;确知未承接才恢复源编辑 |
handoff.target.permission_check | 按目标设备重新裁决 | 不转送源端的权限结论 |
sync.source_of_truth | 服务端 | 本机草稿与服务端确认分别表达 |
sync.state.display | 已同步、同步中、未同步、冲突 | “已存本机”另外提供存储事实 |
sync.ack.scope | 服务端确认 | 不因服务端已收到就说目标可用 |
sync.conflict.strategy | 保留双方副本交由用户裁决 | 恢复过程中发现重叠修改时保护双方输入 |
sync.offline.write_scope | 文档正文草稿 | 不含删除、发送或权限变更 |
sync.offline.on_reconnect | 校验后提交 | 冲突时按上项保留双方,撤权或删除时禁止提交 |
sync.convergence.target | D:项目测量规则 | 阈值未确定前不显示具体耗时保证 |
degrade.on_capability_gap | 降级为受限形态 | E:资源不足时只读;不满足私密门槛时不呈现正文 |
consistency.device_class | 手机、桌面 | 不宣称支持其他类别 |
consistency.locked | 对象与操作术语、状态与语义表达、操作后果表述、品牌识别要素 | “已同步”两端含义相同 |
consistency.resolved_by_device_class | 字号、行高、间距、最小触达区域、对比度、焦点可见性、层级深度、信息密度、动效时长、返回与导航手势、文本选择 | F:按目标端能力和用户偏好验证 |
consistency.resolution.inputs | 典型观看距离、主输入模态、可分配注意力 | 手机触控与电脑键盘分别测试 |
consistency.platform.defer | 返回与导航手势、文本选择 | 这些项纳入解析项,不覆盖系统行为 |
策略引用的内容:
- A 接续准备:同账号且同工作空间;本次探测请求得到匹配目标的应答,执行前再次检查,超时按未知。连接中断、能力改变或请求结束即失效。工程填写有界探测等待时长后方可启用;该时长是机制依赖,不冒充平台统一默认。
- B 私密正文:私人、解锁、无已知共享输出且有查看权时完整显示;共享、未知、锁定或输出状态无法可靠确认时不呈现正文。显式转往另一台满足条件的设备;不得用任意摘要替代内容筛选。
- C 位置:内容未变时恢复同一段落和光标,字符偏移为零;内容已变时按稳定段落锚点映射。无法映射光标则回到仍存在的段落起点并说明;段落已删除则打开最近可定位的上级位置并告知,不宣称精确接续。
- D 耗时:从本地提交到服务端确认,分别测正常网络与弱网,离线显示未同步。项目填写预期范围与提示阈值,超过阈值显示“尚未确认同步,可保留本机草稿”。确认目标可用还须另外满足目标恢复回执。
- E 退路:缺非必要附件可只读并列明缺失;必要正文或授权缺失不显示可接续。恢复入口和合法草稿留在源端,不能在两端未经裁决同时编辑。
- F 表达:目标端沿用自身字号、读屏与减少动效偏好;恢复语义焦点,不复制像素坐标。各视觉值从产品已验证的设备样式取得;缺少验证时该设备不进入支持范围。
不适用记录:attention.*(无主动提醒或跨端未读项);session.*(无持续设备组或共享控制);degrade.critical.min_capability(本流程仅编辑草稿,不含高影响操作);trust.reauth.triggers(本例文档为用户允许常规查看的私人草稿,不含需重验的敏感类别)。其余可选项仅在对应能力启用时加入,不从省略推导授权。
运行事实示例,非 Token:手机请求 H、文档 O、工作空间 W;源草稿已持久化,服务端确认了相同内容修订;电脑收到了正文但必要附件尚未到达。此时解析为“尚不可完整接续”,手机不清理恢复点,电脑展示缺失项;只有电脑恢复位置与必要资源并返回相同请求的就绪事实后,才将手机改为只读并显示“已在电脑继续”。这些占位标识不进入预设,日志不记录正文或凭据。
10.3 反向配置校验
| 输入 | 预期判定 |
|---|---|
| 移动 + 源端独立继续编辑 | 不相容;不启用该迁移,要求明确只读、暂停或退出 |
| “最近使用”代理指向无权或失联设备 | 先过滤,不能靠排序覆盖权限或可用性 |
| 可见性引用不存在 | 配置错误,停止该敏感呈现,保留合法恢复入口 |
| 共享输出 + 含验证码的通知预览 | 固定底线拒绝;缩短摘要长度不算脱敏 |
| 去重窗口小于允许的迟到投递范围 | 拒绝全范围去重承诺;延长记录保留或收窄投递范围 |
| 超时 + 目标实际可能已经承接 | 结果未知;核对原请求,不重新建立任务 |
| 用户关闭提醒 + 降级告知通道选其他设备 | 不主动补投,事实可查且记录待告知 |
| 无屏设备未填字号 | 正常不适用;仍需定义可理解的输出与控制路径 |
十一、固定底线:不能通过配置关闭
设备与信任。发现信号与设备名称不产生授权,发现只广播与采集必要信息。配对与跨端授权显示发起来源、用途和实际后果,拒绝可达,有限代码重复到达不重复授予资格。私密级别未知按共享处理;共享、未知私密级别以及正在投屏或录制的画面上,通知预览不包含验证码原值,普通用户偏好不放宽这一上限——用户在可信私密界面上的主动查看是另一次动作,按其自身权限裁决。多项限制同时成立时按各自允许的内容取交集裁决;给不出满足全部限制的筛选摘要时退至仅存在性或不呈现。输出受众发生变化时重新裁决;无法观测时采用声明的保守输出策略。登录状态不等于身份已验证;共享或长期登录设备敏感操作前须检查验证仍有效,失效后重验。凭据在可信认证界面由用户控制,不经普通业务代理转录到其他设备;保留密码管理器、系统填充、粘贴或等效的辅助认证方式;限定授权结果可以按合法认证协议返回。关系必须可解除,授权撤回与远端清除分别报告;离线待清除不冒充已完成。账号或工作空间切换不得混入旧身份的缓存与待提交操作。
迁移与状态。迁移语义、承接点与源端终态相容——移动改变的是主要交互入口,执行位置由执行角色另行表达,不因移动而被要求重启执行;发出、接收与可接续分别确认,结果未知先核对。失败保留恢复状态,不重复外部影响;安全性不明时可以暂缓写入。接续绑定对象、主体、内容修订与资源,显示端和执行端各自校验授权。本机保存、范围内同步与业务完成不混用,外部动作不得乐观报成功。多副本合并有确定规则,安全合并可自动进行,冲突不丢贡献,焦点与组合输入受保护。重连核对撤权、删除与命令有效期,旧副本不静默复活已删除对象。
协同与控制。设备角色与实际控制主体可知;共享控制命令有裁决,独占控制交接有生效点,旧主控不延续原资格。退出设备、断开连接、停止呈现、解散组与取消任务不混用。临时成员权限随离组失效,重连不恢复过期控制权;主控丢失按预定规则转交、暂停或结束协同。
能力与降级。能力与兼容条件在承接及相关变化时重新校验。能力落差不静默失败,受限情境不强行完成关键操作;停止入口不受关键操作门槛限制,其送达与生效仍依真实回执。无法充分呈现判断依据时不索取确认。跨端确认绑定具体请求,过期或变更后失效,一次生效,不以登录批准替代业务批准。降级保留可查询的必要结果、失败、阻塞与控制回执;只向获准且可用的通道补达,没有通道时保留待告知状态。
注意力与表达。可协调范围内,同一提醒轮次只分配一个打断目标,配置不得关闭去重;回执未知采用预定回退,升级有限且受过期与处理状态约束。已收到、已呈现、已读、关闭提醒与业务已处理分别表达,重连先核对再补投。勿扰等情境设定在声明范围内生效,例外不含营销、推荐与增长提醒。锁定项语义保持一致,解析项按各端验证,数值可相同但不得低于适用无障碍要求。目标端保留辅助技术偏好与任务接续位置,不拦截宿主平台系统控制。
以上承接《跨设备交互设计规范》的适用要求;本字典不替代整套规范,也不构成安全、隐私或法律合规证明。安全相关领域(如车载与医疗)的界面设计不得仅以本字典或本规范为依据,须同时满足适用的行业标准与法规。
配置交付与校验
移动、复制、接管、镜像只定义迁移语义,执行位置与当次角色另存为事实。接管需实际执行方撤销旧控制资格;镜像不因此获得写入权限。单字段示例不包含完整迁移能力或当前设备列表,不能作为自动投送资格。
随附的可执行样例只覆盖 xd.handoff.semantics,其余字段按本字典逐项校验;未覆盖不等于不适用或已通过。样例是所选字段的格式正反例,不是可直接启用全部能力的产品预设。完整产品交付另外包含适用性、依赖、证据、执行映射及进行中操作的生效边界。
字段名、类型或含义变更时更新引用方与验收样例;仅修改说明且不改变合法行为的,保留已有字段名。调用方读取解析后的有效配置,不由 UI 控件、动画或模型文字反推权限、测量或完成事实。参见对应场景。
参考来源
本文件为设计规范和Design Token提供来源与论据边界。规则是本规范的设计要求;研究、平台文档、协议与格式各自支持有限范围,不能相互替代。外部文献的年份、标准编号和固定链接仅用于定位出处。
研究与问题空间
| 来源 | 阅读重点与设计用途 | 适用限制 |
|---|---|---|
| Cross-Device Taxonomy,作者项目页及公开论文 | 用时间、设备配置、用户关系与空间等维度检查顺序接续、同时协同和多用户覆盖;支持 D2-1、D2-7 的问题空间 | 分类法不直接产生义务,不证明本规范原则穷尽 |
| Continuity in Multi-Device Interaction: An Online Study | 多设备连续性中的感知、定制、隐私与排障困难;用于 D1、D2-4、D4-1 的研究追溯 | 网上帖子研究,不等于代表所有用户的受控实验 |
| Local-first software | 多设备、离线、协作与多副本合并;支持 D3 将本机保存和跨端确认分开 | 数据收敛不自动保证业务含义正确,也不验证具体状态文案 |
| Opportunistic Nudges for Task Migration Between Personal Devices | 迁移提示与设备情境;用于 D2-4、D5-2 的提示位置与打扰成本研究 | 探索性结果不提供所有产品通用的冷却时长或收益阈值 |
| Handoff All Your Privacy | 从摘要追溯发现阶段的信息暴露问题;支持 D1-6 检查广播与采集范围 | 历史研究不证明当前产品仍存在相同问题 |
平台与协议
| 来源 | 相关内容与设计落点 | 适用限制 |
|---|---|---|
| Apple Handoff Programming Guide | 活动状态与接续;D2-3 不把打开首页当作恢复任务 | 官方归档只作模型参照,实际能力需按目标平台核验 |
| Apple Find My 擦除设备 | 离线擦除等待与执行;D1-5 分开清除请求和清除完成 | 不据此赋予普通应用系统级擦除能力 |
| Android Sessions API | transfer 与 share;D2-1、D2-7 区分顺序转移与同时共享 | API 模型不证明跨生态互通或特定设备上的运行能力 |
| OpenHarmony Cross-device migration | 状态保存、恢复、兼容性与失败;D2-3、D4-1 的目标条件检查 | 开源文档不等同于商业设备的全部支持范围 |
| Android Canonical layouts | 窗口与布局适配;D6 的表达解析 | 布局适配不替代权限、后台执行和输入能力检查 |
| Wear OS Bridging options for notifications | 桥接、重复提醒与消解;D5-1、D5-3 | 平台协调有范围限制;关闭通知不等于业务已处理 |
| FCM 消息生命周期 | 服务接受、离线存储、有效期和折叠;D5-1 分开接受、送达与处理 | 传输层折叠不能代替用户级跨端去重,平台默认寿命不作为产品默认值 |
| W3C Presentation API | 控制与呈现角色、连接关闭与终止呈现;D2-7 | 草案模型参照,不据此承诺全部浏览器支持 |
| RFC 8628:Device Authorization Grant | §3 的授权流程、到期与 §5 的安全考虑;D4-3 的受限设备认证接续 | 是特定协议,登录授权不等于支付或发布批准;不能因具备二维码就宣称安全 |
| RFC 10027:Security of Cross-Device Flows | §2、§6.1.2–6.1.4、§6.1.14 和 §6.2:请求上下文、有限代码、拒绝入口和协议选择;D1-6、D4-3 | 属 IETF Best Current Practice。界面提示只是缓解措施之一;需结合机制与风险评估,邻近不是独立授权 |
无障碍与值格式
| 来源 | 相关内容与设计落点 | 适用限制 |
|---|---|---|
| WCAG | 焦点顺序、焦点可见、状态消息及目标尺寸;D6-2、D6-3 | Web 验证依据不直接给出所有设备的统一物理尺寸;跨端语义焦点恢复是本规范的设计应用 |
| Understanding Accessible Authentication | 密码管理器、填充、粘贴和认证替代路径;D1-4、D6-3 | 解释性文档,不要求普通业务代理收集凭据或将秘密转录到共享设备 |
| DTCG Format Module | 值类型、时长、引用与扩展格式 | 社区组报告,不是 W3C 标准;值可存储不意味着工具理解业务授权或去重 |
| DTCG Resolver Module | 多情境、输入与解析顺序;Token 的格式参考 | 不作为权限引擎,不以普通值覆盖规则放宽硬限制 |
资料事实与本规范的设计判断
- 接续、共享、控制和呈现的区分有平台及协议模型可参考;目标就绪回执、取消竞争与恢复入口的具体用户表达由本规范定义。
- 授权上下文、明确拒绝及认证辅助方式有直接来源支持;共享预览不包含验证码是本规范的产品底线,不伪称所有协议都有这一条原文。
- 提醒接受不等于送达有传输文档依据;每轮单目标分配、未知回执退路及有限升级是产品协调策略,不能据此保证用户恰好感知一次。
- 各时长、观看距离、位置偏差、层级密度与理解正确率需通过目标用户和设备验证;不把文档示例或平台默认数值当作通用阈值。
核验边界
本文保留原始研究与平台资料作为追溯入口。此次直接重新打开并检查相关内容的来源为 Android Sessions API、FCM 消息生命周期、RFC 10027、可访问认证说明及 DTCG Resolver;DTCG Format 正文抓取超时,未将其标为此次已核验。其他来源沿用既有资料入口,不宣称重新审阅全文。
尚未开展 SDK 运行测试、真实设备联调、目标用户研究、全面标准符合性评估或系统性文献综述。空间锚点、身体移动、行业功能安全及法律适用性不因设备类包含头显、车机等名称而自动覆盖。产品采用时需验证其实际支持条件与可观测范围。