通知

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

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

  1. 了解通知的结构。
  2. 为您的用例选择通知类型。
  3. 设置与您选择的通知类型一致的通知类别。

要点

  • 考虑通知的目的:您为什么要提醒用户?
  • 确定通知权限模式,考虑通知对您的应用有多重要,以及在用户的旅程中何时请求权限。
  • 选择您的通知模板。
  • 创建通知内容
    • 标题文本应简洁地概括通知内容。
    • 内容文本应预览通知内容。
    • 如果适用于您应用的内容,则包含图片内容。
    • 媒体模板的媒体主视觉图和元数据。
  • 通过提供基于通知内容的动作(文本按钮、输入或媒体控件),让用户清楚地知道他们可以对通知做什么。
  • 包含您的应用图标并设置应用图标背景颜色。
  • 为您的通知设置渠道和类别。这允许系统和您的用户自定义他们接收哪些通知,并提供优先级行为。
  • 如果您的应用可能同时发送多个通知,请对通知进行分组。
  • 请访问 Figma 上的 Android UI 工具包,获取通知模板。

通知的结构

通知的设计旨在让用户轻松扫描和使用通知最重要的元素。这些元素包括:

  • 主要内容:这是通知最突出的元素。次要信息(例如时间戳)较小,并整合在主要内容上方。
  • 人物:如果通知涉及某人,则头像会从其他内容中脱颖而出。
  • 动作:用户可以通过点击指示器图标来展开通知。动作以文本标签的形式显示在单独的背景颜色和位置上。
图 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 工具包,获取通知模板。

标准模板

标准模板适用于大多数通知,支持简洁的文本、大图标(适用时)和动作。

图 6: 标准通知模板

大文本模板

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

图 7: 大文本模板,可选大图标

大图模板

大图模板专为包含图片的通知而设计。折叠时,通知会显示图片的放大图标缩略图。展开时,通知会显示更大的预览图。

图 8: 大图模板

进度模板

进度模板专为需要时间完成的用户启动活动而设计。展开时,使用此模板的通知会显示进度条,并且还包括一个“取消”动作,允许用户终止此活动。(不可取消的活动不需要通知。)

图 9: 进度模板

媒体模板

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

  • 折叠时,通知最多可以显示三个动作。大图标可以显示相关图像,例如专辑封面。
  • 展开时,通知最多可以显示五个带较大图像的动作,或者六个不带图像的动作。通知的背景和其他元素会自动继承图像中的颜色。
图 10: 媒体模板

消息模板

MessagingStyle 模板专为实时通信而设计。展开时,使用此模板的通知允许用户在通知内部回复消息。

图 11: 消息模板

通话模板

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

图 12: 通话模板

实时更新体验

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

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

实时更新在以下情况下效果不佳:

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

通知权限

通知虽然可以非常相关和及时,但大多数通知都属于非豁免类型,即用户必须同意接收您的应用发送的通知。

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

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

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

对于非豁免通知,请提示用户是否愿意选择接收通知。明确选择接收通知的用户可能会发现它们更有用且干扰更小。

图 14: 请求用户同意接收非豁免通知

等待显示通知对话框提示

  • 描述通知带来的好处,以及不授予通知权限的后果。
  • 提供上下文 UI,将通知与其功能或其影响关联起来。此 UI 可以采取任何形式,以便最好地集成到您的应用中:例如,费用内的卡片、底部工作表或新手入门屏幕。其中任何一个都应可关闭。
  • 如果用户已关闭 UI,则不要显示通知权限对话框。

从 Android 13 开始,用户可以被再次提示通知权限。

必需的通知

前台服务执行用户可见的操作,但在用户未直接与您的应用交互时进行。这些服务会在状态栏中显示通知,以告知用户您的应用正在前台执行任务并占用系统资源。

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

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

以下示例显示了一个健身应用的通知。用户已开始一个活动锻炼会话,这会实例化一个跟踪锻炼会话的前台服务。应用显示通知以指示其正在跟踪步行,并提供查看锻炼的选项。

何时不应使用通知

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

  • 用于交叉推广或宣传其他产品(Play 商店严禁此行为)
  • 如果用户从未打开过您的应用
  • 作为与用户沟通的主要方式
  • 鼓励用户返回应用,但未提供直接价值(例如,“好久不见!”)
  • 请求评分您的应用
  • 对于不需要用户参与的操作,例如同步信息
  • 宣布应用可能在没有用户互动的情况下恢复的错误状态
  • 用于节日或生日消息
