通知

在用户未使用您的应用时,通知可向他们及时提供有关应用的简短相关信息。

Android OS 会控制通知的许多方面,但您可以控制其他方面。实现通知时,请按以下步骤操作:

  1. 了解通知的构成。
  2. 为您的用例选择通知类型。
  3. 设置与您选择的通知类型相符的通知类别。

要点总结

  • 考虑通知的用途:您为何向用户发出提醒?
  • 确定通知权限模式,考虑通知对应用的重要性,以及在用户体验历程中的何处请求权限。
  • 选择通知模板。
  • 创建通知内容:
    • 标题文本应简明扼要地总结通知内容。
    • 内容文本应预览通知。
    • 图片内容(如果适用于应用的内容)。
    • 媒体模板的媒体关键海报图片和元数据。
  • 通过文本按钮、输入操作或媒体控件,根据通知内容提供操作,让用户清楚地了解可以对通知执行哪些操作。
  • 添加应用图标并设置应用图标背景颜色。
  • 为通知设置渠道和类别。这样,系统和用户就可以自定义他们收到的通知,并提供优先级行为。
  • 如果您的应用可能会同时传送多条通知,请对通知进行分组。
  • 如需查看通知模板,请参阅 Figma 上的 Android 界面工具包

通知详解

通知的设计旨在让用户能够轻松浏览和使用通知中最重要的元素。这些元素包括:

  • 主要内容:这是通知中最醒目的元素。次要信息(例如时间戳)较小,并会整合在主要内容上方。
  • 人物:如果通知涉及人物,头像应与其他内容区分开来。
  • 操作:用户可以通过点按指示器图标来展开通知。操作会显示文本标签,并采用单独的背景颜色和位置。
图 1:收起的通知

通知标题和内容

收起时,通知会显示应用图标、标题文本、时间戳、展开指示器和内容文本。它还可以选择显示大图标。

图 2:通知标题区域

1 应用图标:应用图标是应用身份的二维表示形式。它会以单色显示在状态栏中。如果您的应用会发送各种各样的通知,不妨考虑将应用图标替换为符号,以便区分不同类型的通知。如需了解详情,请参阅应用图标颜色

2 标题文本:通知或来源的简短标题,例如用户的账号名称。内容是通知中最醒目的元素。

3 时间戳:表示通知发送的时间,例如错过的来电时间。

4 展开指示器:指示通知是处于收起状态还是展开状态。

5 内容文本:证明信息。

6 大图标(可选):您可以添加图片,以便以有意义的方式强化通知,例如在消息中添加发件人的头像。

应用图标颜色

从 Android 12(API 级别 31)开始,系统会根据您在应用中设置的通知颜色派生图标颜色。如果应用未设置颜色,则系统会使用系统主题颜色。之前,该颜色为灰色。

图 3:最终的样式化应用图标颜色

对于大多数样式,只有当通知是前台服务通知时,系统才会应用此颜色。不过,对于附加了媒体会话的 MediaStyleDecoratedMediaCustomViewStyle 通知,则没有此类要求。

以下代码段展示了如何应用图标颜色。

val notification = Notification.Builder()
    .setColor(Color.GREEN)
    .setColorized(true)
    .setSmallIcon(R.drawable.app_icon)
    .setStyle(Notification.DecoratedCustomViewStyle())
    .build()

通知操作

图 4:通知操作区域

1 文本按钮操作

2 填充的操作按钮

3 建议的回复

4“回复”文本字段

从 Android 7.0(API 级别 24)开始,系统会显示不带图标的操作,以容纳更多文本。为了适应 Android Wear 设备和搭载 Android 6.0(API 级别 23)及更低版本的设备,您的应用仍必须提供图标。

展开视图

您可以使用展开式视图向用户显示更多信息,而无需离开通知。

展开后,通知最多可以提供以下任意三种操作:

  • 建议的回复
  • 强调的操作(药丸形按钮)
  • 标准文本操作
添加与点按通知正文的行为相同的文本操作。
让用户有机会与通知互动。Google 时钟应用会显示正在运行的计时器,但允许用户直接在通知中暂停或增加一分钟。

在通知中启用输入功能

您可以通过添加“回复”操作,让用户直接在通知中输入内容。此模式适用于输入少量文本,例如回复短信或记下简短备注。

对于长篇幅的输入内容,请将用户引导至您的应用,为他们提供更多空间来查看和修改文本。

对于即时通讯应用,我们建议在用户发送回复后让通知保持显示状态,并等到对话暂停后再自动关闭通知。

