通知 (设计基础知识)

备注

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

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

通知中的信息很有用 且相关,但永远不会重要。 因此,通知不需要立即执行用户操作,用户可以随意忽略它们。

标题中带"新更新"的气球屏幕截图

典型通知。

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

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

注意: 与通知 区域、任务栏和气球 相关的准则在单独的文章中提供。

这是正确的用户界面吗?

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

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

Windows 安全警报的屏幕截图

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

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

Outlook 状态栏的屏幕截图

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

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

设计概念

提升良好用户体验的有效通知包括:

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

遗憾的是,存在太多令人麻烦、不恰当、无用、不相关的通知。 请考虑以下来自 Windows XP Hall of Notifications 的通知:

"tour windows xp"通知的屏幕截图

"未使用的图标"通知的屏幕截图

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

在这些示例中,Windows XP 试图帮助用户进行初始配置。 但是,这些通知在有用后弹出得过于频繁,因此它们只是未经请求的功能播发。

必须维护用户流

理想情况下,沉浸于工作中的用户完全看不到你的通知。相反,只有在流已中断时,他们才能看到通知。

在 Flow:最佳体验的实现者 Mihaly Csikszentmihalyi 中,Mihaly Csikszentmihalyi 表示,当用户完全投入活动时进入流状态,在此期间,他们失去时间感,并且对非常满意。

有效通知提供可以轻松忽略的有用相关信息,帮助用户维护其流。 通知以低键、外围方式呈现,无需交互。

不要假设如果通知是无 模式的 ,则它们不能是令人心动的中断。 通知不要求用户关注,但他们当然会请求通知。 可以通过:

  • 显示用户不关心的通知。
  • 过于频繁显示通知。
  • 当单个通知足够时,使用多个通知。
  • 显示通知时使用声音。

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

通知必须可忽略

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

开发人员和设计人员通常希望以用户无法忽略的方式显示其通知。 此目标完全破坏通知的主要优势,因为它会破坏用户的流。 如果用户被你的通知分散了注意力,或者觉得需要阅读它们,则通知设计将失败。

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

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

在适用时使用渐进式升级

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

例如,Windows系统最初通过更改其通知区域图标来指示电池电量不足。

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

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

随着电池电量降低,Windows通知警告用户电池电源不足。

低电池电量通知的屏幕截图

此示例中,Windows使用通知来告知用户其电池电量弱。

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

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

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

如果只执行三项操作 .。。

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

使用模式

通知有多种使用模式:

