通知

<img <img <="" alt="" picture="" src="/static/images/design/ui/mobile/notifications-hero.png" />

当您的应用未在使用中时,通知会提供与应用相关的简短、及时且相关的信息。

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

  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 UI Kit,以获取通知模板。

标准模板

标准模板适用于大多数通知,它允许使用简洁文本、大图标(如适用)和操作。

图 6:标准通知模板

大文本模板

大文本模板非常适合显示长文本块。它允许用户在展开通知后预览更多文本。

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

大图模板

大图模板专为包含图片的通知而设计。收起后,通知将显示图片的大图标缩略图。展开后,通知会显示更大的预览。

图 8:大图模板

进度模板

进度模板专为用户发起的需要时间才能完成的活动而设计。展开后,使用此模板的通知会显示进度条,并且还会包含“取消”操作,以便用户终止此 activity。(不可取消的活动不要求发送通知。)

图 9:进度模板

媒体模板

媒体模板旨在让用户能够控制当前从应用中播放的媒体。

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

消息模板

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

图 11:消息模板

通话模板

使用 CallStyle 模板生成大格式通知,其中包含大图片附件并指示来电或去电。

图 12:通话模板

通知权限

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

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

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

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

对于不可豁免的通知,请提示用户选择是否愿意接收通知。明确选择接收通知的用户可能会发现通知更实用、干扰性更小。

图 13:针对不符合豁免情况的通知征求用户同意

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

  • 说明通知提供的优势,以及不授予通知权限的结果。
  • 提供上下文界面,将通知与其功能或影响的内容相关。此界面可以采用任何形式,以最好地集成到您的应用中:例如,费用内的卡片、底部动作条或新手入门屏幕。其中任何一个按钮都应是可关闭的。
  • 如果用户已关闭界面,则不显示通知权限对话框。

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

必需通知

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

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

由于这些进程会耗用电量,还可能消耗数据流量,因此您的应用必须通过显示不可关闭的通知,让用户知道它们。用户无法关闭通知,因此您必须为用户提供停止服务的操作。

以下示例展示了来自健身应用的通知。用户已启动正在进行的锻炼活动,这会实例化跟踪锻炼时段的前台服务。应用会显示通知来指示它正在跟踪步行活动,并提供用于查看锻炼情况的选项。

何时不使用通知

不要在以下任一使用情形中使用通知:

  • 对于其他商品的交叉推介或广告宣传(Play 商店严格禁止此类行为)
  • 如果用户从未打开过您的应用
  • 是与用户沟通的主要方式
  • 鼓励用户继续使用应用,但不提供直接价值(例如,“有一段时间没见您了!”)
  • 对于应用分级请求
  • 对于不需要用户参与的操作,例如同步信息
  • 用于通告错误状态,说明应用在无需用户互动的情况下可从中恢复
  • 用于发送节假日或生日祝福语
以通知的形式发送节日或生日祝福。
在任务进行时中断用户的唯一目的就是询问您是否表现得好。

行为

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

通知送达

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

  • 发出提示音或使手机振动。
  • 与图标一起显示在状态栏中;这通常是您的应用图标,但如果您有多种类型的通知,请使用可以捕获通知用途的符号。
  • 以浮动通知的形式显示,短暂显示当前屏幕以吸引用户的注意力。

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

图 15:通知到达

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

2 在当前屏幕上“短暂显示”通知,以便在执行任务期间吸引用户的注意力。

抽屉式通知栏

Android 中的抽屉式通知栏通常按时间倒序显示通知,并受到以下条件的影响:

  • 应用声明的通知优先级或重要性
  • 通知最近是否通过提示音或振动提醒用户
  • 通知是否与任何人相关,这些人是不是已加星标的联系人
  • 通知是否表示重要的持续性活动(例如正在进行的通话或正在播放音乐)
  • Android 操作系统通过在列表顶部和底部添加强调效果来改变某些通知的外观,帮助用户扫描内容

处理过时通知

抽屉式通知栏旨在向用户显示与当前时刻相关的信息。如果早前的通知已经过时,即不再相关,可将其关闭,这样用户就看不到该通知。

图 16:刚收到的文本显示在抽屉式通知栏中,并在底部显示优先级较低的通知(其中显示有照片正在添加)。

带有应用图标标志的新通知

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

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

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

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

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

    当用户点按通知时,您的应用必须显示与该通知直接相关的界面,并允许用户立即执行操作。例如,如果通知显示玩家玩双人游戏,点按通知即可直接转到该游戏。

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

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

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

  • 暂停浮动通知:用户可以向上滑动浮动通知,并且不允许来自该事件的其他通知在一分钟内闪烁。

  • 今后控制类似的通知:用户可以通过以下方式访问通知控件:

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

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

将多个通知归为一组

对于可生成多个相同类型的通知的应用,Android 提供了通知分组功能,以避免用户应接不暇。

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

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

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

如果子通知单独显示,则必须易于理解,因为当它们到达时,系统可能会在通知组外显示这些通知。

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

设置

频道

从 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 会评估每条通知的可见性级别,以确定可以安全显示的内容。

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

用户隐私至关重要,因此请注意,锁定屏幕上会显示不同级别的通知。对于您创建的每个通知,您必须将可见性级别设置为 public、privatesecret

  • 公开通知会在安全锁定屏幕上完全显示。
  • 私密通知会隐藏起来。
  • 私密通知位于中间:它们仅显示基本信息,包括发布该通知的应用的名称及其图标。除了隐藏的常规内容,您还可以选择显示不会泄露个人信息的文本,例如 2 new messages

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

图 20:不同灵敏度级别的锁定屏幕。

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

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

风格

文字简明扼要

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

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

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

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

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

大图标

如果用例中的图像能够有效强化通知的内容,请使用大图标。以下是一些示例:

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

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

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

Android 版本更新

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

平台注意事项

Wear

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