图 5:用户点按“回复”后直接在 Android 信息中回复,而无需离开通知

根据您的用例选择通知类型

Google 在其 Android 应用中使用以下通知模板。您可以根据自己的应用对这些模板进行一定程度的自定义。

如需查看通知模板,请查看 Figma 上的 Android 界面套件。

标准模板

标准模板适用于大多数通知,可包含简洁的文字、大图标(如适用)和操作。

图 6:标准通知模板

大文本模板

大文本模板非常适合显示较长的文本块。这样,用户在展开通知后就可以预览更多文本。

图 7:大号文本模板,带有大号图标选项

大图模板

大图模板适用于包含图片的通知。收起后,通知会显示图片的大图标缩略图。展开后,通知会显示更大的预览。

图 8:大图模板

进度模板

进度模板适用于需要较长时间才能完成的用户发起的活动。展开后,使用此模板的通知会显示一个进度条,还包含一个“取消”操作,以便用户终止此 activity。(不可取消的 activity 不保证会发送通知。)

图 9:进度模板

媒体模板

媒体模板旨在让用户通过应用控制当前播放的媒体。

  • 收起后,通知最多可以显示三项操作。大图标可以显示相关图片,例如专辑封面。
  • 展开后,通知最多可显示 5 项带有较大图片的操作,或 6 项不带图片的操作。通知的背景和其他元素会自动继承图片的颜色。
图 10:媒体模板

消息模板

MessagingStyle 模板专为实时通信而设计。使用此模板的通知在展开后,用户可以在通知中回复消息。

图 11:消息模板

通话模板

使用 CallStyle 模板生成大屏幕通知,其中包含大图片附件并指示来电或出行。

图 12:调用模板

实时动态模板

实时更新会提供重要更新的摘要,以便用户无需打开应用即可跟踪进度。用户可以暂时关闭实时更新通知,或将其降级为标准通知。实时更新通知应遵循通知原则,提供简洁、及时且相关的信息。

图 13:实时动态模板
针对用户发起的有限或可跟踪体验使用实时更新。
如果通知没有明确的结束时间,请使用实时更新。

在以下情况下,实时更新功能无法正常运行:

  • 如果通知中的信息来自多个应用。
  • 如果通知旨在向用户提供建议。
  • 如果需要使用量身定制的视觉效果、动画或独特的数据结构来传达信息。

通知权限

虽然通知应尽可能相关且及时,但大多数通知都属于非豁免通知,也就是说,用户必须同意接收来自应用的通知。

有一个例外情况:从 Android 13(API 级别 33)开始,管理通话的媒体会话和应用无需征求用户同意。如果用户已开启通知,现有应用也可能符合条件。如需了解详情,请参阅豁免

我们强烈建议您的应用在设置中提供通知选项,以便用户更新其通知偏好设置

提示用户选择接收非豁免通知

对于非豁免通知,请提示用户选择是否接收通知。明确选择接收通知的用户可能会觉得通知更实用且干扰性更低。

图 14:针对非豁免通知请求用户同意

等待一段时间再显示通知对话框提示:

  • 说明通知带来的好处,以及不向通知授予权限的后果。
  • 提供上下文界面,将通知与其功能或影响范围相关联。此界面可以采用任何形式,以便在您的应用中进行最佳集成:例如费用卡片、底部动作条或初始配置屏幕。所有这些内容都应可关闭。
  • 如果用户关闭了界面,请勿显示通知权限对话框。

从 Android 13 开始,系统可以重新提示用户授予通知权限。

必需通知

前台服务用于执行可被用户注意到但用户未直接与应用互动的操作。这些服务需要显示状态栏通知,让用户知道您的应用正在前台执行任务并消耗系统资源。

图 15:健身应用前台服务通知示例

由于这些进程会消耗电量,并且可能还会消耗流量,因此您的应用必须通过显示不可关闭的通知来告知用户。用户无法关闭通知,因此您必须提供一种操作,供用户停止服务。

以下示例展示了健身应用发送的通知。用户已开始一项正在进行的锻炼时段,该时段会实例化用于跟踪锻炼时段的前台服务。应用会显示通知,指明正在跟踪步行,并提供查看锻炼的选项。

何时不应使用通知

请勿将通知用于以下任何用例:

  • 用于交叉推介或宣传其他产品(Play 商店严禁此类行为)
  • 如果用户从未打开您的应用
  • 作为与用户沟通的主要方式
  • 鼓励用户返回应用,但不提供任何直接价值(例如,“好久不见!”)
  • 针对请求为您的应用评分的请求
  • 对于不需要用户参与的操作,例如同步信息
  • 播报应用可能会在无需用户互动的情况下从中恢复的错误状态
  • 节日或生日祝福