Label
操作成功
当异步,用户启动的操作成功完成时通知用户。
正确:
Screen shot of balloon showing successful updates
在此示例中,Windows 更新在用户的计算机已成功更新时通知用户。
不正确:
Screen shot of balloon showing file check complete
在此示例中,Microsoft Outlook 在数据文件检查完成时通知用户。 现在用户应该做什么? 为什么要警告用户成功完成?
显示时间: 异步任务完成后。 仅当用户可能正在等待完成时,或在最近失败后才通知用户操作。
显示方式: 使用实时选项,以便在用户运行全屏应用程序或不主动使用其计算机时,这些通知不会排队。
显示频率: 曾经.
干扰因素: 如果因最近的故障而不预期成功,则 "成功" 为 "严重" 或 "严重" 故障后,用户需要其他反馈,或者用户正在等待完成;如果不是,则为高。
备选方案: 执行操作时,通过在通知区域中显示图标 (或更改现有图标) 提供反馈;删除图标 (或在操作完成时还原上一个图标) 。
操作失败
当异步,用户启动的操作失败时通知用户。
正确:
Screen shot of notification of failure to install
在此示例中,Windows 激活向用户通知失败。
不正确:
Screen shot of notification of failure to update
在此示例中,Microsoft Outlook 用于向用户通知他们不太可能关心的问题。
显示时间: 异步任务失败时。
显示频率: 曾经.
干扰因素: 如果有用且相关,则为低;如果问题会立即解决本身,或者用户不关心,则为高。
备选方案: 如果用户必须立即解决故障,请使用模式对话框。
非关键系统事件
通知用户重要的系统事件或状态(至少暂时会被忽略)。
Screen shot of notification of low battery power
在此示例中,Windows 向用户发出电池电量不足的警告,但仍有足够的时间来执行操作。
显示时间: 当发生事件并且用户处于活动状态时,或某个条件持续存在时。 如果出现问题,请在解决问题后立即删除当前显示的通知。 对于操作通知,仅当用户可能正在等待事件时,或在最近失败后才通知用户成功的系统事件。
显示频率: 事件第一次发生的时间。 如果用户需要解决的问题导致这种情况,请一天重新显示一次。
干扰因素: 如果通知不太频繁显示,则为低。
备选方案: 如果用户最终必须解决问题,请在解决方案变为必需时最终显示模式对话框,使用渐进式升级。
可选用户任务
通知用户应执行的异步任务。 无论是可选的还是必需的,都可以安全地推迟该任务。
Screen shot of notification of available updates
在此示例中,Windows 更新向用户通知新的安全更新。
显示时间: 当确定需要执行任务并且用户处于活动状态时。
显示频率: 一天一次,最多三次。
干扰因素: 低,前提是用户认为任务非常重要,并且通知不会过于频繁地显示。
备选方案: 如果用户最终必须执行该任务,则在任务变为必需时最终显示模式对话框,使用渐进式升级。
仅供参考
通知用户可能有用的相关信息。 如果用户是可选的,并且用户选择加入,则可以通知用户边际相关性信息。
正确:
Screen shot of notification of new e-mail message
在此示例中,当收到新电子邮件时,会通知用户。
正确:
Screen shot of notification of contact signed in
在此示例中,当联系人进入联机状态并选择接收此可选信息时,用户会收到通知。
不正确:
Screen shot of notification for faster performance
在此示例中,仅当用户已安装高速 USB 端口时,此信息才有用。 否则,用户可能不会执行任何其他操作。
显示时间: 触发事件发生的时间。
显示方式: 使用实时选项,以便在用户运行全屏应用程序或不主动使用其计算机时,这些通知不会排队。
显示频率: 曾经.
干扰因素: 从中到高,具体取决于用户对有用性和相关性的看法。 如果用户感兴趣的可能性较低,则不推荐这样做。
备选方案: 不通知用户。
功能播发
向用户通知新安装的、未使用的系统或应用程序功能。
不要将通知用于功能公告! 而是使用另一种方法来使此功能可被发现,如:
  • 设计功能,使其在需要时更易于在上下文中找到。
  • 不要执行任何特殊操作,让用户自行发现该功能。
不正确:
Screen shot of notification of new features
不要将通知用于功能播发。

指南

常规

  • 基于其使用情况选择通知模式。 有关每个使用模式的说明,请参阅上表。
  • 初始 Windows 体验期间不要使用任何通知。 若要改善第一次体验,Windows 7 禁止显示在使用前几个小时内显示的所有通知。 设计你的程序,假设用户看不到任何此类通知。

要通知的内容

  • 不要通知操作成功,但以下情况除外:

    • 安全性。 用户认为安全操作的重要性最高,因此通知用户安全操作成功。
    • 最近失败。 如果用户之前未成功完成操作,用户不会对其进行成功的操作,因此,当操作最近发生故障时,请通知用户成功。
    • 避免不便。 执行此操作时报告成功的操作,这可能会避免带来不便用户。 因此,以意外的方式(例如,当操作长时间或完成时间比预期更长或更晚)执行操作时,通知用户。
  • 在其他情况下,不为成功提供反馈,或"按需"提供反馈。 假设用户对授予的操作成功。 可以通过在操作执行期间显示图标 (或更改通知区域中的现有图标) ,以及删除图标 (或在操作完成时还原上一个图标) 来按需提供反馈。

  • 对于 FYI 模式,如果用户可以继续正常工作或不太可能执行与通知结果不同的任何操作,请不要 收到通知。

    不正确:

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

    此示例中,只有在用户已安装端口时,此信息才有用。 否则,用户不太可能执行与它的结果不同的操作。

    • 异常 :如果可选且 用户选择加入,可以通知用户有关相关性问题的信息。

      正确:

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

      此示例在联系人联机时通知用户,他们选择接收此可选信息。

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

    不正确:

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

    这些示例只显示了用户连接特定 USB 键盘时 Windows XP 显示的八个通知中的四个,每个通知以增量方式显示更多信息。

    正确:

    安装状态通知的屏幕截图

    此示例中,附加 USB 键盘会导致两个完整的通知。

