![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-hero.png?authuser=5&hl=el)
在未使用您的应用时,通知会及时提供与您的应用相关的简短、及时的相关信息。
Android 操作系统控制通知的许多方面,但其他方面您可以控制。实现通知时,请按以下步骤操作:
- 了解通知的详解。
- 为您的用例选择通知类型。
- 设置与您选择的通知类型相符的通知类别。
断球数
- 考虑发送通知的目的:您为何要提醒用户?
- 确定通知权限模式,考虑通知对您的应用有多重要,以及在用户体验历程中的什么位置请求权限。
- 选择您的通知模板。
- 创建通知内容:
- 标题文字应简明扼要地总结通知内容。
- 内容文本应可预览通知。
- 图片内容(如果适用于您的应用内容)。
- 媒体模板的媒体键集和元数据。
- 使用文本按钮、输入方式或媒体控件,根据通知的内容提供操作,让用户清楚地了解通知的用途。
- 添加应用图标并设置应用图标背景颜色。
- 设置通知的频道和类别。这样,系统和您的用户就可以自定义他们要接收的通知并提供优先级行为。
- 如果您的应用可能会一次传送多条通知,请将通知分组。
- 如需了解通知模板,请查看 Figma 上的 Android UI Kit。
通知详解
通知旨在让您轻松浏览和使用通知中最重要的元素。这些元素包括:
- 主要内容:这是通知的最醒目元素。次要信息(如时间戳)较小,并集中在主要内容上方。
- 人物:如果通知涉及人物,则头像会从其余内容中脱颖而出。
- 操作:用户可以通过点按指示器图标展开通知。 操作使用文本标签以单独的背景颜色和位置显示。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-1-collapsed.png?authuser=5&hl=el)
通知标题和内容
收起后,通知会显示应用图标、标题文本、时间戳、展开指示器和内容文本。您也可以选择显示大图标。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-2-header-area.png?authuser=5&hl=el)
1 应用图标:应用图标是应用身份的二维形式。它以单色形式显示在状态栏中。如果您的应用会发送各种通知,不妨考虑将应用图标替换为一个符号,以便区分不同类型的通知。如需了解详情,请参阅应用图标颜色。
2 标题文字:通知或来源的简短标题,例如用户的帐号名称。内容是通知中最显眼的元素,
3 时间戳:指示发送通知的时间,例如未接电话的时间。
4 展开指示器:指示通知是处于收起状态还是展开状态。
5 内容文字:支持信息。
6 大图标(可选):可以添加一张图片以通过有意义的方式强化通知,例如包含发件人头像的消息。
应用图标颜色
从 Android 12(API 级别 31)开始,系统会根据您在应用中设置的通知颜色派生图标颜色。如果应用未设置颜色,则会使用系统主题颜色。之前,该颜色为灰色。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-3-resulting-styled-app-icon-color.png?authuser=5&hl=el)
对于大多数样式,仅当通知是针对前台服务通知时,系统才会应用此颜色。不过,对附加了媒体会话的 MediaStyle
和 DecoratedMediaCustomViewStyle
通知没有此要求。
以下代码段展示了如何应用图标颜色。
val notification = Notification.Builder()
.setColor(Color.GREEN)
.setColorized(true)
.setSmallIcon(R.drawable.app_icon)
.setStyle(Notification.DecoratedCustomViewStyle())
.build()
通知操作
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-4-action-area.png?authuser=5&hl=el)
1 文本按钮操作
2 实心操作按钮
3 建议的回复
4 回复文本字段
从 Android 7.0(API 级别 24)开始,为了容纳更多文字,系统会显示不含图标的操作。为了适应 Android Wear 设备以及搭载 Android 6.0(API 级别 23)及更低版本的设备,您的应用仍必须提供图标。
展开视图
您可以使用展开视图向用户显示更多信息,而无需离开通知。
展开通知后,通知最多可以提供以下任意三种操作:
- 建议的回复
- 突出显示的操作(药丸形状的按钮)
- 标准文本操作
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-5-dont-include-text-actions.png?authuser=5&hl=el)
错误做法
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-6-do-let-user-pause.png?authuser=5&hl=el)
正确做法
允许输入通知内容
您可以通过添加回复操作,让用户直接在通知中输入内容。此功能适用于输入少量文本,例如回复短信或记下简短的笔记。
对于较长的输入,请将用户转到您的应用,以为用户提供更多空间来查看和修改文本。
对于即时通讯应用,我们建议在用户发送回复后继续显示通知,并等待对话暂停后再自动关闭对话。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-7-users-reply-directly.png?authuser=5&hl=el)
根据您的使用场景选择通知类型
Google 在其 Android 应用中使用以下通知模板。您可以在一定程度上针对您的应用自定义这些模板。
查看 Figma 上的 Android UI Kit,获取通知模板。
标准模板
标准模板适用于大多数通知,它允许使用简洁文本、大图标(如果适用)和操作。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-8-standard-template.png?authuser=5&hl=el)
大文本模板
大文本模板非常适合显示长文本块。它可以让用户在展开通知后预览更多文本。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-9-big-text-template.png?authuser=5&hl=el)
大图片模板
概览模板专为包含图片的通知而设计。收起后,通知会显示图片的大图标缩略图。展开后,通知会显示大得多的预览。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-10-big-picture-template.png?authuser=5&hl=el)
进度模板
进度模板专为需要时间才能完成的用户发起的 activity 而设计。展开时,使用此模板的通知会显示进度条,并且还包含可让用户终止此 activity 的“取消”操作。(不可取消的活动并不保证提供通知。)
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-11-progress-template.png?authuser=5&hl=el)
媒体模板
媒体模板旨在让用户能够控制当前从应用中播放的媒体。
- 收起时,通知最多可以显示三项操作。大图标可以显示相关图片,例如专辑封面。
- 展开通知后,通知会显示最多 5 项操作(使用较大图片)或 6 项操作(不带图片)。通知的背景和其他元素会自动沿用图片的颜色。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-12-media-template.png?authuser=5&hl=el)
消息模板
MessagingStyle 模板专为实时通信而设计。展开后,使用此模板的通知可让用户在通知中回复消息。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-13-messaging-template.png?authuser=5&hl=el)
通话模板
使用 CallStyle 模板可生成大格式通知,其中包含大图片附件并指示来电或去电。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-call-style.png?authuser=5&hl=el)
通知权限
尽管通知尽可能相关和及时,大多数通知都是非豁免通知的,也就是说,用户必须同意接收来自您的应用的通知。
但有一种例外情况:从 Android 13(API 级别 33)开始,媒体会话和管理通话的应用无需征求用户同意。如果用户已经启用通知,既有应用也可能符合条件。如需了解详情,请参阅豁免。
我们强烈建议您的应用在设置中提供通知选项,以便用户更新其通知偏好设置。
提示用户选择接收非豁免通知
对于非豁免通知,请提示用户指明他们是否要选择接收通知。对于明确选择接收通知的用户,他们可能会发现通知更实用、干扰更小。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-14-request-user-permission.png?authuser=5&hl=el)
等待系统显示通知对话框提示:
- 说明通知提供的优势,以及不授予通知权限的结果。
- 提供上下文界面,让通知与其功能或影响的内容相关。此界面可以采用任何形式,以最好地集成到您的应用中:例如,收费卡、底部动作条或新手入门屏幕。其中任何一项都是可关闭的。
- 如果用户已关闭界面,则不显示通知权限对话框。
从 Android 13 开始,系统可能会重新提示用户授予通知权限。
必需通知
前台服务执行的操作可以被用户注意到,但并不直接与您的应用互动。这些服务会显示状态栏通知,让用户知道您的应用正在前台执行任务并消耗系统资源。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-15-fitness-app-example.png?authuser=5&hl=el)
由于这些进程会消耗电池电量,并且可能会消耗数据流量,因此您的应用必须通过显示不可关闭的通知来让用户意识到它们。用户无法关闭通知,因此您必须为用户提供停止服务的操作。
以下示例展示了来自健身应用的通知。用户已启动一个正在进行的锻炼会话,该会话会实例化一个用于跟踪锻炼会话的前台服务。应用显示通知来指示它正在跟踪步行,并提供用于查看锻炼情况的选项。
何时不使用通知
请勿将通知用于以下任何情况:
- 针对其他商品的交叉推介或广告(Play 商店严格禁止这样做)
- 如果用户从未打开过您的应用
- 是与用户沟通的主要方式
- 鼓励用户继续使用应用,但不提供直接价值(例如,“好久没见到您!”),
- 针对应用分级请求
- 对于不需要用户参与的操作,例如同步信息
- 用于通告应用可在无用户互动的情况下恢复的错误状态
- 节假日或生日祝福语
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-16-dont-send-greetings.png?authuser=5&hl=el)
错误做法
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-17-dont-interrupt-user.png?authuser=5&hl=el)
错误做法
行为
请注意以下通知行为以及如何在某些上下文中处理它们。
收到通知
收到通知时,Android 会将其添加到抽屉式通知栏中。根据您设置的参数和设备的当前状态,通知可能会执行以下任何操作:
- 发出提示音或让手机振动。
- 在状态栏中显示一个图标;这通常是您的应用图标,但如果您有多种类型的通知,请使用捕获通知用途的符号。
- 显示为浮动通知,短暂显示当前屏幕以吸引用户的注意力。
与往常一样,用户可以选择更改您设置的通知行为。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-arrival.png?authuser=5&hl=el)
1 状态栏中的通知指示器,表示抽屉式通知栏中有通知。
2 在当前屏幕上“短暂显示”通知,以便在执行任务时吸引用户的注意力。
抽屉式通知栏
Android 中的抽屉式通知栏通常按时间倒序显示通知,并受以下条件影响调整:
- 应用声明的通知优先级或重要性
- 通知最近是否通过提示音或振动提醒了用户
- 通知是否与任何人相关,这些人是不是已加星标的联系人
- 通知是否表示重要的持续性活动,例如正在进行的通话或正在播放音乐
- Android OS 在列表顶部和底部通过添加强调效果或弱化效果来改变某些通知的外观,这有助于用户扫描内容
处理过时通知
抽屉式通知栏旨在向用户显示与当前时刻相关的信息。如果之前的通知已过时,即不再相关,请将其关闭,这样用户就不会看到它。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-20-just-arrived-text.png?authuser=5&hl=el)
带有应用图标标志的新通知
在搭载 Android 8.0(API 级别 26)及更高版本的设备上,受支持的启动器中,应用图标会显示一个通知圆点,表示应用有关联的新通知。默认情况下,这些圆点会显示在支持它们的启动器应用中,您的应用无需执行任何操作。您也可以停用和限制标记。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-21-dot.png?authuser=5&hl=el)
用户可以通过通知执行的操作
通过通知,用户可以执行以下任一操作:
导航到目的地:用户可以点按通知以进行导航。如果通知显示在锁定屏幕上,用户需要点按两次,然后输入其 PIN 码、密码或绘制解锁图案。
当用户点按通知时,您的应用必须显示与该通知直接相关的界面,并让用户能够立即执行操作。例如,如果通知显示双人游戏轮到他们,则点按通知应该会直接转到该游戏。
查看通知的展开视图:标题中会出现一个展开指示器。用户可以点按指示符或向下滑动通知正文以将其展开。
图 18:展开的通知 关闭通知(如果允许):用户可以通过向左或向右滑动来将其关闭。
指示后台正在进行的进程(例如播放音乐)的持续性通知可能无法通过滑动来关闭。
控制今后的类似通知:用户可以通过以下方式访问通知设置:
- 轻触并按住单条通知
- 向左或向右滑动通知,然后点按设置图标
显示的控件因 Android 版本以及应用是否有通知渠道而异(从 Android 8.0 开始)。
对多条通知进行分组
对于生成多个相同类型的通知的应用,Android 提供了通知分组功能,以避免用户感到应接不暇。
您的应用可以根据以下层次结构显示多个通知。
- 父通知会显示其子通知的摘要。
- 如果用户展开父通知,Android 会显示所有子通知。
- 用户可以展开子通知以显示其全部内容。
Android 呈现的子通知没有重复标头信息。例如,如果子通知与其父通知具有相同的应用图标,则子通知的标头将不包含图标。
如果子通知单独显示,则必须易于理解,因为当这些通知到达群组之外时,系统可能会在通知之外显示这些通知。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-group.png?authuser=5&hl=el)
设置
频道
从 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 new messages
),而不是隐藏常规内容。
在以下示例中,当用户选择在锁定屏幕上显示此信息后,Gmail 和 Google 相册应用的锁屏通知会显示所有内容。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-sensitivity-levels.png?authuser=5&hl=el)
1 在锁定屏幕上显示所有通知内容
2 隐藏在锁定屏幕上显示的敏感通知内容
风格
文字简明扼要
Android 会将内容标题截断为一行(即使已展开)。
好的内容标题应遵循以下准则:
- 不超过 30 个字符
- 包含最重要的信息
- 避免使用变量(除非变量包含数字或短文本字符串,或前面有文本)
- 不包括已显示在标题中的应用名称
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-27-takeaways-dont-show-app-name.png?authuser=5&hl=el)
错误做法
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-28-do-show-most-important-info.png?authuser=5&hl=el)
正确做法
优质的内容文本应遵循以下准则:
- 避免超出 40 个字符的限制
- 避免重复内容标题中的内容
大图标
如果用例通过图像来有效强化通知的内容,可使用大图标。以下是一些示例:
- 来自其他人的通信内容,例如某人发送消息的图片
- 内容来源(如果与发送通知的应用不同,例如用户订阅的 YouTube 频道的徽标)
- 有关通知的有意义符号,例如表示行车路线的箭头符号
显示人物时,大图标必须为圆形,但在所有其他情况下,必须为方形。
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-29-dont-use-large-icon-branding.png?authuser=5&hl=el)
错误做法
![](https://developer.android.google.cn/static/images/design/ui/mobile/notifications-30-do-use-large-icon-reinforce-meaning.png?authuser=5&hl=el)
正确做法
Android 版本更新
Android 通知系统界面以及与通知相关的 API 一直在不断改进。如需查看这些变更的列表,请查看通知兼容性。
平台注意事项
Wear
如果用户有配对的 Wear OS 设备,您的所有通知都会自动显示在配对设备上,包括可展开的详细信息和操作按钮。如需了解详情,请参阅 Wear 上的通知设计页面。