当用户不在使用应用时,通知可提供简洁、及时且相关的应用信息。
Android 操作系统控制通知的许多方面,但您也可以控制其他方面。请按照以下步骤实现通知:
- 了解通知的结构。
- 为您的使用场景选择通知类型。
- 设置与所选通知类型相对应的通知类别。
要点
- 考虑通知的目的:为什么要提醒用户?
- 确定通知权限模式,考虑通知对您的应用有多重要,以及在用户旅程中的何处请求权限。
- 选择您的通知模板。
- 创建通知内容
- 标题文本应简洁地概括通知内容。
- 内容文本应提供通知的预览。
- 如果适用于您的应用内容,可添加图片内容。
- 媒体模板所需的媒体主图和元数据。
- 通过根据内容提供操作(如文本按钮、输入框或媒体控件),让用户清楚地知道他们可以对通知执行什么操作。
- 包含您的应用图标并设置应用图标的背景颜色。
- 为通知设置渠道和类别。这允许系统和用户自定义他们接收的通知,并提供优先级行为。
- 如果您的应用可能会同时发送多个通知,请进行分组。
- 查看 Figma 中的 Android UI 套件以获取通知模板。
通知的结构
通知的设计旨在让用户能够轻松扫描并使用其最重要的元素。这些元素包括:
- 主要内容:这是通知中最突出的元素。次要信息(如时间戳)较小,整合在主要内容上方。
- 人物:如果通知涉及某个人,头像会从其他内容中凸显出来。
- 操作:用户可以通过点击展开图标来展开通知。操作会以文本标签形式显示在独立的背景颜色和位置上。
通知标题和内容
折叠时,通知会显示应用图标、标题文本、时间戳、展开指示器和内容文本。还可以选择显示大图标。
1 应用图标: 应用图标是您应用身份的二维表示。它在状态栏中以单色显示。如果您的应用发送多种类型的通知,请考虑用符号替换应用图标,以区分不同类型的通知。详情请参阅应用图标颜色。
2 标题文本: 通知或来源的简短标题,例如用户的帐户名称。内容是通知中最突出的元素。
3 时间戳: 指示通知发送的时间,例如未接来电的时间。
4 展开指示器: 指示通知处于折叠还是展开状态。
5 内容文本: 辅助信息。
6 大图标(可选): 可以添加图片来以有意义的方式强化通知,例如包含发送者头像的消息。
应用图标颜色
从 Android 12(API 级别 31)开始,系统会根据您在应用中设置的通知颜色来推导图标颜色。如果应用未设置颜色,则使用系统主题颜色。在此之前,颜色默认为灰色。
对于大多数样式,仅当前台服务通知时,系统才会应用此颜色。但是,对于已附加媒体会话的 MediaStyle 和 DecoratedMediaCustomViewStyle 通知,没有此要求。
以下代码片段展示了如何应用图标颜色。
val notification = Notification.Builder()
.setColor(Color.GREEN)
.setColorized(true)
.setSmallIcon(R.drawable.app_icon)
.setStyle(Notification.DecoratedCustomViewStyle())
.build()
通知操作
1 文本按钮操作
2 实心操作按钮
3 建议回复
4 回复文本字段
从 Android 7.0(API 级别 24)开始,系统显示的动作不带图标,以便容纳更多文本。为了适配 Android Wear 设备以及运行 Android 6.0(API 级别 23)及更低版本的设备,您的应用仍需提供图标。
展开视图
您可以使用展开视图向用户显示更多信息,而无需离开通知。
展开后,通知最多可以提供以下三种类型的操作:
- 建议回复
- 强调操作(药丸状按钮)
- 标准文本操作
不要
要
在通知中启用输入
通过包含“回复”操作,您可以让用户直接在通知中输入。这专为输入少量文本而设计,例如回复短信或写便签。
对于长文本输入,请引导用户进入您的应用,以提供更大的空间来查看和编辑文本。
对于消息类应用,我们建议在用户发送回复后保持通知显示,并等待对话暂停后再自动消失。
根据使用场景选择通知类型
Google 在其 Android 应用中使用以下通知模板。这些模板可以在一定程度上根据您的应用进行自定义。
请查看 Figma 中的 Android UI 套件以获取通知模板。
标准模板
标准模板适用于大多数通知,支持简洁的文本、大图标(如果适用)和操作。
大文本模板
大文本模板非常适合显示较长的文本块。它允许用户在展开通知后预览更多文本。
大图片模板
大图片模板专为包含图片的通知而设计。折叠时,通知显示图片的大图标缩略图。展开时,通知显示更大的预览图。
进度模板
进度模板专为用户发起的耗时操作而设计。展开后,使用此模板的通知会显示进度条,并包含一个“取消”操作,允许用户终止该活动。(不可取消的活动不需要此类通知。)
媒体模板
媒体模板旨在让用户控制应用当前正在播放的媒体。
- 折叠时,通知最多可显示三个操作。大图标可以显示相关图片,例如专辑封面。
- 展开时,通知显示最多五个操作(带较大图片)或六个操作(无图片)。通知的背景和其他元素会自动从图片中继承颜色。
消息模板
MessagingStyle 模板专为实时通讯设计。展开后,使用此模板的通知允许用户直接在通知内回复消息。
通话模板
使用 CallStyle 模板生成大尺寸通知,其中包括大尺寸图片附件,并指示来电或去电。
通知权限
尽管通知可以非常相关且及时,但大多数通知是非豁免的,也就是说,用户必须同意接收来自您应用的通知。
但有一个例外:从 Android 13(API 级别 33)开始,媒体会话和管理电话的应用豁免于征求用户同意。如果用户已经开启了通知,现有应用也可能符合豁免条件。详情请参阅豁免。
我们强烈建议您的应用在设置中提供通知选项,允许用户更新其通知偏好设置。
提示用户选择接收非豁免通知
对于非豁免通知,请提示用户说明他们是否愿意选择接收通知。明确选择接收通知的用户通常会觉得通知更有用,且打扰感更小。
延迟显示通知对话框提示
- 描述通知带来的好处,以及不授予通知权限的后果。
- 提供上下文相关的 UI,将通知与其功能或受影响的内容联系起来。此 UI 可以采取任何形式以最好地集成到您的应用中:例如信息流中的卡片、底部表单或引导界面。所有这些都应该是可关闭的。
- 如果用户已经关闭了 UI,请不要再次显示通知权限对话框。
从 Android 13 开始,用户可以被重新提示申请通知权限。
必要通知
前台服务执行用户可见的操作,但在用户未直接与您的应用交互时进行。这些服务会显示状态栏通知,让用户知道您的应用正在前台执行任务并占用系统资源。
由于这些进程会消耗电池电量,可能还会消耗数据流量,因此您的应用必须通过显示不可关闭的通知来让用户知晓。用户无法关闭该通知,因此您必须提供一个操作让用户停止该服务。
以下示例展示了健身应用的通知。用户已开始活跃的锻炼会话,这会实例化一个跟踪锻炼会话的前台服务。应用会显示该通知以表明它正在跟踪步行,并提供查看锻炼详情的选项。
何时不应使用通知
请勿在以下任何使用场景中使用通知:
- 用于交叉推广或广告宣传其他产品(Play 商店严格禁止此行为)
- 如果用户从未打开过您的应用
- 作为与用户的主要沟通方式
- 为了鼓励用户返回应用,但未提供直接价值(例如:“好久没见你了!”)
- 用于要求评价您的应用
- 用于不需要用户参与的操作,例如同步信息
- 用于发布应用可在无需用户干预的情况下自行恢复的错误状态
- 用于节日或生日祝福
不要
不要
行为
请了解以下通知行为以及如何在特定场景中处理它们。
通知到达
当通知到达时,Android 会将其添加到通知抽屉。根据您设置的参数和设备的当前状态,通知可能会执行以下任一操作:
- 发出声音或引起手机振动。
- 在状态栏中显示图标;通常是您的应用图标,但如果您有多种类型的通知,请使用能概括通知用途的符号。
- 显示为“抬头通知”(heads-up notification),并在当前屏幕上弹出以吸引用户的注意力。
一如既往,用户可以选择更改您设置的通知行为。
1 状态栏中的通知指示器,表示通知抽屉中有通知。
2 通知在当前屏幕上“弹出”,在用户执行任务时吸引其注意力。
通知抽屉
Android 中的通知抽屉通常以反向时间顺序显示通知,并会受到以下条件的影响进行调整:
- 应用的既定通知优先级或重要性
- 通知是否在最近以声音或振动提醒过用户
- 附加到通知的任何人物及其是否为星标联系人
- 通知是否代表重要的持续活动,例如正在进行的通话或正在播放的音乐
- Android 操作系统通过在列表顶部和底部添加强调或弱化效果,来改变某些通知的外观,这有助于用户快速扫描内容
处理过期的通知
通知抽屉旨在向用户显示当前时刻相关的信息。如果之前的通知过期,即不再相关,请将其移除,以免用户再次看到。
通过应用图标角标提示新通知
在支持的运行 Android 8.0(API 级别 26)及更高版本的设备启动器中,应用图标会显示一个通知点,以指示该应用有与之关联的新通知。这些点在支持它们的启动器应用中默认显示,您的应用无需执行任何操作。角标也可以被禁用或限制。
用户可以使用通知执行的操作
通知可以支持用户执行以下任一操作:
导航至目标:用户可以点击通知进行导航。如果通知显示在锁定屏幕上,用户需要双击它,然后输入 PIN 码、图案或密码。
当用户点击通知时,您的应用必须显示直接与该通知相关的 UI,并允许用户立即采取行动。例如,如果通知显示是双人游戏中的轮到他们了,点击通知应直接将他们带到该游戏。
查看通知的展开视图:标题中会出现展开指示器。用户可以点击该指示器或向下滑动通知主体来展开它。
图 18: 展开的通知 关闭通知(如果允许):用户可以通过向左或向右滑动来关闭它。
指示后台持续进行的过程(如播放音乐)的正在进行的通知,可能无法通过滑动关闭。
暂停抬头通知:用户可以向上滑动抬头通知,该事件在未来一分钟内将不会再触发弹出通知。
在未来控制类似的通知:用户可以通过以下方式访问通知控件:
- 触摸并按住单个通知
- 向左或向右滑动通知,然后点击设置图标
显示的控件因 Android 版本以及应用是否具有通知渠道(从 Android 8.0 开始)而异。
分组多个通知
对于生成多种相同类型通知的应用,Android 提供通知分组功能,以避免使用户不知所措。
您的应用可以根据以下层级呈现多个通知:
- 父通知显示其子通知的摘要。
- 如果用户展开父通知,Android 会显示所有子通知。
- 用户可以展开子通知以显示其全部内容。
Android 呈现子通知时不会重复标题信息。例如,如果子通知与父通知具有相同的应用图标,子通知的标题中就不会包含图标。
如果子通知单独出现,它们必须是可理解的,因为系统可能会在它们到达时将它们显示在组之外。
设置
渠道
从 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)、私密 (private) 或 机密 (secret)。
- 公开通知在安全锁定屏幕上完全可见。
- 机密通知处于隐藏状态。
- 私密通知介于两者之间:它们仅显示基本信息,包括发布该通知的应用名称及其图标。您可以选择显示不泄露个人信息的文本,例如
2 条新消息,以代替隐藏的常规内容。
在以下示例中,在用户选择在锁定屏幕上显示信息后,Gmail 和相册应用的锁定屏幕通知会显示所有内容。
1 锁定屏幕上显示的所有通知内容
2 锁定屏幕上隐藏的敏感通知内容
样式
清晰简洁的文本
Android 会将内容标题截断为一行(即使在展开时也是如此)。
一个好的内容标题遵循以下原则:
- 不超过 30 个字符
- 包含最重要的信息
- 避免使用变量(除非它们包含数字或短文本字符串,或者前面有文本)
- 排除应用名称,因为应用名称已出现在标题区域
不要
要
好的内容文本遵循以下原则:
- 避免超过 40 个字符的限制
- 避免重复内容标题中的信息
大图标
将大图标用于图片能有效强化通知内容的场景。例如:
- 来自其他人的通讯,例如发送消息者的照片
- 内容的来源(如果与发送通知的应用不同),例如用户订阅的 YouTube 频道的徽标
- 关于通知的有意义符号,例如驾驶导航的箭头符号
显示人物时,大图标必须是圆形的,其他情况下则为方形。
不要
要
Android 版本更新
Android 通知系统 UI 和相关的 API 不断演进。有关这些更改的列表,请查看通知兼容性。
平台注意事项
Wear
如果用户拥有配对的 Wear OS 设备,您所有的通知都会自动显示在那里,包括可展开的详细信息和操作按钮。有关详情,请参阅 Wear 上的通知设计页面。