通知(设计基础知识)

注意

此设计指南是为 Windows 7 创建的,尚未针对较新版本的 Windows 进行更新。 大部分指南原则上仍然适用,但演示和示例并不反映我们 当前的设计指南

通知通过从通知区域中的图标短暂显示气球,通知用户与当前用户活动无关的事件。 通知可能是由用户操作或重大系统事件引起的,也可能提供来自 Microsoft Windows 或应用程序的潜在有用信息。

通知中的信息 有用且相关,但绝不是关键信息。 因此,通知不需要立即用户操作,用户可以随意忽略它们。

标题中带有“新更新”的气球的屏幕截图

典型通知。

在 Windows Vista 及更高版本中,通知的显示持续时间固定为 9 秒。 当用户处于非活动状态或屏幕保护程序正在运行时,不会立即显示通知。 在这些时间,Windows 会自动将通知排队,并在用户恢复常规活动时显示已排队的通知。 因此,无需执行任何操作即可处理这些特殊情况。

开发 人员: 可以使用 SHQueryUserNotificationState API 确定用户何时处于活动状态。

注意: 单独的文章中提供了与 通知区域任务栏气球 相关的指南。

这是正确的用户界面吗?

在决定之前,请考虑以下问题:

  • 这些信息是否是用户与应用程序交互的直接直接结果? 如果是这样,请直接在应用程序中显示此同步信息,而不是使用 对话框消息框气球就地 UI。 通知仅用于异步信息。

Windows 安全警报的屏幕截图

在此示例中,Windows 防火墙例外对话框显示为用户交互的直接结果。 此处的通知不合适。

  • 信息是否仅在用户主动使用应用程序时才相关? 如果是,请在应用程序 的状态栏或其他状态 区域中显示信息。

Outlook 状态栏的屏幕截图

在此示例中,Outlook 在其状态栏上显示其连接和同步状态。

  • 信息是否是快速变化的、连续的实时信息? 示例包括处理进度、股票报价和运动分数。 如果是这样,请不要使用通知,因为它们不适合快速变化的信息。
  • 这些信息有用且相关吗? 用户是否可能会更改其行为或避免因收到信息而带来的不便? 如果没有,则不显示信息或将其放入状态窗口或日志文件中。
  • 信息是否至关重要? 是否需要立即采取措施? 如果是这样,请使用需要注意且不能轻易忽略的接口(如模式对话框或消息框)显示信息。 如果程序未处于活动状态,可以通过 闪烁程序的任务栏按钮 三次并使其突出显示,直到程序处于活动状态,来引起人们对关键信息的注意。
  • 主要目标用户是 IT 专业人员吗? 如果是,请使用其他反馈机制,例如 日志文件 条目或电子邮件。 IT 专业人员强烈建议日志文件用于非关键信息。 此外,服务器通常是远程管理的,通常无需任何用户登录即可运行,因此通知无效。

设计概念

促进良好用户体验的有效通知包括:

  • 异步。 该事件不是用户当前与 Microsoft Windows 或应用程序交互的直接直接结果。
  • 有用。 由于通知的结果,用户很有可能执行任务或更改其行为。
  • 相关。 通知显示用户关注和不知道的有用信息。
  • 不重要。 通知不是模式通知,不需要用户交互,因此用户可以随意忽略它们。
  • 可行。 对于建议执行操作的通知,该操作是通过单击通知启动的。 但是,操作始终可以推迟。
  • 适当呈现。 通知的呈现 (持续时间、频率、文本、图标和交互性) 与其情况匹配。
  • 不烦人! 轻轻地通知用户某个事件和纠缠用户之间有一条细线。

不幸的是,有太多的烦人,不适当,无用的,不相关的通知在那里。 请考虑以下来自 Windows XP 耻辱大厅的通知:

“浏览 windows xp”通知的屏幕截图

“未使用的图标”通知的屏幕截图

“添加 .net passport”通知的屏幕截图

在这些示例中,Windows XP 表面上试图帮助用户完成其初始配置。 但是,这些通知在有用后经常弹出,因此它们只是未经请求的功能广告。

必须维护用户流

理想情况下,沉浸于工作的用户根本看不到你的通知。 相反,仅当通知流已中断时,他们才会看到通知。

在《流:最佳体验的心理》一文中,Mihaly Csikszentmihalyi说,用户进入流动状态时,他们完全被活动所吸收,在此期间,他们失去了时间感,并有极大的满足感。

