系统会提升实时更新通知的优先级。升级的通知在系统界面上会更醒目地显示,包括在通知抽屉顶部、锁屏上以及状态栏中以功能块的形式显示。

升级后的通知卡片具有以下外观特征:
- 默认展开
- 不可折叠
您的通知必须满足以下要求,才能成为实时更新:
- 必须为“标准/无样式”
BigTextStyle
、CallStyle
或ProgressStyle
。 - 必须在 Android 清单
android.permission.POST_PROMOTED_NOTIFICATIONS
中请求以下非运行时权限。 - 必须使用
EXTRA_REQUEST_PROMOTED_ONGOING
或NotificationCompat.Builder#requestPromotedOngoing
请求提升。 - 必须为
ongoing
(设置FLAG_ONGOING_EVENT
)。 - 必须设置
contentTitle
。 - 不得设置任何
customContentView
(无RemoteViews
)。 - 不得是使用
setGroupSummary
的群组的摘要。 - 不得将
setColorized
设置为TRUE
。 - 通知渠道不得具有
IMPORTANCE_MIN
。
促销特征
以下 API 可帮助您确定系统是否会提升您的通知:
Notification.FLAG_PROMOTED_ONGOING
表示通知是否已升级。Notification.hasPromotableCharacteristics()
验证系统是否可以升级通知。此方法不会考虑用户是否在设置中为应用停用了实时更新。NotificationManager.canPostPromotedNotifications()
检查您的应用是否可以发布推广通知,例如用户是否在设置中启用或停用了该通知。Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS
是一种 intent 操作,可让应用将用户发送到“设置”以启用此功能。
使用条件
对于正在进行、由用户发起且对时间敏感的活动,请使用实时更新。
正在进行
实时更新必须表示正在积极进行的活动,并且具有明确的开始和结束时间。如果活动发生在过去,请勿使用实时更新。请改用标准通知。尚未开始的活动也是如此,不过即将开始的活动可以使用实时更新。
实时动态表示正在进行的活动。请勿使用实时更新来提供对应用功能的加速访问。如果您想这样做,请使用应用 widget 或自定义“快捷设置”功能块。
- 适用场景:正在进行的导航、正在进行的通话、正在进行的网约车跟踪和正在进行的外卖跟踪。
- 不当用途:广告、促销内容、聊天消息、提醒、即将到来的日历活动,以及对应用功能的快速访问。
用户自行播放
大多数实时更新应表示由用户明确触发的活动,例如开始锻炼、启动驾车导航或叫网约车。请勿在实时更新中显示环境信息,例如用户环境、兴趣或即将发生的活动的相关信息。不允许由其他方触发的活动生成实时更新。
有时,用户可能会执行一项操作,该操作会在未来某个时间启动 activity。例如,如果用户购买了机票或音乐会门票、报名参加比赛,或者以其他方式表明他们将来会参加时限性活动。在这些情况下,可以在预定活动开始时自动显示实时更新。不过,应用必须调整其触发器,使其仅在活动即将开始时显示。如果用户明确表示要开始监控某个后台事件(例如体育赛事),您可以开始针对该事件发布实时更新。 不过,您还应在关联的通知中添加取消固定操作。
具有时效性
仅当用户在整个活动期间都需要关注实时更新时,才显示实时更新。实时更新的一个主要使用场景是监控,用户可以通过快速查看实时更新来密切关注活动的进展情况,从而获得显著的益处。
实时更新通常适用于在实时更新和常规通知之间转换的活动。例如,在用户航班起飞前数小时显示登机牌通知是合适的,但只有在用户有迫切需求时(例如,当用户到达机场或活动场地时,或者登机开始后),该通知才应变为实时更新。相比之下,实时更新不适合跟踪软件包,因为用户无需持续监控。
状态条状标签
借助状态提示,用户可以在通知未显示时跟踪实时更新。使用 setShortCriticalText
或 setWhen
传达与进度中心通知相关的重要状态信息。

Notification.Builder#setSmallIcon
。
Notification.Builder#setShortCriticalText
显示绝对时间。
Notification.Builder#setShortCriticalText
传达关键信息。时间
当时间会触发通知时长的倒计时,除非通知被关闭或更新。
- “何时”时间至少比当前时间晚 2 分钟:如果当前时间为上午 10:05,而“何时”时间设置为上午 10:10,则芯片会显示“5 分钟”。
- 如果“何时”时间是 1 分钟之前,则不会显示通知。
- 如果您不希望通知在通知栏中显示时间,请使用
setShowWhen
进行FALSE
。
状态条状标签外观
状态条状标签始终包含一个图标,并且可以选择性地包含文本。微件的最大宽度为 96dp。根据以下条件显示文本:
- 如果少于 7 个字符,则显示整个文本。
- 如果只有不到一半的文字会显示,则仅显示图标。
- 如果超过一半的文字会显示,请尽可能多地显示文字。
关闭
用户可以在通知栏中控制通知的显示情况。发布不必要的实时更新可能会导致用户撤消应用的发布权限。
为防止用户完全停用实时更新,请避免发布用户可能会关闭的更新。不要重新发布用户已关闭的实时更新。使用 setDeleteIntent
检测已关闭的更新。
如需试用这些 API,请参阅示例应用。