在 Android 11 中,Android 平台变得更加以人为本,并且拥有更为丰富的展现方式,在反复探究用户在移动设备上的交流方式之后,我们会将 Android 打造为一款更加人性化的操作系统,使其可以识别并优先推送您生活中人际关系密切相关的信息。作为上述目标的一部分,在 Android 11 中,会话提醒会集中在通知栏顶部的一个专用区域里,其中包含一些人性化的设计以及会话相关的特殊操作,比如以气泡形式打开会话,在主屏幕创建会话快捷方式,或者设置一个提醒。
本文会针对消息推送分级的几个方面帮助大家理解通知栏是如何将用户信息进行优先推送的。
什么是通知?
通知 是 UI 用来向用户推送某些信息的一种信号,比如: 新闻信息、好友聊天信息、或者关于某个即发事件的消息提醒。
通知有很多类型,但是本文仅关注用户通知,因为它在我们的日常使用中起到关键作用,并且是当今移动端设备的核心功能和主要用途之一。
People notifications
People notifications 是指推送通知上下文中含有 一人或多个 person 的消息。从 Android 8 (Oreo) 开始,People notifications 就已经在下拉式通知栏的可视层级中得到了 "升格" 的 "待遇",其优先级仅次于正在进行的或者关键的通知消息 (如下图中显示 People to People,也就是人际消息通知,其优先级提升到了仅次于 Major Ongoing 下面)。在人际消息通知中,如果消息中包含了 person 上下文或者带有 联系人 URI,则其优先级会进一步提高。
作为开发者,非常重要的一点就是要确保合适的使用通知被用来传达合适的意图,并且不会误用通知区域。比如,日历应用中一个即将发生的事件的提醒不应该作为紧急提醒出现在会话区域。虽然 Android 强大的功能允许用户通过 通知渠道 设置通知的频率、可见性和重要性,但是如果没有遵循最佳实践,应用的价值和可信度就会降低,并且会对其在应用市场的信誉造成负面影响。
通知分级
如果大家对分级的细节感兴趣,或者想要了解通知是如何组织、设置优先级或者排序的,那么 Notification Record 就很值得大家关注了。它包含所有与通知分级相关的信息和通知分级计算的逻辑。通知的分级基于多个要素: 渠道设置 (在出现渠道之前,或者 Android 8.0 之前,使用的是通知的优先级)、烦扰程度、新鲜度,以及上下文。如果想要了解决定分级的各种标准,请查看一下实现 NotificationSignalExtractor 的相关类。
ValidateNotificationPeople 解析器也值得研究一下,因为它和人际属性相关。下方示例的 validatePeople 方法调用中,它设置了一个关系密切度标记位参数,将重要性作为通知排序的标准。
private RankingReconsideration validatePeople(Context context, final NotificationRecord record) {
...
final PeopleRankingReconsideration rr = validatePeople(context, key, extras, record.getPeopleOverride(), affinityOut);
final float affinity = affinityOut[0];
record.setContactAffinity(affinity);
...
return rr;
}
相似度会随着下面几种情况而升高: 通知是否来自有效的联系人,有效联系人是否来自用户的通讯录,联系人是否被加星标注或者被用户收藏。
Android 11 和会话
在 Android 11 中,还有很多更新强调了人际交往相关功能的重要性。例如在下拉通知栏中为 消息风格的通知 增加了专门的区域。
对于全新的会话区域,Bubbles 会出现在通知的上方,并且会以悬浮窗的方式关联至用户会话。
您可以看一下 Android 开发者文档中会话 (Conversation API) 页面中的相关介绍,只要通过遵循特定的指南,就可以使会话浮现在系统的各个位置,从而促进分享并使用户可以在上下文中与某人进行某些操作。
People first
文中所提到的 Android 11 中的更新表明了平台未来的发展趋势,和对人际交往相关的体验的持续提升。如果想要了解更多关于 Android 11 的更新内容和 API 指南,请参考 Android 开发者文档的 会话 页面。