以通知的形式发送节日或生日祝福。
在用户执行任务时打断用户,目的只是询问您是否表现出色。

行为

请注意以下通知行为以及如何在特定情境中处理这些行为。

通知到达

收到通知时,Android 会将其添加到通知抽屉中。通知可能会执行以下任一操作,具体取决于您设置的参数和设备的当前状态:

  • 发出提示音或让手机振动。
  • 在状态栏中显示图标;这通常是应用图标,但如果您有多种类型的通知,请使用能反映通知用途的符号。
  • 以提醒式通知的形式显示,并在当前屏幕上显示预览,以吸引用户的注意力。

一如既往,用户可以选择更改您设置的通知行为。

图 16:通知到达

1 状态栏中的通知指示器,表示抽屉式通知栏中有通知。

2 通知“窥视”当前屏幕,以便在用户执行任务时吸引其注意力。

通知抽屉

Android 中的通知抽屉通常会按倒序显示通知,调整会受到以下条件的影响:

  • 应用声明的通知优先级或重要性
  • 通知最近是否通过提示音或振动提醒了用户
  • 通知是否与任何人相关,这些人是不是已加星标的联系人
  • 通知是否代表正在进行的重要活动,例如正在进行的通话或音乐播放
  • Android OS 会通过添加强调或取消强调来更改列表顶部和底部的某些通知的外观,这有助于用户浏览内容

处理过时通知

通知抽屉旨在向用户显示与当前时间相关的信息。如果之前的通知已过时(即不再相关),请将其关闭,以免用户看到。

图 17:刚刚到达的文字显示在抽屉式通知栏顶部,而有关添加照片的优先级较低的通知显示在底部

应用图标标志表示有新通知

在搭载 Android 8.0(API 级别 26)及更高版本的设备上支持的启动器中,应用图标会显示通知圆点,以指示应用有新通知与其关联。默认情况下,这些圆点会显示在支持它们的启动器应用中,您的应用无需执行任何操作。您还可以停用和限制标记。

图 18:应用图标上的通知圆点,表示应用有新通知与其相关联

用户可以通过通知执行的操作

通知可让用户执行以下任一操作:

  • 导航到目的地:如需导航,用户可以点按通知。如果通知显示在锁定的屏幕上,用户需要点按两次该通知,然后输入 PIN 码、图案或密码。

    当用户点按通知时,您的应用必须显示与该通知直接相关的界面,并让用户能够立即执行操作。例如,如果通知显示玩家在双人游戏中轮到自己操作,那么点按通知后,玩家应能直接进入该游戏。

  • 查看通知的展开视图:标题中会显示展开指示器。用户可以点按指示器或向下滑动通知正文以展开通知。

    图 19:展开式通知
  • 关闭通知(如果允许):用户可以通过向左或向右滑动来关闭通知。

表示后台正在进行的进程(例如音乐播放)的持续性通知可能无法通过滑动关闭。

  • 让浮动通知进入暂停状态:用户可以向上滑动浮动通知,系统将禁止在 1 分钟内显示来自该事件的其他通知。

  • 以后控制类似通知:用户可以通过以下方式访问通知控制功能:

    • 轻触并按住个别通知
    • 向左或向右滑动通知,然后点按“设置”图标

显示的控件因 Android 版本和应用是否有通知渠道而异(从 Android 8.0 开始)。

对多条通知进行分组

对于生成同一类型的多个通知的应用,Android 提供了通知分组功能,以免用户感到信息过多。

您的应用可以根据以下层次结构显示多条通知。

  • 父级通知会显示其子通知的摘要。
  • 如果用户展开父级通知,Android 会显示所有子通知。
  • 用户可以展开子通知以显示其全部内容。

Android 会显示不含重复标题信息的子通知。例如,如果子通知与其父通知具有相同的应用图标,则子通知的标题不会包含图标。

子通知必须单独显示时也能让人理解,因为系统可能会在收到通知时将其显示在组之外。

图 20:分组通知的收起和展开视图。

设置

频道

从 Android 8.0(API 级别 26)开始,所有通知都必须分配到相应的渠道。对于每个渠道,您可以设置应用于其中的所有通知的视觉和听觉行为。用户可以更改这些设置,并确定您应用中的哪些通知渠道可以具有干扰性或可见。