有效的通知通过提供有用的相关信息来帮助用户保持其流,这些信息很容易被忽略。 通知以低调的外围方式呈现,不需要交互。

不要假设通知是 无模式 的 ,它们不会是令人讨厌的中断。 通知不要求用户注意,但它们当然会请求通知。 可以通过以下方式中断用户流:

  • 显示用户不关心的通知。
  • 太频繁地显示通知。
  • 在单个通知足够时使用多个通知。
  • 显示通知时使用声音。

在 Windows 7 中,用户可以最终控制通知。 如果用户发现某个程序的通知太烦人,他们可以选择禁止显示来自该程序的所有通知。 通过提供有用的相关信息并遵循这些准则,确保用户不会向你的程序执行此操作。

通知必须可忽略

通知不需要立即用户操作,用户可以随意忽略它们。

开发人员和设计人员通常希望以用户无法忽略的方式呈现通知。 此目标完全破坏了通知的主要优势,因为它会破坏用户的流。 如果用户被通知分心,或者觉得有义务阅读通知,则通知设计失败。

如果你担心用户忽略你的通知,请考虑以下事项:

  • 如果正确使用通知,并且它们不需要立即用户操作,则让用户选择忽略通知是设计使然。 不要更改此更改。
  • 如果事件需要立即用户操作,请使用用户无法忽略的替代用户界面 (UI) 。 请参阅这是正确的用户界面吗?作为替代项。

在适用的情况下使用渐进式升级

如果通知用于用户最初可以安全忽略的事件,但最终必须解决该事件,则当情况变得严重时,应使用替代 UI。 此方法称为渐进式升级。

例如,Windows 电源管理系统最初只需更改其通知区域图标即可指示电池电量不足。

显示电池状态的六个图标的屏幕截图

在这些示例中,Windows 电源管理使用通知区域图标通知用户电池电量逐渐降低。

当电池电量变低时,Windows 会使用通知警告用户电池电量不足。

电池电量不足通知的屏幕截图

在此示例中,Windows 电源管理使用通知来告知用户其电池电量较弱。

当用户仍具有多个选项时,将显示此通知。 用户可以插入电源、更改电源选项、结束工作并关闭计算机,或忽略通知并继续工作。 随着电池电量持续耗尽,通知的文本和图标反映了额外的紧急性。 但是,一旦电池电量过低,用户必须立即采取行动,Windows 电源管理会使用 模式 消息框通知用户。

严重电池电量不足警告的屏幕截图

在此示例中,Windows 电源管理使用模式消息框通知用户电池电量严重不足。

如果你只做三件事...

  1. 仅当确实需要时才使用通知。 显示通知时,可能会打断用户,甚至惹恼用户。 确保中断合理。
  2. 对不需要立即用户操作的非关键事件或情况使用通知。 对于需要立即用户操作的关键事件或情况,请使用替代 UI (,例如模式对话框) 。
  3. 如果使用通知,请使其成为良好的用户体验。 不要尝试强制用户查看你的通知。 如果用户沉浸于他们的工作中,以至于看不到你的通知,则你的设计很好。

使用模式

通知有多种使用模式:

