注意力与通知交互设计规范
让值得知道的事及时可见,让需要处理的事有清楚的下一步,让用户处理完仍能回到自己的工作。
5 条原则 · 14 条规则 · 必须 0 · 应当 0
目录
让值得知道的事及时可见,让需要处理的事有清楚的下一步,让用户处理完仍能回到自己的工作。
适用于应用内提示、系统通知、摘要、后台任务介入及多通道提醒。面向设计师、产品与工程:每条规则同时说明需要作出的设计决定、用户能感知的反馈和实现应提供的证据。配套:Design Token 与配置字典 · 来源与论据边界。
1. 范围与读法
本规范覆盖“订阅与权限 → 事件判定 → 排队与投递 → 呈现与处理 → 返回原任务 → 负担复盘”的完整过程,不规定唯一组件、推荐算法或消息协议。不适用于医疗警报器、紧急广播、驾驶报警等专用告警系统的可靠性认证;普通产品不得借用这些场景为任意穿透勿扰提供理由。
必须/不得是验收底线:缺少它,会使明确的用户承诺在可预见情境下失效。应当是推荐做法,偏离时记录理由与等效方案。可以是可选实现。判定单位是正文中独立的义务子句;示例与成对反例帮助发现问题,不增加义务或扩大适用范围。
规则是本项目的必要性推导,不是外部文献原文。外部标准说明适用要求,平台文档提供实现参考,研究提供需要检验的方向;三者均不能证明某个提醒频率或等待时长普遍最优。
1.1 必须分开的概念
| 概念 | 含义 | 不等于 |
|---|---|---|
| 事件 | 对某个业务对象发生的一次有意义变化 | 每次轮询、每次内容刷新都产生新事件 |
| 通知类别 | 用户能理解并管理的一类提醒目的 | 投递服务内部的技术队列 |
| 投递模式 | 仅记录、延后、请求通知 | 紧急等级;延后不是低优先级 |
| 提醒轮次 | 对同一事件发起的一次逻辑提醒 | 每个设备、通道或重试各获得一份新额度 |
| 投递证据 | 已请求、服务接受、设备接收、实际呈现等分阶段证据 | 用户已注意、已理解、已处理 |
| 业务状态 | 待处理、已处理、已失效等业务事实 | 已读、已关闭、角标归零 |
| 最晚有用提醒时点 | 截止前仍留有合理反应和处理时间的时点 | 业务截止时刻本身 |
| 设置范围 | 某事件/某类别/全部可选通知,及账号、设备、通道范围 | 一个开关自动代表所有端、所有媒介 |
“已处理”针对本次通知所指的事项,不直接复制后台任务状态。例如导出任务完成会产生一个仍有知悉价值的新事件,不能因为导出已完成就把该事件立即判为无需提醒;纯知悉事件按其相关性、有效期与用户选择结束,不强造业务待办。
2. 原则与规则速查
| 原则 | 规范对象与方向 | 规则 |
|---|---|---|
| N1 提醒有理由 | 提醒资格:为什么找这个人、何时值得打断 | N1-1、N1-2 |
| N2 时机由用户掌握 | 请求权限、安静时段和偏好:选择可生效 | N2-1、N2-2、N2-3 |
| N3 队列有生命周期 | 聚合、延后和动作时效:旧消息不支配现在 | N3-1、N3-2、N3-3 |
| N4 介入可理解可恢复 | 内容、操作与返回路径:处理通知不丢工作 | N4-1、N4-2、N4-3 |
| N5 总负担可治理 | 多通道协调、突发总量与长期效果 | N5-1、N5-2、N5-3 |
3. 完整规则
N1-1先证明提醒值得发生
适用新增类别、后台触发或主动建议可能产生通知时。
要求必须明确接收人、触发条件、用户收益、不提醒的后果、有效性依据和下一步。纯信息类别可以把下一步写为“知悉,无需操作”,同时解释知悉价值。必须区分仅记录、非侵入知悉和主动打断,选择能够兑现收益的方式;应当优先采用较少打扰的方式。营销不得伪装成任务失败、账户风险或待审批事项。
设计决定:先问“这次提醒能帮助用户知道什么、改变什么”,再选择入口。通知订阅不等于同意系统自动执行通知里提出的新任务;用户未回应不得视为同意。
用户侧验证用户能说明为什么收到、是否需要行动;纯信息通知没有被迫点击的确认按钮。
实现侧验证从样本事件可追溯类别、接收依据与触发条件;轮询无变化不产生新提醒。
成对反例每个后台步骤都推送 ↔ 为追求零打扰把用户订阅的重要结果藏进深层日志。
依据项目必要性推导;NR01、NR02提供分类与打断机制参考。
N1-2用后果与时间决定紧急性
适用提醒存在不同强度、截止时间或例外穿透时。
要求必须分别记录不处理的影响、业务截止和最晚有用提醒时点,再决定呈现强度。时间敏感不得仅由业务方的“重要”标签决定。升级必须有允许类别、事实条件、有限轮次、间隔及停止条件;不得因未点击而自动提高紧急性。
例外穿透必须同时满足类别资格、真实平台能力和适用的用户允许;产品标签不产生权限。营销不得使用例外穿透。临近截止不能自行越过用户关闭或暂停的范围。
设计决定:区分“重要但可稍后知道”“现在处理有用”“已来不及处理”。第三种显示当前结果与补救入口,不补响失去意义的催促。
用户侧验证相同任务在不同剩余时间下,用户能理解为何提醒或为何不再催促。
实现侧验证注入截止变化、平台资格缺失与用户禁用,核对升级原因与实际允许范围。
成对反例所有消息都最高级 ↔ 为遵守聚合时长让仍可处理的重要事项错过窗口。
依据NR02;最晚有用时点与升级边界为项目推导。
N2-1普通通知不抢走当前任务
适用用户正在编辑、拖动、确认、阅读或进行其他连续操作时。
要求普通通知不得自动转移焦点、覆盖正在操作的关键控件或阻断提交。应当在任务边界、用户指定时段或摘要中提示;情境未知时保留非侵入入口,不把短暂停顿当作空闲证据。若继续当前操作确需用户决定,必须将问题放在相关任务处,说明被阻塞的步骤与可选路径。
设计决定:先选位置与时机,再选横幅等形式。前台已可见的结果应当就地反馈,不再同时发声提醒相同事实;“静默”不隐藏当前提交的失败或待确认状态。
用户侧验证输入中出现普通完成消息,焦点、输入和提交位置保持;有阻塞时能找到原因。
实现侧验证测试焦点、键盘顺序、连续阅读和情境信号缺失,记录实际呈现路径。
成对反例导出完成弹模态窗口 ↔ 所有失败都进摘要,用户以为提交成功。
N2-2关闭与暂缓必须按声明范围生效
适用产品提供可选通知或用户调整通知设置时。
要求必须提供按有意义类别关闭、暂缓与进入设置的入口,并展示所影响的事件、账号、设备和通道。必须区分“此设备不推送”与“此类事件不再联系我”。不得通过新建通道、更换类别或改发其他媒介绕过选择;不在关闭范围内的独立订阅也不得被误取消。
设置提交后必须反馈实际生效范围;同步未完成时显示待同步,不宣称所有设备都已生效。关闭必须拦截尚未提交的受影响提醒,并尽力撤回平台允许撤回的在途通知;无法撤回已发出的邮件等内容时如实说明限制。
必要的账户安全告知仅在产品明确列出适用依据、事件、接收人、独立通道、关闭限度和失败处置时单独处理;不得借“安全”扩大普通通知范围。专项告知同样受平台权限与内容保护约束。
用户侧验证从通知关闭一个类别后,能说明哪些会停止、哪些仍保留;无能力时不显示虚假的成功。
实现侧验证分别测试单设备关闭、类别全通道关闭、独立邮件订阅、必要安全告知及离线端设置同步。
成对反例关闭手机推送后偷偷发短信 ↔ 关闭一台设备顺带取消另行订阅的邮件。
依据NR01;范围裁决与生效反馈为项目推导。
N2-3在用户理解用途时请求权限
适用需要系统通知权限或重新启用已被拒绝的能力时。
要求应当在用户订阅、创建提醒或使用相关能力时说明通知用途并请求权限。必须区分未决定、允许、拒绝与不可用;关闭说明页或未回应不得记录为允许。拒绝后必须保留不依赖该权限的核心任务和查看结果的入口,不得反复弹窗、阻塞无关流程或用误导文案催促授权。
确实依赖通知的功能,必须在用户设定时说明能力缺口和可行替代;不得显示“会准时通知”却没有可用通道。重新请求应由明确的功能需要或用户主动操作触发,并遵从平台限制。
用户侧验证拒绝通知后仍可完成原任务,并知道去哪里查结果;可从设置主动重开。
实现侧验证测试允许、拒绝、取消请求及系统外修改权限;应用开关与平台实际状态分别记录。
成对反例首次启动先要求全部权限 ↔ 用户已经主动创建提醒,仍不说明为什么无法通知。
依据NR07。
N3-1聚合要保留异常并按时释放
适用同一任务或对象连续更新,或以摘要集中处理时。
要求应当按任务聚合,必须保留未解决异常、不同截止与各项详情入口。分组不得混合不同账号或不同可见权限的内容。预览条数只限制预览,不删除原始记录;摘要失败必须退回确定性列表,生成式摘要不得编造已解决结论。
聚合必须有有限释放时点。固定窗口从组内首个有效候选开始,后续到达不续期;若使用尾随窗口,必须另有不可续期的等待上界。窗口到点必须再次核对偏好和有效性;不允许主动投递时转入可回看的静默结果或明确的下一许可时点,不无限延期。
设计决定:摘要标题说明对象与重要变化,条目保留最早待办截止;已解决事项不挤掉仍待处理事项。
用户侧验证长列表中能找出尚未处理的异常;展开后能区分各自后果与期限。
实现侧验证持续注入更新、矛盾状态、撤权、摘要生成失败,检查释放上界与分组权限。
成对反例最后一条成功掩盖前面的失败 ↔ 为避免遗漏逐条响铃,失去聚合价值。
依据NR05提供更新机制参考;完整聚合合同为项目推导。
N3-2释放与操作前重新核对当前事实
适用排队、离线补投、过期通知、深链接或快捷动作。
要求必须在释放队列和执行动作前核对账号、业务对象、当前内容、有效性及业务状态。已处理、撤回或失效的事件必须停止主动提醒和升级;历史可留,但必须标明现状。时效性未知时不得补投带有过时行动承诺的提醒。
查看权限与操作权限必须分别核验。通知按钮不得跳过业务本身要求的确认;请求对象或关键内容已改变时,旧决定不得直接用于新行动。双击、多端重复和超时重试不得重复产生副作用;结果未知时先核对,不得显示已完成。通知消失、打开或已读均不得改写业务结果。
用户侧验证点开过期事项看见“已结束”与可用下一步;重复点击只产生一次业务结果。
实现侧验证注入撤权、换账号、撤回、乱序消息、提交后回执丢失及并发操作;检查提交处防重与结果证据。
成对反例断网恢复后补响已结束的预约确认 ↔ 删除所有历史,使用户无法理解错过了什么。
依据NR05;动作校验和防重是项目必要性推导。
N3-3延后应当形成可检查的安排
适用提供“稍后提醒”、自定义时间或安静时段。
要求必须反馈候选提醒时点、时区、生效范围及可编辑或取消入口;只有调度机制已接受安排时才称“已设置”,接受不等于保证届时送达。相对时长与本地钟点必须分别解释,跨时区和夏令时冲突必须有确定规则。
用户延后是新的明确请求,不消耗自动催促额度,也不重置该额度;未点击不得视作延后。延后仍受用户关闭、平台权限和业务时效约束。若候选时点晚于最晚有用时点,必须在确认前说明可能错过窗口,提供更早时点、立即查看或取消;用户仍可选择稍后查看,但不得保留已失效动作或承诺届时仍能办理。
用户侧验证延后后知道何时会再次提醒、如何取消;提醒未能安排时不会误以为成功。
实现侧验证重启、离线、改时区、重复确认、取消后旧任务回调,均能追溯唯一安排与现状。
成对反例“稍后”没有时间也无记录 ↔ 自动额度用尽后拒绝用户主动设定的提醒。
依据项目必要性推导;平台调度结果须在目标产品实测。
N4-1信息能读懂、能感知、能回看
适用横幅、角标、声音、触觉或通知中心传递信息时。
要求必须以文本或等价方式表达来源、对象、变化和必要下一步;不得只靠颜色、声音、振动或短暂出现。状态和操作必须具有可访问名称、角色与状态;动态状态消息必须能在不移动焦点的情况下被辅助技术感知。应当合并普通连续更新,避免重复朗读;只有确需即时感知的消息使用紧急播报。
瞬时提示消失后必须有可到达的等价内容;关键操作不得只有短暂入口。产品自行设置的处理时限必须提供可关闭、调整或延长的机制,或记录适用的实时/必要例外。普通回看入口不能替代对限时业务本身的检查。系统控制横幅时长时,不承诺自定义时长已生效。
角标必须定义计数对象及清除条件;未读数、待处理数和未同步数不得混用。文字放大、窄屏和长文本时必须保留关键信息与操作的可达性;通知动效应当支持减少动态效果的偏好。
用户侧验证静音、读屏、键盘操作、放大文字和错过横幅后仍能理解与处理;打开不把待办计数错误清零。
实现侧验证检查无障碍树、焦点顺序、连续播报、隐藏内容及时间限制;分别记录平台承担与应用承担的部分。
成对反例只亮红点,无文字与记录 ↔ 每个进度百分点都紧急朗读一次。
N4-2处理通知后能够回到原任务
适用通知打开详情、跳到其他页面或启动处理流程时。
要求必须保护允许保存的输入、原任务入口与恢复位置,并提供可理解的返回路径。不得为恢复而擅自持久保存凭据等不允许保留的输入。无法恢复时,必须在离开前说明会丢失什么,提供留在原处、先保存或原位查看等可行选择。
处理后必须反馈业务真实结果;未知结果提供核实入口。返回前应当核对权限与对象现状,保护用户已作的新修改,不自动重放产生外部影响的动作。跳到站内页面同样需要这些保护。
用户侧验证编辑半途处理通知再返回,输入、阅读位置和焦点可恢复;失败与待核实能够区分。
实现侧验证测试页面卸载、会话过期、原对象被修改或删除及敏感字段无法保存时的路径。
成对反例点击通知使草稿清空 ↔ 为恢复任务强制重播完整操作历史。
依据NR03;具体恢复机制为项目推导。
N4-3呈现范围与当前受众匹配
适用锁屏、投屏、外放、共享设备或包含敏感内容的通知。
要求必须按内容敏感性、账号权限、当前受众和平台设置裁决标题、正文、缩略图、摘要及播报内容。受众未知不得默认公开;应当使用有意义的脱敏提示,并提供经核验后查看详情的入口。通知摘要不得扩大原始事件的可见范围。
退出账号或撤权后,必须停止后续敏感呈现并清理应用可控制的预览;已投递至不可撤回媒介的内容不得宣称已删除。锁屏快捷操作仍须满足动作所需身份核验。
用户侧验证共享屏幕只显示“有一项待确认事项”等必要信息;获授权查看后能理解具体内容。
实现侧验证在锁屏、投屏、读屏外放、账号切换和受众未知下检查所有呈现表面及缓存。
成对反例正文脱敏但标题暴露客户姓名 ↔ 所有低敏提醒都强认证,用户无法快速了解状态。
依据NR05;受众与完整呈现面约束为项目推导。
N5-1同一事件共享提醒计划与停止条件
适用站内、推送、邮件、声音或多设备共同参与提醒时。
要求必须以账号、事件和轮次协调主通道、主动提醒目标、回退条件和停止条件。同一轮不得由多个通道或设备各自抢先打断;回执未知不得当作未送达并全面补发。跨端去重与升级共享同一事件身份与同一停止依据;未读本身不使事件变得更紧急。没有可靠协调能力时,必须采用预定单一主动目标或静默回退,不承诺“保证只响一次”。
内容刷新与传输重试不得增加提醒额度;重复提交须共用可防重标识。已处理、过期和关闭优先阻止新轮次。明确失败后可按已获允许的计划有限改投;跨设备已读与业务已处理必须分别同步。用户关闭当前通知后的自动再次提醒条件必须事先明确,未声明时停止该事件自动打断。本条管理的是通用通知策略的声明范围;工业报警、车辆警示等专门功能的可关闭范围与后援由各自领域的合同决定,不得以消费级静默默认覆盖已经承担的专门义务。
用户侧验证在一处处理后其他端不再新发催促;可回看记录仍在,未知状态如实表达。
实现侧验证测试并发调度、回执丢失、离线恢复、已关闭后的内容更新及多端先后处理;核对轮次账目和防重机制。
成对反例手机、电脑和邮件同时催同一事项 ↔ 为避免重复删除所有端的历史入口。
依据项目必要性推导;平台接受与实际呈现能力须分别验证。
N5-2用任务收益与长期负担评估通知
适用持续使用的通知类别。
要求必须按类别记录可观测请求、呈现、延后、关闭、失效及有效处理,并声明单位、统计主体、窗口、去重键、分母与缺失处理。不得把已读、已关闭或发送成功当作有效处理,不得仅以点击率证明价值;不可观测部分必须标为未知并报告覆盖率,不按零计入。
应当结合任务结果、错过截止、恢复成本与主观负担,检查同一用户的跨类别总负担。采集必须限制在目的所需的最小信息,规定保留范围与访问者;不得为了度量打扰持续收集屏幕内容。产品必须有负责人可停用无益类别或调整策略。
用户侧验证调整后用户更容易处理有用事项,并能表达打扰感;低点击的知悉类单独评价。
实现侧验证检查分母、观测覆盖、样本差异和缺失值;对比必须同时报告任务效果,不能只报告发送量下降。
成对反例点击率上升就加频率 ↔ 为减少通知量而隐去关键失败,让用户自行反复检查。
依据NR03;指标合同为项目推导。
N5-3突发事件不能突破总负担控制
适用批量事件、多个类别或多个生产者可能同时提醒时。
要求必须定义同一接收主体的突发处理策略,限制主动提醒的累计请求,明确统计范围、窗口、额度、排队上界及溢出处置。不得仅限制单事件轮次而放任大量不同事件同时打断;额度必须覆盖并发竞争,分拆类别或重试不得规避。
超出额度应当合并、静默或延后,保留重要待办入口;安静时段结束或断网恢复不得一次性释放所有过往提醒。关键例外必须列明独立依据与有限计划,不得成为无限额出口。用户明确安排的提醒应独立识别,多项同刻发生时仍须有事先说明的合并或排序方式,不应无声丢弃。
用户侧验证批量失败时能看见影响范围、最重要待办和完整列表,未经历连续横幅或铃声。
实现侧验证同时注入多个类别、大量独立事件和并发发送,检查总额预留、释放上界及重要事项是否仍可发现。
成对反例每条只提醒一次,却在一分钟内响百次 ↔ 全部丢弃,用户不知道批量任务失败。
依据项目必要性推导;不存在由引用资料证明的通用每日上限。
4. 从事件到处理的决策方法
4.1 先选行为,再选组件
| 情境 | 推荐处理 | 必须保留的用户能力 |
|---|---|---|
| 无有意义变化或重复事实 | 不新建提醒,更新已有记录 | 查看当前结果 |
| 当前页面操作成功/失败 | 就地状态反馈;错误附恢复方法 | 理解结果、继续或修正 |
| 有知悉价值,无即时行动 | 通知中心、静默条目或摘要 | 找到结果、调整订阅 |
| 需要决定,但有充足时间 | 任务收件箱与许可时段摘要 | 查看后果、延后或关闭 |
| 现在处理仍能避免损失 | 在许可范围内及时提醒 | 了解截止、采取行动或拒绝 |
| 需要业务确认才能继续 | 在对应事项呈现决定请求 | 明确同意、拒绝或退出;不回应不放行 |
| 已失效、已处理或当前无法核实 | 更新记录、核实或提供补救入口 | 理解现状;不执行旧动作 |
非侵入、普通提醒与例外穿透是呈现强度;立即和延后是时间安排。两者分别决定。对通知的权限不自动授予业务动作权限。
4.2 生命周期与裁决顺序
通知候选可进入静默记录、排队或请求投递。请求后按可取得的证据分别记录服务接受、设备接收、呈现;已读、关闭、延后是独立用户行为。业务对象单独维护待处理、已处理、失效等状态。某一阶段未知不抹去已知阶段,也不推断后续阶段。
每次候选释放依次核对:业务事实与账号权限 → 用户选择与平台门控 → 最晚有用时点 → 类别与聚合策略 → 跨类别预算及轮次 → 通道协调 → 当前受众与呈现。在提交处再次检查可能并发改变的停止条件。无可行投递时,返回静默、失效或能力不足的明确结果,不无限重试。
聚合窗、延后时点、业务截止、横幅停留、传输重试和负担统计窗口是不同的时间对象,必须分别管理。
4.3 一条完整旅程
用户在编辑报告时,后台导出需要重新选择保存位置:
- 事件登记为“导出待处理”,说明尚未生成文件;编辑中的用户不被抢焦点,任务入口出现可访问状态。
- 用户许可摘要,系统把同一导出的重复失败聚合;新失败不重置等待上界,预览保留“需要选择位置”。
- 用户延后,界面显示候选时间与原任务状态;若临时文件即将清除,确认前说明时间冲突。
- 用户点击通知,先核对当前账号、临时文件及权限,再打开处理界面;草稿与返回位置被保护。
- 保存位置提交后回执丢失,界面显示“正在核实导出结果”;先查真实结果,不盲目重复写入。
- 业务确认完成后停止其他端新提醒;用户返回报告,草稿保持;通知历史记录“已完成”,不由已读推断完成。
5. 验收矩阵
每项保留输入事实、用户设置、解析后的配置、预期、用户观察、实现证据与限制。判定为通过/失败/不适用并写理由;必须项失败不能用平均分抵消。
| 场景/故障注入 | 用户应观察到 | 实现证据 | 规则 |
|---|---|---|---|
| 普通完成消息在输入中到达 | 不抢焦点,稍后能找到结果 | 焦点记录、状态语义与记录入口 | N2-1、N4-1 |
| 权限拒绝、请求被取消 | 原任务继续,提醒能力如实显示 | 权限状态与订阅事实分离 | N2-3 |
| 关闭手机推送,保留独立邮件订阅 | 声明范围准确,不绕过也不误关 | 决定范围、实际通道裁决 | N2-2 |
| 持续更新、摘要生成失败 | 按时有可理解的列表,异常未丢 | 分组权限、释放上界、回退记录 | N3-1 |
| 延后超过截止、切换时区、重启 | 冲突先说明,安排可查可取消 | 时钟依据、唯一安排与重校验 | N3-3 |
| 离线补投时已处理/撤回 | 不再催促,旧按钮不生效 | 当前业务状态与提交校验 | N3-2 |
| 换账号、撤权、双击及提交回执丢失 | 不越权、不重复,未知可核实 | 动作绑定与并发防重 | N3-2 |
| 锁屏/投屏/受众未知 | 各种预览与播报一致保护内容 | 受众来源、脱敏与权限裁决 | N4-3 |
| 读屏、文字放大、限时操作 | 信息可感知,关键操作可到达 | 语义、焦点、时限机制 | N4-1 |
| 处理通知后返回编辑页 | 草稿与位置保留或事先获知损失 | 恢复点与最新对象校验 | N4-2 |
| 多端并发、回执未知、关闭后更新 | 不全面补发,不重启自动催促 | 同一轮次、目标协调、停止条件 | N5-1 |
| 多类别突发、恢复联网或结束勿扰 | 摘要可处理,未形成连响 | 累计预算与并发预留、溢出结果 | N5-3 |
| 呈现不可观测 | 报表不把缺失写成零 | 指标分母、覆盖率与未知值 | N5-2 |
| 简单、无需即时处理的正常事项 | 不被权限说明、确认和恢复步骤拖慢 | 最小路径与交互负担观察 | N1-1、N2-3、N4-2 |
文档检查只能证明规则、字段和引用的一致性。平台实际送达、辅助技术表现和用户净收益必须另做目标场景验证;少量通过样本不能证明通知必达或永不重复。
实施验收场景
以下场景把已有条款转成可复核的验收输入,不另设通用性能阈值。按产品适用能力选取,补充真实设备、用户、输入序列和证据;不适用记录原因,未执行不得记为通过。
| 条款 | 测试输入与异常 | 预期行为与失败判据 |
|---|---|---|
| N3-1 | 持续更新使尾随聚合窗口不断后移。 | 等待上界仍生效;释放时重核权限与事件时效。 |
| N2-2 | 用户关闭某类全通道提醒,队列仍有未发邮件。 | 在声明可控范围内拦截,独立订阅不被误删。 |
| N5-1 | 普通完成通知与工业报警并发。 | 按各自适用合同仲裁;去重不吞掉另一类真实风险。 |
每个场景分别核对配置的有效值、执行记录与用户可理解的结果。保留版本、目标、事件时点、失败范围和恢复结果;外部结果未知不填作成功或失败。
将已经作出的通知设计决定,转成可复用、可解析、可验证的呈现值与行为配置。
体验要求见设计规范,外部依据见来源与论据边界。填写字段不等于通知能力已经成立;每个行为承诺都需要真实机制与运行证据。
1. 类型、决策权与使用规则
1.1 四类内容分开保存
| 层 | 命名空间 | 内容 | 决策者与边界 |
|---|---|---|---|
| 视觉 Design Token | attention.visual.* | 颜色、字体、间距、形状与动效语义别名 | 设计系统维护者;主题只影响呈现 |
| 交互参数 | attention.interaction.* | 预览数量、等待时长、延后候选等 | 产品按任务选择;合法范围不代表最佳体验 |
| 策略配置 | attention.policy.* | 允许行为、能力依赖、冲突裁决与回退 | 产品和组织约束;用户选择只能在允许范围内生效 |
| 运行事实 | attention.runtime.* | 用户决定、事件、权限、调度、投递与结果 | 来自用户、平台和业务服务;不得用默认值制造 |
只有视觉 Token 子树使用 DTCG 的 $type、$value 和别名形式。行为参数使用本字典的项目类型,不伪造 DTCG policy、permission 等类型;组合配置整体不是 DTCG 文件。DTCG 格式说明是社区报告,不是 W3C Recommendation。
1.2 必填、缺省与空值
- 基础必需:启用本通知能力就必须明确,可以显式继承产品预设,不要求用户填写。
- 条件必需:仅在对应能力启用时填写;未启用时省略,不为了填表启用功能。
- 可选:有明确差异化需求时配置。
- 继承必须解析到确定值、来源与适用范围;未知字段、循环引用、类型冲突、非法枚举或缺少必要依赖必须报错,停用受影响能力。配置失败不得升级打断强度,不隐藏当前操作必需的在线反馈。
null不允许充当未知、关闭或无限;示例和字典不使用null。明确的关闭用枚举,未知用事实状态,能力不适用用字段省略及解析说明。- 行为参数的持续时长使用安全整数毫秒,名称以
Ms结尾;数量使用安全整数。视觉 duration 遵从 DTCG 的值与单位结构,不与行为参数混用。自然日窗口用Days并指定报告时区,不能直接换算成连续毫秒。数组去重,枚举区分大小写。 - 绝对时间使用带偏移的 RFC 3339 时间戳;本地重复时段必须另有 IANA 时区及跨日、夏令时规则。相对等待使用可靠的经过时长依据,业务截止使用可信业务时间;时钟不确定时先核对。
1.3 谁能改、何时生效
视觉主题不能修改策略,策略不能伪造用户同意。用户文字缩放与减少动态效果偏好必须进入实际呈现。多个有效硬限制取共同允许范围,不按“最后写入”放宽限制。
关闭、撤权及收紧策略立即约束尚未提交的提醒;设置同步未完成时显示待同步。放宽配置不复活已关闭或失效的队列,不重置已消耗轮次和用户选择。同一范围的用户决定以明确的新决定取代旧决定;重叠且无法确认取代关系时取更严格结果,并提供用户可理解的调整入口。
2. 视觉 Design Token
下表为语义别名,不是品牌色板。{product.*} 是接入占位路径,必须映射到产品真实存在且类型相容的 Token。所有值都只对应用可控制的呈现表面生效;系统模板不可定制的部分标为不适用,不把请求值报告为实际值。
| 完整名称 | DTCG 类型 | 引用值 | 设计意图与验收 |
|---|---|---|---|
attention.visual.title | typography | {product.typography.bodyStrong} | 对象与主状态;放大后不截断唯一行动依据 |
attention.visual.body | typography | {product.typography.body} | 变化、原因与下一步;支持用户文字设置 |
attention.visual.metadata | typography | {product.typography.caption} | 来源、时间、范围;必要信息不得弱化至难读 |
attention.visual.foreground | color | {product.color.textPrimary} | 正文前景;与实际背景组合验证对比度 |
attention.visual.secondaryForeground | color | {product.color.textSecondary} | 次级信息;不是降低可读性的许可 |
attention.visual.surface | color | {product.color.surfaceRaised} | 通知容器;验证明暗主题与高对比设置 |
attention.visual.border | color | {product.color.borderDefault} | 分组边界;不作为唯一状态信号 |
attention.visual.actionRequired | color | {product.color.statusWarning} | 需要处理的辅助色;必须同时有文字或图标语义 |
attention.visual.focusRing | color | {product.color.focusRing} | 可见焦点;描边厚度等由产品组件保证,颜色本身不保证可访问 |
attention.visual.inset | dimension | {product.space.containerInset} | 容器内边距;不缩小操作目标 |
attention.visual.groupGap | dimension | {product.space.group} | 摘要分组间距;不影响列表阅读与焦点可见 |
attention.visual.cornerRadius | dimension | {product.radius.surface} | 与产品容器形态一致 |
attention.visual.enterDuration | duration | {product.motion.duration.fast} | 入场过渡,不是停留时长;减少动态效果时用组件静态路径 |
对应规则:N3-1、N4-1。字号、对比度、操作目标、焦点与动效必须在实际组合中验证;Token 引用存在不等于这些性质已满足。视觉别名无法解析时使用产品已验证的基础组件,不以透明、零字号或隐藏作为兜底。
3. 交互参数
以下初值均为原型起点,待目标场景验证,不是研究阈值。产品可选择不同合法值,并记录选择理由和用户测试证据。
| 完整名称 | 级别/类型/单位 | 合法值与初值 | 含义、依赖与规则 |
|---|---|---|---|
attention.interaction.previewItems | 聚合时必需/integer/条 | ≥1;初值 3 | 限制初始预览,完整详情仍可达;N3-1 |
attention.interaction.digestWindowMs | 聚合时必需/integer/ms | >0;初值 300000 | 固定窗从首个有效候选计时;尾随窗从最后更新计时,并受独立上界约束;N3-1 |
attention.interaction.digestMaxWaitMs | 尾随窗时必需/integer/ms | ≥ digestWindowMs;无通用初值 | 从首个有效候选开始,后续到达不续期;固定窗不填;N3-1 |
attention.interaction.snoozeOptionsMs | 提供延后时必需/integer[]/ms | 正整数升序去重;初值 [900000, 3600000] | 候选菜单,不直接建立安排;空数组仅在另有自定义时间入口时合法;N3-3 |
attention.interaction.toastDurationMs | 应用自控自动消失提示时必需/integer/ms | >0;无通用初值 | 只控制瞬时呈现;必须有等价回看内容,不改变业务时限;持续或系统提示省略;N4-1 |
attention.interaction.reviewWindowDays | 开启负担复盘时必需/integer/自然日 | >0;初值 14 | 按报告时区的日边界取完整自然日;N5-2 |
不提供“通用最佳横幅秒数”“默认每日上限”或声音强度常量。应用无法控制系统音量、系统停留或实际送达时间时,不用 Token 虚构控制能力。
4. 策略配置
表内短键均加前缀 attention.policy.。合同引用是产品内可解析的结构化决策记录,不是跳到另一份规范的链接;每项必须有所有者、适用类别、实际实现入口与验收证据。
4.1 基础与能力配置
| 字段 | 级别/类型 | 取值与最小内容 | 缺省或失败行为 | 规则 |
|---|---|---|---|---|
categoryContract | 基础必需/ref | 见 §4.2;收益、接收人与触发依据 | 缺失不新发通知;仅保留有权保留的记录 | N1-1、N1-2 |
interruption | 基础必需/object | mode: record / defer / notify;后两者另含 level: passive / active / exception、platformMapRef;defer 还需 scheduleRef | 保守预设 {mode: record};record 不填 level 与平台映射 | N1-2、N2-1 |
preferenceDefaultScope | 有设置入口时必需/enum | event / category / global;仅是界面初始建议 | 初值 category;不能代表真实决定 | N2-2 |
permissionPrompt | 需系统权限时必需/object | trigger: contextual / userInitiated、rationaleRef、deniedFallbackRef | 缺失不自动请求权限;仍可显示能力状态 | N2-3 |
quietScheduleRef | 有安静时段时必需/ref | 时区、时段、跨日与夏令时处置、允许范围、结束时的积压处置 | 未填写不代表关闭系统勿扰;继续遵从实际用户与平台限制 | N2-1、N3-3 |
grouping | 聚合时必需/object | groupKey、clock: fixed / trailing、releaseConditionRef、summaryFallback: deterministicList;groupKey 含 accountId、taskId、visibilityScopeId | 缺依赖停用聚合,不升高提醒强度 | N3-1 |
expiryContract | 基础必需/ref | 有效性、可信时间、最晚有用时点、重核方式与历史保留 | 无依据不主动投递时效事件、不启用旧动作 | N3-2 |
snooze | 提供延后时必需/object | customTimeEnabled: boolean、scheduleContractRef;必须有候选或自定义入口 | 缺调度机制不显示可兑现的延后承诺 | N3-3 |
presentation | 呈现通知时必需/object | surface: platform / persistent / transient、announcement: none / polite / urgent、historyRef、contentContractRef | 缺失不显示敏感预览;当前状态仍以已验证组件反馈 | N4-1、N4-3 |
badge | 使用角标时必需/object | meaning: unread / pending / unsynced、scopeRef、clearConditionRef | 未定义不显示计数角标 | N4-1 |
resumeContract | 离开可编辑任务时必需/ref | 保存范围、返回入口、核对方式及无法保存时的保护路径 | 缺失只原位查看,或明确离开损失后由用户选择 | N4-2 |
channelPlan | mode 非 record 时必需/ref | 主目标、允许通道、防重范围、有限回退、未知回执处置 | 缺失不请求主动投递;单端可由本地计划实现 | N5-1 |
escalation | mode 非 record 时必需/object | maxRounds 正整数含首次;dismissal: stop / followDeclaredPlan;大于 1 时另需 minIntervalMs 正整数与 eligibilityRef | 初值 maxRounds=1、dismissal=stop;缺依赖不再次自动提醒 | N1-2、N5-1 |
burstControl | 多类别或突发主动提醒时必需/object | scope: accountAllCategories、windowMs 正整数、maxInterruptions 正整数、overflow: digest / record;digest 另需有限释放计划 | 无通用额度;未知预算或协调失效时静默,不重置账目 | N5-3 |
burdenReview | 持续使用类别时必需/object | metricsRef、reportTimeZone、owner、retentionRef;自然日窗口见交互参数 | 无呈现证据仅报告请求数和覆盖缺口 | N5-2 |
ref 是非空字符串,必须解析到下列最小合同。所有 *Ref 和 *Contract 都遵从相同解析要求;示例占位不算满足依赖。groupKey 可增加业务维度,不得移除账号和可见范围隔离。
announcement=none 仅表示该呈现不额外触发自动播报,不能隐藏必须感知的状态消息;若状态已由当前任务的可访问反馈或系统模板传达,应记录该承接路径并验证不会重复播报。platform 表面的呈现细节由系统决定,配置只表达请求与能力要求。
4.2 引用合同的最小结构
| 合同 | 必须明确的设计内容 |
|---|---|
| 类别 | 类别标识与用户名称、责任人、接收依据、触发与事件身份规则、知悉/行动收益、不提醒后果、允许通道、下一步;必要独立告知另列适用依据、关闭限度和失败处置 |
| 平台映射 | passive/active/exception 在目标平台的实际请求方式、能力检查、不能满足时的更保守结果;例外的资格与允许依据,禁止把所有异常统一映射最高等级 |
| 有效性 | 业务状态来源、有效期模式 deadline / whileRelevant;前者有截止与处理余量,后者有重新核验的相关性条件和可用期;两者都有终止条件,不使用无依据的无限 TTL |
| 调度/释放 | 起算点、许可时段、时区、可信时钟、最晚有用时点、最大等待、重新校验、接受/失败反馈、查询和取消入口;不存在可行时点时的静默或失效结果 |
| 权限请求说明与拒绝回退 | 具体用途、功能触发点、无权限时仍可用的任务和结果入口、需用户主动重新启用的路径 |
| 内容呈现 | 可显示的来源、对象与状态;内容敏感性与受众来源;锁屏/投屏/外放/未知受众的替代表达;名称、角色、状态语义与历史入口;有动作时嵌入动作合同 |
| 快捷动作 | 对象与当前内容绑定、查看/执行权限、所需确认、提交防重标识、结果核实与失败入口;不能仅写“调用按钮接口” |
| 返回原任务 | 允许保存的字段与保留期、原任务位置、返回入口、权限与对象重核;不能保存时的提前说明与可选路径 |
| 通道计划 | 账号与事件轮次范围、预定主动目标、可撤回范围、重复请求抑制、明确失败的有限回退;未知时不改投;无协调能力时单目标退化 |
| 自动升级资格 | 允许类别、新事实条件、最晚有用时点;已处理/失效/关闭/权限失效时停止;followDeclaredPlan 需明确关闭后仍提醒的有限条件 |
| 指标与保留 | 指标名称、单位、统计主体、去重键、分母、观测覆盖、缺失处理、自然日边界、保留期、访问者、复盘责任与停用入口 |
| 角标范围与清除 | 计数业务集合、数据新鲜度、与显示权限的交集、何种用户行为或业务事实使计数减少;数据未知不显示假零 |
5. 时序、配额与联动
5.1 解析顺序
- 验证配置类型与条件依赖;解析所有引用,保留决策来源和适用范围。
- 获取当前账号、业务状态、内容与有效性。已处理、失效、撤回或撤权先停止。
- 应用用户选择、系统权限与安静时段。未知不制造许可;例外资格不明时不得穿透。
- 计算聚合或延后候选时间,与最晚有用时点比较;无可行时点则静默或结束候选。
- 检查事件轮次及跨类别预算,在并发安全的提交点预留额度并确认主目标。
- 检查当前受众,生成相应内容;采用用户可访问设置和实际平台能力呈现。
- 按实际收到的证据更新投递事实;不从服务接受跳推呈现,更不推断用户已处理。
固定聚合候选:首个有效候选时点 + digestWindowMs。
尾随聚合候选:min(最后有效更新时点 + digestWindowMs, 首个有效候选时点 + digestMaxWaitMs)。
公式只产生候选,不授权打断。若许可时段不满足,至聚合上界结束本次聚合并生成静默摘要,或依已声明计划进入下一许可时点;后者必须有独立有限截止。不得重新开始聚合来无限续期。
最晚有用提醒时点由业务截止减去合理处理余量形成。余量由任务研究、可访问需求与实际链路决定,无通用默认;无法估计时不得承诺及时送达足以处理。
5.2 轮次与突发额度的含义
maxRounds计同一事件的自动逻辑提醒轮次,含首次;内容刷新与传输重试沿用轮次。单轮同一时刻只允许一个主动目标;确定失败后可沿既定有限计划改投,未知不改投。单轮内部重试与回退还必须受通道计划的尝试上限约束。- 用户明确延后保存为独立安排与触发原因,不消耗也不刷新自动轮次。多个用户安排同刻发生时按调度合同合并或排序,并保持每项可见。
maxInterruptions计窗口内同一账号跨类别、跨主动通道的自动主动提醒请求预留数,不是实际注意次数。自动 active 与 exception 均计入;用户明确安排与专项独立告知采用各自已声明的有界计划,不能默认为不限量。用户安排同刻冲突的合并或排序规则必须在安排时说明,不能因自动预算耗尽而静默丢弃;负担报表同时计入自动提醒与用户安排,不能把两者分账当作总负担已下降。- 预算在请求前预留。只有证据能证明没有任何主动呈现可能时才释放相应预留;接受或结果未知不得退款后继续催促。去重抑制的同一次传输重试不新增逻辑额度,但不得绕开尝试上限。
- 本字典的窗口为连续
windowMs滚动窗口,端点采用(now-windowMs, now],不是自然日。共享账目不可用时不得宣称全端总额已受控,采用静默或固定单目标的保守路径。
5.3 非法组合与可接受结果
| 输入/组合 | 判定与结果 |
|---|---|
mode=record 却填写 level=exception | 拒绝,记录模式没有平台打断等级 |
mode=defer 缺少 scheduleRef | 拒绝启用延后通知,不显示已设置 |
clock=trailing 缺少有限 digestMaxWaitMs | 拒绝,连续更新不能无限延长 |
| digestMaxWaitMs 小于 digestWindowMs | 拒绝,本字典要求上界不短于单次等待窗 |
| snoozeOptionsMs 为空且 customTimeEnabled=false | 拒绝,承诺延后却没有入口 |
surface=transient 缺少 historyRef 或 toastDurationMs | 拒绝;使用持续呈现或补齐依赖 |
| 需要处理的唯一入口放进自动消失提示 | 拒绝;必须另有持续、等价可达入口 |
announcement=urgent 用于普通进度 | 拒绝;选择 polite 并合并重复状态 |
| maxRounds 为 0、负数、小数;或大于 1 却无间隔/资格 | 拒绝;关闭用 mode=record,不用非法数值 |
| burstControl.overflow=digest,却无释放计划 | 拒绝;可明确选择 record |
| 用户关闭后平台状态仍允许 | 用户关闭生效;平台允许不恢复订阅 |
| 回执未知、预算余量未知、时钟不确定 | 分别保留未知;不无限补发、不补零、不承诺准时 |
| 无法保存草稿但通知要求导航 | 原位查看,或先说明损失并提供用户选择 |
6. 运行时事实契约
运行事实不写进主题文件。所有外部事实用信封表达:
| 信封字段 | 类型与约束 |
|---|---|
knowledge | known / unknown / stale / unavailable;known 表示当前可用,stale 表示有过期观察 |
source | 非空来源标识,指出用户、平台或业务机制 |
value | 仅 knowledge=known 时存在;不得给未知填乐观默认值 |
observedAt | 仅实际得到当前观察时填写;known 必需 |
lastKnown | stale 时必需,内含旧 value 与旧 observedAt;unknown/unavailable 可保留历史线索,不参与当前允许判断 |
attemptedAt | 可选,记录尝试获取事实的时间;不冒充观察时刻 |
事实是否足够新鲜由消费合同指定,过期则转 stale;本字典不要求平台提供无法观测的证据。事件标识与内部账目不是用户可调 Token。
| 完整名称 | 主要事实与来源 | 消费边界 |
|---|---|---|
attention.runtime.event | 业务服务:accountId、eventId、taskId、visibilityScopeId、contentFingerprint、businessState、有效性及最晚有用时点 | 对象内容变化重新校验;不自动产生新事件或新额度 |
attention.runtime.preference.decisions | 用户:decisionId、账号、事件/类别/全局选择器、通道与设备范围、effect、effectiveAt、来源;暂缓另含 until | effect 为 allow/disable/pause;全局仍限声明的可选类别,不凭默认开关生成决定 |
attention.runtime.preference.platformState | 系统:应用及通道权限、可用能力、实际设置 | 平台允许不等于用户订阅;未知不请求穿透 |
attention.runtime.taskContext | 当前任务:编辑、确认、阅读、已知任务边界与推断来源 | 未知不抢焦点,不凭停顿推断空闲 |
attention.runtime.audience | 当前呈现环境:锁屏、共享、投屏、音频路由与可见范围 | 信号不可靠时按未知处理;不保证自动识别所有受众 |
attention.runtime.schedule | 调度器:scheduleId、用户决定绑定、候选时点、时区、接受/失败/取消/触发及实际时间 | 请求与已接受分别保存;取消后回调必须被拦截 |
attention.runtime.delivery | 协调服务:eventId、roundId、attemptId、目标;requested/accepted/received/presented 各自的事实信封 | 不合并为互斥单状态;read 与 dismissed 独立事实;呈现不等于注意 |
attention.runtime.roundLedger | 提醒协调机制:事件自动已用轮次、原因、关闭处理、重试与回退账目 | 用户延后单列;刷新内容和重启不清零 |
attention.runtime.budget | 配额机制:统计范围、窗口、预留、已提交、明确释放及依据 | 并发一致,不把未知呈现当未消耗 |
attention.runtime.resume | 保存机制:原任务入口、允许保存的字段、位置与当前内容绑定 | 恢复前核验权限和新修改,不恢复敏感凭据 |
attention.runtime.burden | 最小遥测:分指标结果、分母、单位、窗口、覆盖率与未知量 | 不从打开或关闭推断业务完成 |
7. 可读配置示例
示例只说明字段组合,不证明平台、合同或组件已经实现。example.* 与 {product.*} 均为接入占位,使用前必须替换并解析。JSON 中 interaction、policy 的短键分别加本字典的完整前缀。以下数值都为原型值。
7.1 最小的仅记录类别
不启用外部通知、聚合、快捷动作或导航,不要求填完整通知表单。示例类别包含在当前页显示结果的入口与合法保留范围。
{
"policy": {
"categoryContract": "example.export-result",
"interruption": { "mode": "record" },
"expiryContract": "example.export-result-validity"
}
}
若该类别持续运行,还需配置 burdenReview 与相应观察窗;仅记录仍不得隐藏用户当前提交的必要反馈。
7.2 编辑时延后、通过静默摘要知悉
适用于有明确订阅、可恢复原任务、具有本地聚合与调度能力的产品。示例通道计划只允许单一通知目标、最多一次自动提醒,回执未知时不改投。passive 仍须检查真实平台权限,静默呈现不等于无条件获准。
{
"visualTokens": {
"attention": {
"visual": {
"title": {
"$type": "typography",
"$value": "{product.typography.bodyStrong}"
},
"foreground": {
"$type": "color",
"$value": "{product.color.textPrimary}"
},
"surface": {
"$type": "color",
"$value": "{product.color.surfaceRaised}"
}
}
}
},
"interaction": {
"previewItems": 3,
"digestWindowMs": 300000,
"snoozeOptionsMs": [900000, 3600000],
"reviewWindowDays": 14
},
"policy": {
"categoryContract": "example.export-complete",
"interruption": {
"mode": "defer",
"level": "passive",
"platformMapRef": "example.platform-notification-levels",
"scheduleRef": "example.allowed-digest-time"
},
"preferenceDefaultScope": "category",
"permissionPrompt": {
"trigger": "contextual",
"rationaleRef": "example.subscribe-export-results",
"deniedFallbackRef": "example.in-app-results"
},
"quietScheduleRef": "example.user-quiet-hours",
"grouping": {
"groupKey": ["accountId", "taskId", "visibilityScopeId"],
"clock": "fixed",
"releaseConditionRef": "example.digest-release",
"summaryFallback": "deterministicList"
},
"expiryContract": "example.export-validity",
"snooze": {
"customTimeEnabled": false,
"scheduleContractRef": "example.snooze-schedule"
},
"presentation": {
"surface": "platform",
"announcement": "polite",
"historyRef": "example.notification-history",
"contentContractRef": "example.redacted-export-content"
},
"resumeContract": "example.draft-return",
"channelPlan": "example.single-target-notification-plan",
"escalation": { "maxRounds": 1, "dismissal": "stop" },
"burdenReview": {
"metricsRef": "example.notification-outcomes",
"reportTimeZone": "Asia/Shanghai",
"owner": "example.product-team",
"retentionRef": "example.minimal-metrics-retention"
}
}
}
announcement 是语义要求,不是保证系统读屏按指定方式播报的 API 开关;系统表面必须验证模板实际行为。不满足目标语义时补应用内可访问状态与历史,不伪报能力。
7.3 有限主动提醒的决策示例
对“用户订阅的预约需要确认”作如下独立决定,不直接把普通完成类别调成紧急类别:
| 决定 | 示例取值 | 使用前的证据 |
|---|---|---|
| 投递与呈现 | mode=notify,level=active | 允许类别、真实订阅、平台映射、最晚有用时点 |
| 自动轮次 | maxRounds=1,dismissal=stop | 首次已用账目跨端一致;关闭后不新发 |
| 突发控制 | accountAllCategories,windowMs=600000,maxInterruptions=2,overflow=record | 原型假设;账号全部主动类别共享预留机制,有重要待办入口 |
| 用户延后 | 采用自定义时点 | 与截止冲突先说明,安排持久、可取消、不重置自动额度 |
| 例外穿透 | 不启用 | active 不承诺突破勿扰;确需 exception 时重新核验资格与用户允许 |
“十分钟两次”仅展示窗口与额度如何表达,不是推荐给所有产品的默认值;用户安排、专项告知与被静默的事项须按各自声明的有界计划处理。
8. 验证与固定底线
| 验证层 | 必须完成的检查 |
|---|---|
| 字段与引用 | 类型正确、所有必要引用可解析、无循环;JSON 示例可解析;原型数值有明确标签 |
| 联动 | §5.3 每个非法组合有明确拒绝结果;缺能力不会悄悄扩大权限或升级打断 |
| 时间 | 起算点、释放上界、时区、截止余量和自然日窗口分别正确;0、负数、小数时长被拒绝 |
| 范围与账目 | 关闭范围准确,单轮目标协调,累计额度覆盖并发,重启/刷新不清零 |
| 内容与操作 | 锁屏、投屏、读屏、长文本、当前账号与快捷动作权限分别核验 |
| 用户理解 | 能知道为何收到、何时再提醒、设置是否生效、如何回看和返回原任务 |
| 真实效果 | 记录目标设备与运行环境,分别验证请求、实际呈现与用户收益,不把字典检查当成产品验收 |
以下底线没有可关闭 Token:未回应不等于允许;打开、已读或关闭不等于业务完成;通知入口不减少动作授权;投递未知不等于未送达;产品紧急标签不产生平台资格;视觉主题不授予权限;超过期限不强行补响;任何数值配置都不能替代真实防重、调度与恢复能力。
配置交付与校验
预览条数限制初始可见条目,不删除完整记录、未解决异常或各自截止。静默记录、主动投递和专门告警分开解析;不得通过改类别绕过用户选择,也不得把其他领域的保护义务机械套入普通通知。示例不提供通用日额度。
随附的可执行样例只覆盖 attention.interaction.previewItems,其余字段按本字典逐项校验;未覆盖不等于不适用或已通过。样例是所选字段的格式正反例,不是可直接启用全部能力的产品预设。完整产品交付另外包含适用性、依赖、证据、执行映射及进行中操作的生效边界。
字段名、类型或含义变更时更新引用方与验收样例;仅修改说明且不改变合法行为的,保留已有字段名。调用方读取解析后的有效配置,不由 UI 控件、动画或模型文字反推权限、测量或完成事实。参见对应场景。
参考来源
服务于设计规范和Design Token 与配置字典。资料核验日期:2026-09-16。
如何使用来源
下列来源按实际取得的相关正文核验,不以搜索摘要代替阅读,也不声称完成全站审计。标准正文、解释性文档、平台实现参考和历史研究各有适用边界。规则的强制性来自本项目对用户承诺的必要性推导,不由引用数量决定。
本专题的规则编号、事件合同、提醒轮次、总负担预算和参数初值都是项目设计,不是来源提出的统一体系。采用平台能力前仍需在实际目标环境核验;外部材料不证明本项目配置已经被实现或用户收益已经成立。
NR01 — Android 通知通道
- 来源:Create and manage notification channels,平台官方文档。
- 阅读范围:创建通道、重要性、用户修改、读取实际设置与设置入口。
- 支持:通道使用户能按类别控制通知;应用不能随意改写已建立通道的重要性与提醒行为,用户仍能修改实际设置。
- 落点:N1-1、N2-2;类别定义、权限状态与平台映射。
- 限制:不能推出所有平台采用相同等级;通道存在不证明用户订阅了某业务类别,也不证明通知有价值。
NR02 — Apple 通知打断等级与 Focus
- 来源:Send communication and Time Sensitive notifications,Apple 官方技术讲解。
- 阅读范围:官方文字稿的摘要、Focus、Passive/Active/Time Sensitive/Critical 及允许条件。
- 支持:静默呈现、普通提醒与穿透具有不同条件;时间敏感需要即时注意的理由,Critical 有平台资格限制,用户可以关闭相关提醒。
- 落点:N1-1、N1-2;投递时间与呈现等级分开、例外不得仅靠产品标签启用。
- 限制:这是历史机制说明,不保证所有当前设备行为;本字典的枚举不是平台枚举的直接复制,须单独建立映射。
NR03 — 任务中断与恢复的实地研究
- 来源:Iqbal、Horvitz,Disruption and Recovery of Computing Tasks: Field Study, Analysis, and Directions,CHI 2007,作者机构托管论文。
- 阅读范围:论文摘要、任务恢复观察及 Design Implications 相关段落;未复算统计。
- 支持:中断后的恢复是独立成本,原任务的可见线索、窗口与工作位置值得在设计中保护。
- 落点:N2-1、N4-2、N5-2;返回原任务和恢复成本评价。
- 限制:历史桌面研究不证明移动端或所有人群的最优提醒时间,不能推导统一聚合时长、恢复秒数或每日上限。
NR04 — WCAG 标准正文
- 来源:Web Content Accessibility Guidelines,W3C Recommendation。
- 阅读范围:打断控制、时间限制、重新认证后的连续性、焦点可见与不被遮挡、状态消息的相关成功准则和级别。
- 支持:4.1.3 状态消息为 AA;2.2.4 打断控制为 AAA;2.2.1 时间可调整为 A。这些要求的适用条件与级别不能混用。
- 落点:N2-1、N4-1;焦点、状态语义、回看与时间限制。
- 限制:本专题不是完整 WCAG 符合性清单,不把 AAA 单项说成 AA 全部产品必须项,也不直接认证原生通知。项目可以提出更严格的体验底线,但须标明是项目推导。
NR05 — Android 通知呈现、更新与移除
- 来源:Create a notification,平台官方文档。
- 阅读范围:快捷回复与紧急呈现、锁屏可见性、替代内容、使用同一 ID 更新通知、仅首次提醒与移除机制。
- 支持:平台提供内容保护与生命周期工具;同一 ID 可更新通知,但已被关闭的通知再次更新可能创建新通知。因此内容刷新与用户关闭需要产品协调。
- 落点:N3-1、N3-2、N4-3、N5-1;内容合同、停止条件与通道计划。
- 限制:平台移除不证明业务完成;其锁屏能力不自动解决投屏、外放和全部受众判断。快捷动作的授权与防重是项目必要性推导。
NR06 — Design Tokens 格式
- 来源:Design Tokens Format Module,Design Tokens Community Group 文档。
- 阅读范围:文档状态、类型、值与别名表达。
- 支持:可用类型化的值与引用表达可交换的设计 Token;文档明确其不是 W3C 标准或 W3C Recommendation。
- 落点:字典的视觉 Token 子树、类型相容与引用解析。
- 限制:不替产品定义授权、用户选择、紧急性、排队策略和投递事实;整体项目配置不因使用
$value就符合 DTCG。未执行完整格式符合性测试。
NR07 — 通知权限请求时机
- 来源:Notification runtime permission,Android 官方文档。
- 阅读范围:允许/拒绝/关闭请求、实际权限状态和情境化请求最佳实践。
- 支持:权限选择具有不同结果;可在用户已理解具体功能价值时请求通知权限,未作选择不自动改变为允许。
- 落点:N2-3;permissionPrompt、平台权限事实与拒绝回退。
- 限制:不把某平台示例的启动次数当跨平台默认阈值,不要求所有产品额外增加一层权限说明弹窗,也不将平台豁免扩大为产品通用许可。
NR08 — 状态消息的可访问语义
- 来源:Understanding SC 4.1.3: Status Messages,WAI 解释性文档。
- 阅读范围:准则、意图、状态消息范围与上下文改变的区别。
- 支持:符合状态消息定义的动态信息应能由辅助技术在不移动焦点的情况下呈现;不是所有新增内容都需要自动播报。
- 落点:N4-1;announcement 的语义选择与普通更新合并。
- 限制:属于解释性材料,不新增标准义务,也不保证每种平台与读屏组合表现一致。
NR09 — Alert 的焦点与频率
- 来源:Alert Pattern,WAI-ARIA Authoring Practices Guide。
- 阅读范围:About This Pattern、焦点、自动消失与打断频率说明。
- 支持:alert 不应夺取键盘焦点;短暂消失及频繁打断可能使通知难以使用。必须阻断工作流的情形与普通 alert 不同。
- 落点:N2-1、N4-1;非侵入反馈、持续入口与播报节制。
- 限制:是模式参考,不等于一套通知系统已通过无障碍检查,也不提供统一展示秒数。
NR10 — 时间可调整与例外
- 来源:Understanding SC 2.2.1: Timing Adjustable,WAI 解释性文档。
- 阅读范围:准则、关闭/调整/延长路径、实时与必要性例外、适用意图。
- 支持:内容自行设置的时间限制需提供适用的时间控制路径,或满足准则列出的例外;阅读和操作需要足够时间。
- 落点:N4-1;区分提示停留、操作机会与业务截止。
- 限制:历史里能读到通知不代表限时操作已经可访问;不能借“平台限制”或“重要业务”笼统豁免所有时限。本专题不复刻完整符合性判据,实施时核对适用原文。
项目推导与待验证事项
| 项目设计 | 依据类型 | 必须补充的产品证据 |
|---|---|---|
| 最晚有用提醒时点与处理余量 | 从“通知仍能帮助行动”的承诺推导 | 实际任务耗时、可访问需求、链路延迟与漏达影响 |
| 轮次、并发防重与回执未知处理 | 从“有限提醒且不重复操作”的承诺推导 | 多端并发、重复请求、回执丢失和提交后崩溃测试 |
| 用户延后、取消与时区处理 | 从“稍后安排可兑现”的承诺推导 | 调度接受、跨时区、夏令时、重启和取消竞态测试 |
| 跨类别突发预算与积压释放 | 从“总打扰可控”的承诺推导 | 多生产者并发、重要事项发现率、实际负担反馈 |
| 三条预览、五分钟聚合、延后候选、十四个自然日观察 | 原型示例值 | 具体任务周期、屏幕容量、时效和样本覆盖;外部来源不证明这些值最优 |
| 配置覆盖、依赖与保守回退 | 为使设计决定可解释而制定的项目合同 | 消费者解析、缺失配置和非法组合测试 |
没有执行设备送达实验、用户研究、完整无障碍审计或生产统计复算。来源核验、文档一致性检查、机制测试与用户效果验证是不同证据,不互相替代。