人与对话

“人与对话”计划是一项多年期 Android 计划,目的是在手机的系统界面中提升人与对话的比重。这种重视基于这样一个事实:对于形形色色的用户而言,与他人的沟通和互动仍然是绝大多数人最看重也是最重要的功能领域。

Android 11 中引入了许多新功能来支持“人与对话”计划。

对话空间


对话空间是人与人之间实时对话的专用通知区域。
图 1:对话空间。

在许多手机上,通知栏的顶部都会有一个单独的部分,其中仅包含与他人的实时对话(如包括群组对话在内的聊天消息和通话)。此空间内的通知在外观和行为上不同于许多手机上的常规通知:

  • 设计不同,着重强调代表人的头像,再加上进行对话所用的应用。
  • 与在 Android 10 中一样,点按通知即可在应用中打开对话(如果对话此前以对话泡形式显示,则会在对话泡中打开),点按文字插入点即可将通知栏中的新消息展开到完整篇幅,选项与以前一样。
  • 提供了对话专用的操作(某些操作通过长按来执行):
    • 将此对话标记为优先
    • 将此对话提升为对话泡(仅当应用支持对话泡时才会显示)
    • 将此对话的通知设为静音
    • 为此对话设置自定义提示音或振动

对话泡中的对话

如果通知满足对话要求,平台会将其以对话泡形式从抽屉式通知栏中启动。
图 2:通知以对话泡形式从抽屉式通知栏中启动。

在 Android 11 中,对话泡可以从“对话”部分中的通知启动。只有带关联快捷方式的通知才能以对话泡形式显示。在通知栏中标记为重要或触发了对话泡显示方式的对话会自动以对话泡形式显示。

对话快捷方式

对话的快捷方式会出现在启动器中,并且会与系统共享表单中长期存在的共享快捷方式一起出现。

API 准则

本部分介绍了用于在您的应用中利用人与对话空间的 API。

对话的快捷方式

为了参与这项以对话为中心的新计划,应用需要向系统提供长期存在的快捷方式。目前,您可以使用长期存在的动态快捷方式将通知呈现到对话空间,但我们强烈建议您使用长期存在的共享快捷方式;将来,我们预计会要求使用共享快捷方式。

如需发布对话的快捷方式,请调用现有的 ShortcutManager 方法 setDynamicShortcuts()addDynamicShortcuts()pushDynamicShortcut()(可自动为开发者管理快捷方式限制)。此快捷方式必须长期存在并附有关于一个人或多个人的 Person 数据,用于标识对话中的其他参与者。我们还建议您为快捷方式设置 LocusId,并使用该 LocusId 注释应用内 Activity 和 Fragment。这样做有助于系统根据应用的使用情况对对话进行准确排名。

如果某段对话已不存在,应用可以使用 removeLongLivedShortcuts() 删除相应快捷方式;这样做会让系统删除与这段对话关联的所有数据。虽然快捷方式可移除,但除非绝对必要,否则应用不得移除缓存的快捷方式;缓存某个快捷方式或许是因为用户与之互动来改变体验,移除该快捷方式会撤消这些更改,从而引起用户的不满。

对话通知

如果满足以下条件,会将通知视为对话通知:

  • 通知使用 MessagingStyle

  • (只有在应用以 Android 11 为目标平台时适用)通知与长期存在的有效动态或缓存共享快捷方式关联。通知可以通过调用 setShortcutId()setShortcutInfo() 来设置此关联。如果应用以 Android 10 或更低版本为目标平台,则通知不必与快捷方式关联,如回退选项部分中所述。

  • 在发布时,用户没有通过通知渠道设置使对话部分中的对话降位。

应用内对话和 LocusId