Label
操作成功
当用户启动的异步操作成功完成时通知用户。
正确:
显示成功更新的气球的屏幕截图
在此示例中,Windows 更新在其计算机成功更新时通知用户。
不正确:
显示文件检查完成的气球的屏幕截图
在此示例中,Microsoft Outlook 在数据文件检查完成时通知用户。 用户现在应该做什么? 为什么要警告用户成功完成?
显示时间: 异步任务完成时。 仅当用户可能正在等待完成或最近失败后,才通知用户成功操作。
显示操作方法: 使用实时选项,以便在用户运行全屏应用程序或未主动使用其计算机时,这些通知不会排队。
显示频率: 一旦。
烦恼因素: 如果由于最近的失败而未预期成功,则为低,成功是在严重或高度异常失败之后,因此用户需要其他反馈,或者用户正在等待完成;如果不是,则为高。
选择: 通过显示图标 (或在执行操作时更改通知区域中的现有图标) ,“按需”提供反馈;删除图标 (,或者在操作完成后还原上一个图标) 。
操作失败
当用户启动的异步操作失败时通知用户。
正确:
安装失败通知的屏幕截图
在此示例中,Windows 激活会通知用户失败。
不正确:
更新失败通知的屏幕截图
在此示例中,Microsoft Outlook 用于通知用户他们不太可能关注的故障。
显示时间: 异步任务失败时。
显示频率: 一旦。
烦恼因素: 如果有用且相关,则为低;如果问题会立即自行解决,则为 high,否则用户将不在乎。
选择: 如果用户必须立即解决故障,请使用模式对话框。
非关键系统事件
通知用户可以安全忽略的重要系统事件或状态,至少暂时忽略。
电池电量不足通知的屏幕截图
在此示例中,Windows 警告用户电池电量不足,但仍有足够时间才能采取措施。
显示时间: 当事件发生且用户处于活动状态时,或条件继续存在时。 如果由问题导致,请在问题解决后立即删除当前显示的通知。 与操作通知一样,仅当用户可能正在等待事件或在最近失败后通知用户成功的系统事件。
显示频率: 事件首次发生时一次。 如果这是用户需要解决的问题导致,请每天重新显示一次。
烦恼因素: 低,只要通知不显示太频繁。
选择: 如果用户最终必须解决问题,请使用渐进式升级,方法是在必须解决问题时最终显示模式对话框。
可选用户任务
通知用户他们应执行的异步任务。 无论是可选任务还是必需任务,都可以安全地推迟该任务。
可用更新通知的屏幕截图
在此示例中,Windows 更新通知用户新的安全更新。
显示时间: 确定需要执行任务并且用户处于活动状态时。
显示频率: 每天一次,最多三次。
烦恼因素: 低,只要用户认为任务很重要,并且通知不经常显示。
选择: 如果用户最终必须执行该任务,请使用渐进式升级,方法是在任务变为必需状态时最终显示模式对话框。
FYI
通知用户可能有用的相关信息。 如果信息是可选的,并且用户选择加入,则可以通知用户具有边际相关性的信息。
正确:
新电子邮件通知的屏幕截图
在此示例中,收到新电子邮件时,用户会收到通知。
正确:
已登录联系人通知的屏幕截图
在此示例中,当联系人联机并选择接收此可选信息时,用户会收到通知。
不正确:
用于提高性能的通知的屏幕截图
在此示例中,仅当用户已安装高速 USB 端口时,此信息才有用。 否则,用户不太可能执行任何不同的操作。
显示时间: 触发事件发生时。
显示操作方法: 使用实时选项,以便在用户运行全屏应用程序或未主动使用其计算机时,这些通知不会排队。
显示频率: 一旦。
烦恼因素: 中到高,具体取决于用户对有用性和相关性的看法。 如果用户感兴趣的概率较低,则不建议使用。
选择: 不通知用户。
功能播发
通知用户新安装、未使用的系统或应用程序功能。
请勿将通知用于功能广告! 请改用另一种方法来使功能可发现,例如:
  • 将功能设计为在需要该功能的上下文中更易于发现。
  • 不要执行任何特殊操作,让用户自行发现该功能。
不正确:
新功能通知的屏幕截图
不要将通知用于功能播发。

准则

常规

  • 根据使用情况选择通知模式。 有关每种使用模式的说明,请参阅上表。
  • 在初始 Windows 体验期间,请勿使用任何通知。 为了改进其第一次体验,Windows 7 会取消显示在使用前几个小时内显示的所有通知。 假设用户看不到任何此类通知,请设计程序。

通知内容

  • 除非在以下情况下,否则不要通知成功的操作:

    • 安全性。 用户认为安全操作最为重要,因此请通知用户安全操作成功。
    • 最近失败。 如果用户之前立即失败,则不会将成功操作视为理所当然,因此请在操作最近失败时通知用户成功。
    • 防止不便。 这样做时报告成功的操作可能会避免对用户产生不便。 因此,在以意外方式执行成功操作时通知用户,例如,当操作时间较长或完成时间早于预期或晚于预期时。
  • 在其他情况下,要么不对成功提供反馈,要么“按需”提供反馈。 假设用户执行了授予的成功操作。 可以通过在执行操作时显示图标 (或更改通知区域中的现有图标) ,并在操作完成时删除该图标 (或还原上一个图标) 来按需提供反馈。

  • 对于 FYI 模式, 如果用户可以继续正常工作,或者由于通知而不太可能执行任何不同操作,请不要发出通知。

    不正确:

    用于提高性能的通知的屏幕截图

    在此示例中,仅当用户已安装端口时,此信息才有用。 否则,用户不太可能执行任何不同操作。

    • 例外: 如果信息是可选的,并且用户选择加入,则可以通知用户存在可疑相关性的信息。

      正确:

      联系人已登录通知的屏幕截图

      在此示例中,当联系人联机并选择接收此可选信息时,用户会收到通知。

  • 对于非关键系统事件和 FYI 模式, 请对单个事件使用完整通知。 不要显示多个部分部分。

    不正确:

    “找到新硬件”通知的屏幕截图

    这些示例仅显示 Windows XP 在用户附加特定 USB 键盘时显示的八个通知中的四个,每个通知都以增量方式提供更多信息。

    正确:

    安装状态通知的屏幕截图

    在此示例中,连接 USB 键盘会导致两个完整通知。

