通知

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

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 界面套件。

标准模板

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

图 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:展开的通知
  • 关闭通知(如果允许):用户可以通过向左或向右滑动来关闭通知。

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

  • 暂停浮动通知:用户可以向上滑动浮动通知,这样一来,相应活动在 1 分钟内不会再以脉冲方式显示通知。

  • 控制日后收到的类似通知:用户可以通过以下方式访问通知控制设置:

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

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

设置锁屏界面上内容的敏感度级别

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

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

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

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

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

2 锁屏状态下已隐藏敏感通知内容

样式

清晰简洁的文字

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

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

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

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

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

大图标

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

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

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

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

Android 版本更新

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

平台注意事项

Wear

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