设备端智能技术可确定用户最有可能感兴趣的对话。有许多重要的信号,其中最重要的两个是每段对话中对话会话的新近度和频率。如果正确地标记了通过启动器快捷方式或在通知中与对话进行的互动,系统就会知道这些互动。不过,系统不知道完全发生在应用中的对话,除非也标记了这些互动。因此,我们强烈建议您LocusId 附加到快捷方式,并使用关联的 LocusId 注释应用内 Activity 或 Fragment。使用 LocusId 可让建议系统正确地对对话进行排名。如果您使用 setShortcutInfo() 将对话与快捷方式关联,对话系统会自动附加适当的 LocusId

对话空间对并非以 Android 11 为目标平台的应用有哪些要求

如果应用并非以 Android 11 为目标平台,其消息仍可呈现在对话空间中。不过,应用仍必须满足某些要求。本部分介绍了对这些应用有哪些要求,以及应用不满足这些要求时表现出的回退行为。

加入消息传递空间的核心要求是应用必须实现 MessagingStyle 通知,并且此类通知必须引用一个长期存在的快捷方式,该快捷方式在发布通知时发布。满足这些要求的通知会出现在对话空间中,其行为如下:

  • 通知以对话样式显示
  • 提供了对话泡按钮(如果已实现)
  • 以内嵌方式提供了对话专用的功能

如果通知不满足这些要求,则平台会使用回退选项来设置通知的格式。如果通知满足任意一种回退情况的要求,则会以特殊格式显示在对话空间中。如果通知不符合任意一个回退选项的条件,则不会显示在对话空间中。

回退:如果使用了 MessagingStyle 但未提供快捷方式

如果应用以 Android 10 或更低版本为目标平台,并且某条通知使用了 MessagingStyle 但未将消息与快捷方式关联,则该通知会显示在对话空间中,其行为如下:

  • 通知以对话样式显示
  • 没有提供“对话泡”按钮
  • 没有以内嵌方式提供对话专用的功能

回退:如果未使用 MessagingStyle 但将应用识别为即时通讯应用

如果某条通知未使用 MessagingStyle,但平台将应用识别为即时通讯应用,并且该通知的 category 参数设为 msg,则该通知会显示在对话空间中,其行为如下:

  • 通知以 Android 11 之前版本中的旧样式显示
  • 没有提供“对话泡”按钮
  • 没有以内嵌方式提供对话专用的功能

指导、使用和测试

本部分提供了有关如何使用和测试对话功能的一般指导。

我应该在何时使用对话?

对话通知和相关的快捷方式旨在改善实时对话的用户体验。例如,短信、文字聊天和通话就是用户期望能够快速沟通的实时对话。用户对电子邮件以及与对话无关的活动没有这样的期望。

我们为用户提供了相关功能,如果他们觉得给定的对话所在位置不合适,能够从对话部分中将其移除。

提供良好的快捷方式

如果您的应用以 Android 11 为目标平台,为了让消息出现在对话空间中,您需要提供快捷方式。应提供 AdaptiveIconDrawable 作为快捷方式的图标,否则您的快捷方式头像可能会被无意中裁剪。如需了解详情,请参阅提供快捷方式图像

您的快捷方式将在不同的系统界面中进行排名,包括系统共享表单(如果它是共享快捷方式)。如需详细了解如何确保系统提升您的快捷方式,请参阅获得最佳排名

测试对话通知和快捷方式

长按对话会打开对话相关操作的菜单。
图 3:您可以长按对话通知,然后检查是否出现了对话菜单,由此验证是否正确配置了对话通知。

如果您遵循对话空间准则,对话应自动出现在对话空间中。长按通知可验证快捷方式是否已与通知正确集成。如果正确实现了集成,则界面会显示与对话相关的操作;如果通知未与快捷方式关联,则界面会显示一些文字,说明应用不支持对话功能。

长按应用启动器时,会显示已添加的快捷方式。请务必测试这些快捷方式是否可以使您转到应用中的正确位置。

共享您的共享快捷方式可以接收的内容时,已添加的共享快捷方式会显示在系统共享表单的直接共享行中。