以通知形式发送节日或生日问候。
仅为了询问您是否做得好而中断用户正在进行的任务。

行为

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

通知到达

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

  • 发出声音或引起手机振动。
  • 在状态栏中显示带有图标;这通常是您的应用图标,但如果您有多种类型的通知,请使用能够捕捉通知目的的符号。
  • 显示为浮动通知,弹出到当前屏幕以吸引用户注意。

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

图 16:通知到达

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

2 通知“弹出”到当前屏幕,在任务进行中吸引用户注意。

通知抽屉

Android 中的通知抽屉通常以倒序时间顺序显示通知,并受以下条件影响进行调整:

  • 应用声明的通知优先级或重要性
  • 通知是否最近通过声音或振动提醒了用户
  • 与通知关联的任何人以及他们是否为星标联系人
  • 通知是否代表一项重要的正在进行的活动,例如正在进行的电话或音乐播放
  • Android 操作系统通过在列表顶部和底部添加强调或弱化来改变某些通知的外观,这有助于用户扫描内容

处理陈旧通知

通知抽屉旨在向用户显示与当前时间相关的信息。如果较早的通知是陈旧的,即不再相关,请将其关闭,以便用户看不到它。

图 17: 刚收到的文本显示在通知抽屉顶部,关于添加照片的较低优先级通知显示在底部

应用图标徽章指示新通知

在运行 Android 8.0(API 级别 26)及更高版本的受支持启动器上,应用图标会显示一个通知点,以指示应用有新的关联通知。这些点默认显示在支持它们的启动器应用中,您的应用无需执行任何操作。徽章功能也可以禁用和限制。

图 18: 应用图标上的通知点,指示应用有新的关联通知

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

通知可以允许用户执行以下任何操作:

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

    当用户点击通知时,您的应用必须显示与该通知直接相关的 UI,并允许用户立即采取行动。例如,如果通知显示在两人游戏中轮到他们,点击通知应该直接带他们到该游戏。

  • 查看通知的展开视图:标题中会出现一个展开指示器。用户可以点击该指示器或向下滑动通知正文来展开它。

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

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

  • 贪睡浮动通知:用户可以向上滑动浮动通知,并且在一分钟内不允许该事件的后续通知再次弹出。

  • 将来控制类似通知:用户可以通过以下方式访问通知控件:

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

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

分组多个通知

对于生成多个相同类型通知的应用,Android 提供通知分组功能,以避免用户被大量通知淹没。

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

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

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

子通知即使单独出现也必须易于理解,因为系统在它们到达时可能会在组外显示它们。

图 20: 分组通知的折叠和展开视图。

设置

渠道

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

有关如何实现此功能的详细信息,请参阅创建和管理通知渠道

重要性应在考虑用户时间和注意力的情况下选择。当不重要的通知伪装成紧急通知时,可能会产生不必要的警报。

重要性 行为 用途 示例
发出声音并显示在屏幕上 用户必须立即知晓或采取行动的时间关键信息 短信、闹钟、电话
默认 发出声音 用户应在方便时尽早查看的信息,但不会中断他们正在进行的操作 交通警报、任务提醒
无声音 不符合其他重要性级别要求的通知渠道 用户订阅的新内容、社交网络邀请
最低 无声音或视觉中断 可以等待或与用户没有特别关联的非必要信息 附近景点、天气、推广内容

预定义类别

无论您是否使用渠道,都请将每个单独的通知分配到最合适的预定义类别。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 和照片应用的锁屏通知在用户选择在锁屏上显示此信息后,会显示所有内容。

图 21: 具有不同敏感度级别的锁屏。

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

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

样式

清晰简洁的文本

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

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

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

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

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

大图标

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

  • 来自另一个人的通信,例如发送消息的人的图像
  • 内容的来源(如果与发送通知的应用不同),例如用户订阅的 YouTube 频道的徽标
  • 关于通知的有意义的符号,例如用于驾驶方向的箭头符号

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

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

Android 版本更新

Android 通知系统 UI 和与通知相关的 API 持续发展。有关这些更改的列表,请查看通知兼容性

平台注意事项

Wear

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