何时通知

  • 根据其设计模式显示通知:
模式 何时通知
操作成功
完成异步任务后。 仅当用户可能等待完成或最近失败后,才会通知用户成功操作。
操作失败
异步任务失败时。
非关键系统事件
发生事件且用户处于活动状态,或者条件继续存在时。 如果此问题是由问题造成的,请在问题解决后立即删除当前显示的通知。
可选用户任务
确定需要执行任务且用户处于活动状态时。
FYI
触发事件发生时。
  • 对于操作失败模式, 如果问题可能在几秒钟内自行更正,请将失败通知延迟适当的时间。 如果问题自行更正,则不报告任何内容。 仅在经过足够时间后通知故障是明显的。 如果报告太早,用户很可能不会注意到报告的问题,但他们会注意到不必要的通知。

不正确:

无网络连接通知的屏幕截图

当紧跟在后面时:

连接成功通知的屏幕截图

在此示例中,在 Windows Vista 中,没有无线连接的通知为时过早,因为它通常紧跟连接良好的通知。

  • 对于操作成功和 FYI 模式, 请使用实时选项,以便在 用户运行全屏应用程序或未主动使用其计算机时,过时通知不会排队。
  • 对于非关键系统事件模式, 不要通过将与已知事件(例如用户登录)关联的惊人事件来创造通知风暴的可能性。 相反,请将事件绑定到事件之后的某个时间段。 例如,可以在用户登录五分钟后提醒用户注册产品。

通知的时长

在 Windows Vista 及更高版本中,通知的显示持续时间固定为 9 秒。

通知的频率

  • 通知的显示次数取决于其设计模式:
模式 通知的频率
操作成功
一次。
操作失败
一次。
非关键系统事件
事件首次发生时一次。 如果这是用户需要解决的问题,则每天重新显示一次。
可选用户任务
每天一次,最多三次。
FYI
一次。
  • 对于可选用户任务,不要尝试通过不断显示通知来纠缠用户提交。 如果需要该任务,请立即显示模式对话框,而不是使用通知。

通知升级

  • 不要假设用户会看到你的通知。 在以下情况下,用户将看不到它们:
    • 他们沉浸在自己的工作中。
    • 他们没有注意。
    • 他们远离计算机。
    • 他们正在运行全屏应用程序。
    • 其管理员已关闭其计算机的所有通知。
  • 如果用户最终必须执行某种操作,请使用渐进式升级 来显示用户无法忽略的替代 UI。

交互

  • 在出现时,使通知可单击:
    • 用户应执行操作。 单击通知应显示一个窗口,用户可以在其中执行操作。 此方法是操作失败和可选用户任务设计模式的首选。
    • 用户可能想要查看详细信息。 单击通知应显示一个窗口,用户可以在其中查看其他信息。
  • 当用户单击执行操作时,始终显示一个窗口。 无需单击即可直接执行操作。
  • 单击以显示详细信息应始终显示详细信息。 不要只是重新编写通知中已有的信息。

图标

  • 对于操作失败模式,请使用标准错误图标。
  • 对于非关键系统事件模式,请使用标准警告图标。
  • 对于其他模式,请使用显示与主题相关或建议对象的图标,例如安全防护罩或用于供电的电池。
  • 如果目标用户能够识别它们,则使用基于应用程序或公司品牌的图标,并且没有更好的替代方法。
  • 对于渐进式升级, 请考虑使用具有逐渐更突出外观的图标,因为情况变得更加紧急。
  • 不要使用标准信息图标。 通知是信息,不言而喻。
  • 在以下情况下,请考虑使用 (32x32 像素的大图标) :
    • 用户将快速理解图标而不是文本。
    • 与标准 16x16 像素图标相比,大图标更清晰、更有效地传达其含义。
    • 图标使用 Aero 样式