何时通知

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

不正确:

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

紧跟在后跟:

连接成功通知的屏幕截图

此示例中,Windows Vista 中,没有无线连接的通知提前,因为它通常紧跟在良好的连接通知之后。

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

通知时间

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

通知的频繁性

  • 显示通知的时间取决于其设计模式:
模式 通知的频繁性
操作成功
一次。
操作失败
一次。
非关键系统事件
第一次发生事件时发生一次。 如果此问题由用户需要解决的问题导致,请每天重新播放一次。
可选用户任务
一天一次,最多三次。
FYI
一次。
  • 对于可选用户任务,请勿尝试通过不断显示通知来吸引用户进行提交。 如果需要任务,请立即显示模式对话框,而不是使用通知。

通知升级

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

交互

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

图标

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

"重要消息" 通知的屏幕截图

在此示例中,用户可以快速理解通知的性质,并一目了然地看到大图标。

通知队列

注意: 通知会在不能立即显示时排队,例如当显示另一个通知时,用户运行的是全屏应用程序,或用户未主动使用该计算机。 实时通知在队列中仅保留了60秒。

  • 对于操作成功和仅供参考模式,请使用实时选项 ,使通知不会排队等候。 这些通知仅在可以立即显示时才具有值。
  • 删除不再相关的排队通知。
  • 开发人员: 为此,可以 _ 在 uFlags 中设置 "" 信息标志,并将 szInfo 设置为空字符串。 如果通知不再在队列中,则执行此操作不会产生任何危害。

系统集成

  • 如果你的应用程序在运行时在 通知区域 中没有始终显示一个图标,则会在 引发通知的异步任务或事件中暂时显示一个图标。

文本

标题文本

  • 使用标题文本,简要总结了使用明文、简洁、简洁、特定语言与用户进行通信所需的最重要信息。 用户应能够以最小的工作量快速理解通知信息的用途。
  • 使用文本片段或完成句子,不使用结束标点。
  • 使用句式大写。
  • 使用英语) 不超过48个字符,以适应本地化 (。 标题的最大长度为63个字符,但在翻译英语文本时,必须允许30% 的扩展。

正文文本

  • 使用提供说明 (的正文文本,而不重复标题) 中的信息,并根据需要提供有关通知的特定详细信息,并且还允许用户了解可用的操作。

  • 使用带有结束标点的完整句子。

  • 使用句式大写。

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

  • 在正文文本中包含重要信息,如特定的对象名称。 (示例:用户名、文件名或 Url。 ) 用户不需要打开另一个窗口即可找到此类信息。

  • 用双引号将对象名称括起来。

    • 异常: 以下情况不使用引号:
      • 对象名称始终使用 标题样式的大写,例如用户名。
      • 对象名称偏移一个冒号 (例如: Printer name: My printer) 。
      • 可以从上下文轻松确定对象名称。
  • 如果必须将对象名称截断为固定的最大大小以适应本地化,请使用省略号指示截断。

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

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

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

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

      < 基本信息的简要说明>

      单击 "到" 。

      消息屏幕截图: "单击查看进度"

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

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

      < 基本信息的简要说明>

      单击以获取详细信息。

      消息屏幕截图:单击以了解详细信息

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

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

  • 如果用户应执行某个操作,请将重要性设为清晰。

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

    不正确:

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

    在此示例中,使用太技术性但 unspecific 的语言描述了问题。

    正确:

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

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

  • 以与目标用户相关的方式描述事件。 如果有合理的机会,用户将执行任务或更改其行为作为通知的结果,则会出现通知。 通常可以通过以用户目标而不是技术问题的方式描述通知来实现此目的。

文档

引用通知时:

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

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

当引用通知区域时:

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