通知

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

通知可在应用未使用时提供与应用相关的简短、及时且相关的信息。

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

标准模板

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

图 6:标准通知模板

大文本模板

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

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

大图片模板

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

图 8:大图模板

进度模板

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

图 9:进度模板

媒体模板

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

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

消息功能模板

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

图 11:Messaging 模板

通话模板

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

图 12:通话模板

通知权限

尽管通知尽可能相关且及时,大多数通知都是不可豁免的,也就是说,用户必须同意接收您的应用发送的通知。

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

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

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

对于需要豁免的通知,请提示用户选择是否要接收通知。明确选择接收通知的用户可能会认为通知更实用且干扰性更小。

图 13:就非豁免通知征求用户同意

等待系统显示通知对话框提示:

  • 说明通知提供的优势以及不授予通知权限的结果。
  • 提供上下文界面,说明通知与其功能或影响的内容相关。此界面可以采用任何形式,以便在您的应用中实现最佳集成:例如,费用内的卡片、底部动作条或初始配置屏幕。其中任何按钮都应可以关闭。
  • 如果用户已关闭界面,则不显示通知权限对话框。

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

必需通知

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

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

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

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

何时不使用通知

请勿针对以下任何使用情形使用通知:

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

行为

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

收到通知

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

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

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

图 15:通知送达

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

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

抽屉式通知栏

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

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

处理过时通知

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

图 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

  • 公开通知会在安全锁定屏幕上完整显示。
  • 已隐藏 Secret 通知。
  • 不公开通知位于中间:这些通知仅显示基本信息,包括发布通知的应用的名称及其图标。您可以选择显示不会泄露个人信息的文本(例如 2 new messages),而不是隐藏常规内容。

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

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

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

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

风格

简洁明了的文字

Android 会将内容标题截断为一行(即使已展开)。

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

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

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

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

大图标

对于需要图像来有效强化通知内容的用例,可以使用大图标。以下是一些示例:

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

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

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

Android 版本更新

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

平台注意事项

Wear

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