“重要消息”通知的屏幕截图

在此示例中,用户可以通过一眼大图标快速理解通知的性质。

通知队列

注意: 每当通知无法立即显示时,例如显示另一个通知、用户正在运行全屏应用程序或用户未主动使用计算机时,通知都会排队。 实时通知在队列中仅保留 60 秒。

  • 对于操作成功和 FYI 模式,请使用实时选项 ,以便通知不会长时间排队。 仅当可以立即显示这些通知时,这些通知才具有值。
  • 当已排队的通知不再相关时,请将其删除。
  • 开发 人员: 为此,可以在 uFlags 中设置NIF_INFO标志并将 szInfo 设置为空字符串。 如果通知不再位于队列中,则这样做没有坏处。

系统集成

  • 如果应用程序在运行时通知 区域中 并不总是有图标,请在 导致通知的异步任务或事件期间临时显示图标。

文本

标题文本

  • 使用标题文本,简要总结了以清晰、简单、简洁、特定语言向用户传达的最重要信息。 用户应能够以最少的工作量快速了解通知信息的用途。
  • 使用不带结束标点符号的文本片段或完整句子。
  • 使用句式大写。
  • 使用英语) (不超过 48 个字符以适应本地化。 标题的最大长度为 63 个字符,但翻译英语文本时,必须允许扩展 30%。

正文文本

  • 使用提供说明的正文文本 (而不重复标题) 中的信息,还可以选择提供通知的特定详细信息,并让用户知道哪些操作可用。

  • 使用带有结尾标点符号的完整句子。

  • 使用句式大写。

  • 使用英语) (不超过 200 个字符以适应本地化。 正文文本的最大长度为 255 个字符,但翻译英语文本时,必须允许扩展 30%。

  • 在正文文本中包含基本信息,例如特定对象名称。 (示例:用户名、文件名或 URL。) 用户不必打开另一个窗口来查找此类信息。

  • 在对象名称两边放置双引号。

    • 例外: 在以下情况下不要使用引号:
      • 对象名称始终使用 标题样式大写,例如与用户名一起使用。
      • 对象名称与冒号的偏移量 (示例:打印机名称:我的打印机) 。
      • 可以从上下文中轻松确定对象名称。
  • 如果必须将对象名称截断为固定的最大大小以适应本地化,请使用省略号来指示截断。

    包含缩短名称的消息的屏幕截图

    在此示例中,使用省略号截断对象名称。

  • 如果通知可操作,请使用以下措辞:

    • 如果用户可以单击通知来执行操作:

      < 基本信息的简要说明>

      <可选详细信息>

      单击以 <执行某些操作>。

      消息的屏幕截图:“单击以查看进度”

      在此示例中,用户可以单击 来执行操作。

    • 如果用户可以单击通知来查看详细信息:

      < 基本信息的简要说明>

      <可选详细信息>

      有关详细信息,请单击 。

      消息的屏幕截图:单击获取详细信息

      在此示例中,用户可以单击 以获取详细信息。

  • 不要说用户“必须”在通知中执行操作。 通知适用于用户可以自由忽略的非关键信息。 如果用户确实必须执行某个操作,请不要使用通知。

  • 如果用户应执行某个操作,请明确说明重要性。

  • 对于操作失败和非关键系统事件模式, 请用普通语言描述问题。

    不正确:

    长而复杂的消息的屏幕截图

    在此示例中,使用过于技术化但非特定语言来描述问题。

    正确:

    清晰、简洁的消息的屏幕截图

    在此示例中,该问题以纯语言描述。

  • 以与目标用户相关的方式描述事件。 如果用户在收到通知后执行任务或更改其行为的可能性合理,则通知是相关的。 通常可以通过根据用户目标而不是技术问题描述通知来实现此目的。

文档

引用通知时:

  • 使用确切的标题文本,包括其大写。
  • 将组件称为通知,而不是气球或警报。
  • 若要描述用户交互,请使用单击。
  • 如果可能,请使用粗体文本设置标题文本的格式。 否则,仅在需要时将标题置于引号中以防止混淆。

示例:当 “关键更新已准备好安装 ”通知出现时,请单击通知以启动该过程。

引用通知区域时:

  • 将通知区域称为通知区域,而不是系统托盘。