查看原文
其他

以人为本 | Android 11 的消息通知

Android 谷歌开发者 2020-09-20
Android 11 中,Android 平台变得更加以人为本,并且拥有更为丰富的展现方式,在反复探究用户在移动设备上的交流方式之后,我们会将 Android 打造为一款更加人性化的操作系统,使其可以识别并优先推送您生活中人际关系密切相关的信息。作为上述目标的一部分,在 Android 11 中,会话提醒会集中在通知栏顶部的一个专用区域里,其中包含一些人性化的设计以及会话相关的特殊操作,比如以气泡形式打开会话,在主屏幕创建会话快捷方式,或者设置一个提醒。
 
本文会针对消息推送分级的几个方面帮助大家理解通知栏是如何将用户信息进行优先推送的。

  • Android 11
    https://developer.android.google.cn/preview


什么是通知?


通知是 UI 用来向用户推送某些信息的一种信号,比如: 新闻信息、好友聊天信息、或者关于某个即发事件的消息提醒。

通知有很多类型,但是本文仅关注用户通知,因为它在我们的日常使用中起到关键作用,并且是当今移动端设备的核心功能和主要用途之一。


  • 通知
    https://developer.android.google.cn/guide/topics/ui/notifiers/notifications


People notifications


People notifications 是指推送通知上下文中含有一人或多个 person 的消息。从 Android 8 (Oreo) 开始,People notifications 就已经在下拉式通知栏的可视层级中得到了 "升格" 的 "待遇",其优先级仅次于正在进行的或者关键的通知消息 (如下图中显示 People to People,也就是人际消息通知,其优先级提升到了仅次于 Major Ongoing 下面)。在人际消息通知中,如果消息中包含了 person 上下文或者带有联系人 URI,则其优先级会进一步提高。

  • 一人或多个 person

    https://developer.android.google.cn/reference/androidx/core/app/NotificationCompat.Builder#addPerson(androidx.core.app.Person)
  • 联系人 URI
    https://developer.android.google.cn/reference/android/app/Person.Builder#setUri(java.lang.String)

通知栏消息展示层次

作为开发者,非常重要的一点就是要确保合适的使用通知被用来传达合适的意图,并且不会误用通知区域。比如,日历应用中一个即将发生的事件的提醒不应该作为紧急提醒出现在会话区域。虽然 Android 强大的功能允许用户通过通知渠道设置通知的频率、可见性和重要性,但是如果没有遵循最佳实践,应用的价值和可信度就会降低,并且会对其在应用市场的信誉造成负面影响。

  • 通知渠道
    https://developer.android.google.cn/training/notify-user/channels


通知分级


如果大家对分级的细节感兴趣,或者想要了解通知是如何组织、设置优先级或者排序的,那么 Notification Record 就很值得大家关注了。它包含所有与通知分级相关的信息和通知分级计算的逻辑。通知的分级基于多个要素: 渠道设置 (在出现渠道之前,或者 Android 8.0 之前,使用的是通知的优先级)、烦扰程度、新鲜度,以及上下文。如果想要了解决定分级的各种标准,请查看一下实现 NotificationSignalExtractor 的相关类。

  • Notification Record
    https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/notification/NotificationRecord.java
  • NotificationSignalExtractor
    https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/services/core/java/com/android/server/notification/NotificationSignalExtractor.java

 

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 会出现在通知的上方,并且会以悬浮窗的方式关联至用户会话。

  • 消息风格的通知

    https://developer.android.google.cn/reference/androidx/core/app/NotificationCompat.MessagingStyle#NotificationCompat.MessagingStyle(java.lang.CharSequence)

  • Bubbles

    https://developer.android.google.cn/guide/topics/ui/bubbles

专门的会话区域和气泡提升了用户的专注体验
您可以点击屏末阅读原文,看一下 Android 开发者文档中会话 (Conversation API) 页面中的相关介绍,只要通过遵循特定的指南,就可以使会话浮现在系统的各个位置,从而促进分享并使用户可以在上下文中与某人进行某些操作。


People first


文中所提到的 Android 11 中的更新表明了平台未来的发展趋势,和对人际交往相关的体验的持续提升。如果想要了解更多关于 Android 11 的更新内容和 API 指南,请参考 Android 开发者文档的会话页面。


相关信息


  • Android Developer 官方文档 | 会话
    https://developer.android.google.cn/preview/features/conversations
  • Android 消息通知
    https://material.io/design/platform-guidance/android-notifications.html


推荐阅读





 点击屏末 | 阅读原文 | 查看 Android Developer 官方文档 | 会话



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存