会话

Android 11 对会话的处理方式进行了多项改进。会话是满足以下条件的通信:

  • 具有实时性。
  • 可为双向或多向通信,但不能是单向的性质。
  • 在两人或更多人(不能是聊天机器人)之间进行。

现在,这些对话显示在各自的区域中,这些对话的通知会突出显示并具有额外的功能:

  • 如果用户长按对话通知,系统会为用户提供多个选项:
    • 将对话提升为气泡(如果应用支持气泡)。
    • 为此对话创建快捷方式并将其添加到主屏幕。
    • 将此会话的通知设为静音或暂停通知。
    • 将此会话标记为非常重要。
  • 通知的设计采用新版本的 MessagingStyle,突出了用于代表用户的头像,同时还显示了进行对话的应用的图标。

如需标识某个对话以便对其进行这种特殊处理,应用需要向该对话发布快捷方式,只需调用 ShortcutManager 方法即可。您可以调用 setDynamicShortcuts() 以替换所有现有的快捷方式,或者调用 addDynamicShortcuts() 以添加新的快捷方式,而不移除现有的快捷方式。您还可以调用新方法 pushDynamicShortCut() 以添加单个快捷方式。对话快捷方式必须长期存在并附有个人数据,用于标识对话中的对方参与者。我们还建议您为快捷方式设置 LocusId,并使用该 LocusId 注释应用内 Activity 和 Fragment。这样做有助于系统根据应用的使用情况对对话进行准确排名。

如果某个对话已不存在,应用可以使用 ShortcutManager.removeLongLivedShortcuts() 删除相应快捷方式;这样做会让系统删除与该对话关联的所有数据。

当应用发送与对话相关的通知时,您必须使用 MessagingStyle包含对话快捷方式的链接。这样做可让系统为您的通知提供特殊的对话处理。

根据用户行为,系统可能会将某些对话指定为特别重要并进行缓存,让它们看起来更加显眼。您的应用不能影响对话是否会得到这种优先处理,但您可以通过调用新方法 ShortcutManager.getShortcuts() 并传递 FLAG_MATCH_CACHED 来找出当前缓存了哪些对话。