如需详细了解如何实现此功能,请参阅创建和管理通知渠道

选择重要性时,应考虑用户的时间和注意力。如果不重要的通知伪装成紧急通知,可能会造成不必要的提醒。

重要性 行为 用法 示例
HIGH 发出提示音并显示在屏幕上 用户必须立即了解或采取行动的时效性信息 短信、闹钟、来电
DEFAULT 发出提示音 用户应尽快看到的信息,但不会干扰用户正在执行的操作 路况提醒、任务提醒
LOW 无声 不符合其他重要性级别要求的通知渠道 用户订阅的新内容、社交网络邀请
MIN 不发出提示音,也不在屏幕上弹出通知 可等待或与用户没有特别相关的重要信息 附近的地点、天气、推广内容

预定义类别

无论您是否使用渠道,请为每个单独的通知分配最合适的预定义类别。Android 可能会使用这些信息来制定排名和过滤决策。

类别 说明
CATEGORY_CALL 来电(语音或视频)或类似的同步通信请求
CATEGORY_MESSAGE 传入的私信(短信、即时消息等)
CATEGORY_EMAIL 异步群发消息(电子邮件)
CATEGORY_EVENT 日历活动
CATEGORY_PROMO 促销或广告
CATEGORY_ALARM 闹铃或定时器
CATEGORY_PROGRESS 长时间运行的后台操作的进度
CATEGORY_SOCIAL 社交网络或共享更新
CATEGORY_ERROR 后台操作或身份验证状态中的错误
CATEGORY_TRANSPORT 媒体传输播放控制
CATEGORY_SYSTEM 系统或设备状态更新。保留给系统使用。
CATEGORY_SERVICE 正在运行的后台服务的指示
CATEGORY_RECOMMENDATION 针对某个事件及时提出的具体建议。例如,新闻应用可能会向用户推荐他/她接下来可能想阅读的新闻报道。
CATEGORY_STATUS 有关设备或上下文状态的持续信息

锁定屏幕通知

如果用户选择在屏幕锁定时显示通知,这些通知可能会隐藏您的应用标记为敏感的任何内容。Android 会评估每条通知的可见性级别,以确定可以安全显示的内容。

为锁定屏幕上的内容设置敏感度级别

用户隐私至关重要,因此请注意,锁定屏幕上可以显示不同级别的通知。对于您创建的每条通知,您都必须将公开范围设置为公开、不公开或机密

  • 公开通知会在安全锁定屏幕上完整显示。
  • 秘密通知会被隐藏。
  • 私密通知介于两者之间:它们只会显示基本信息,包括发布通知的应用的名称和图标。您可以选择显示不会泄露个人信息的文字(例如 2 new messages),而不是隐藏的常规内容。

在以下示例中,在用户选择在锁屏上显示此类信息后,Gmail 和 Google 相册应用的锁屏通知会显示所有内容。

图 21:具有不同灵敏度级别的锁定屏幕。

1 锁定屏幕上显示的所有通知内容

2 在锁定屏幕上隐藏敏感通知内容

样式

文字简明扼要

Android 会将内容标题截断为一行(即使处于展开状态也是如此)。

优质的内容标题应遵循以下准则:

  • 不超过 30 个字符
  • 包含最重要的信息
  • 避免使用变量(除非它们包含数字或简短文本字符串,或者前面有文本)
  • 不包括已显示在标题中的应用名称
在内容标题中显示应用名称,这与标题区域重复,并且使用了可用字符。
在内容标题中显示最重要的信息。

优质的内容文本应遵循以下准则:

  • 避免超出 40 个字符的上限
  • 避免重复内容标题中的内容

大图标

在图片能够有意义地强化通知内容的用例中,请使用大图标。以下是一些示例:

  • 他人的通信内容,例如发送消息的图片
  • 内容的来源(如果与发送通知的应用不同),例如用户订阅的 YouTube 频道的徽标
  • 与通知相关的有意义的符号,例如表示驾车方向的箭头符号

显示人物时,大图标必须为圆形,但在所有其他情况下都必须为方形。

使用大图标进行品牌宣传。
使用大图标以有意义的方式强化通知内容,例如显示消息通知中附加的人员照片。

Android 版本更新

Android 通知系统界面以及与通知相关的 API 在不断发展。如需查看这些变更的列表,请参阅通知兼容性

平台注意事项

Wear

如果用户有配对的 Wear OS 设备,那么您的所有通知都会自动显示在已配对设备上,包括展开式详情和操作按钮。如需了解详情,请参阅 Wear 上的通知设计页面