系统会推送实时更新通知。推介通知会在系统界面上更醒目地显示,包括在通知抽屉和锁屏顶部,以及在状态栏中以条状标签的形式显示。

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

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