用户活动的最佳做法

本指南概述创建和更新用户活动的建议做法。 有关 Windows 上的用户活动功能的概述,请参阅在不同的设备上继续执行用户活动。 或者,有关其他开发平台上的活动实现,请参阅 Project Rome 的用户活动部分

注意

从 2021 年 7 月开始,通过其 Microsoft 帐户 (MSA) 跨其 Windows 设备共享了活动历史记录的用户将无法再在时间线中删除新活动。 他们将仍可在其本地电脑上使用时间线并查看其活动历史记录(最近使用的应用、网站和文件的相关信息)。 AAD 连接的帐户将不受影响。

何时创建或更新用户活动

由于每个应用都不同,因此由每个开发人员确定在应用中将操作映射到用户活动的最佳方式。 你的用户活动将展示在 Cortana 和时间线中,这些内容侧重于通过帮助用户恢复过去访问的内容,来提高用户的生产力和效率。

一般指南

  • 为一组相关用户操作记录单个活动。 这与音乐播放列表或电视节目特别相关:单个活动可以定期更新,以反映用户的进度。 在这种情况下,你会具有单个用户活动,它带有多个历史记录项,这些项表示跨多天或多周的参与时间段。 这同样适用于基于文档的活动,其中用户会在应用中逐步取得进展。
  • 将用户数据存储在云中。 如果你要支持跨设备活动,则需要确保将重新参与此活动所需的内容存储到云位置。 特定于设备的活动会显示在创建活动的设备上的时间线中,但无法显示在其他设备上。
  • 请勿为用户无需恢复的操作创建活动。 如果你的应用程序用于完成不保持状态的简单一次性操作,则你可能不需要创建用户活动。
  • 请勿为其他用户完成的操作创建活动。 如果外部帐户向用户发送消息或在你的应用中 @ 提及他们,则不应为此创建活动。 操作中心通知可更好地处理此类型的操作。
    • 协作方案是一种例外情况:如果多个用户在一起合作进行相同活动(如 Word 文档),则在某些情况下,其他用户在你的用户之后进行了更改。 在这种情况下,你可能要更新现有活动,以反映对文档进行的更改。 这涉及到更新现有用户活动内容数据,而不创建新的历史记录项。

适用于特定类型的应用的指南

虽然每个应用都有所不同,但大多数应用属于以下交互模式之一。

  • 基于文档的应用 — 为每个文档创建一个活动,其中包含一个或多个反映使用时间段的历史记录项。 在对文档进行更改时更新活动非常重要。
  • 游戏 — 为每个游戏保存或世界创建一个活动。 如果游戏仅支持单一级别序列,则可随时间推移重新发布相同活动,不过你可能想要更新内容数据以显示最新进度或成就。
  • 实用工具应用 — 如果你的应用中没有用户需要保留和恢复的内容,则无需使用用户活动。 一个很好的示例是简单应用(如计数器)。
  • 业务线应用 — 存在许多用于管理简单任务或工作流的应用。 为通过你的应用访问的每个单独工作流创建一个活动(例如,每个费用报表都是单独的活动,这样用户可以单击某个活动来查看是否批准了特定报表)。
  • 媒体播放应用 — 为内容的每个逻辑分组(如播放列表、节目单或独立内容)创建一个活动。 应用开发人员面临的根本问题在于,每条内容(电视剧集、歌曲)是计为独立内容还是集合的一部分。 一般而言,如果用户选择播放集合或连续内容,作为整体的集合便是活动。 如果他们选择播放单条内容,则该条内容便是活动。 请参阅下面更具体的指南。
    • 音乐:专辑/艺术家/流派 — 如果用户选择专辑、艺术家或流派并点击播放,则该集合便是活动;请勿为每首歌曲编写单独的活动。 对于较短集合(如单个专辑)或按随机顺序播放的集合,你可能不需要更新活动来反映用户的当前位置。 对于较长的顺序播放(如专辑或播放列表),记录你在专辑中的位置可能会十分有意义。
    • 音乐:智能播放列表 — 按随机顺序播放音乐的应用程序应为该播放列表记录单个活动。 如果用户第二次播放播放列表,则会为相同活动创建其他历史记录。 不需要记录用户在播放列表中的当前位置,因为顺序是随机的。
    • 电视连续剧 — 如果你的应用配置为在完成当前剧集后播放下一个剧集,则你应该为电视连续剧编写单个活动。 跨多个查看会话播放各个剧集时,你会更新活动以反映连续剧中的当前位置,并且会创建多个历史记录。
    • 电影 — 电影是单条内容,应具有自己的历史记录。 如果用户中途停止观看电影,则最好记录其位置。 当他们将来希望继续时,活动可以在其停止的位置继续播放电影,甚至是询问用户是希望继续还是从头开始。

用户活动设计

用户活动由三个组件组成:激活 URI、视觉对象数据和内容元数据。

  • 激活 URI 是一个 URI,可传递给应用程序或体验以便使用特定上下文恢复应用程序。 通常,这些链接采用方案的协议处理程序形式(例如“my-app://page2?action=edit”)。 由开发人员确定其应用如何处理 URI 参数。 有关详细信息,请参阅处理 URI 激活
  • 视觉对象数据由一组必需属性和可选属性组成(例如:标题、说明或自适应卡元素),使用户可以直观地识别活动。 请参阅下文,了解有关为活动创建自适应卡视觉对象的指南。
  • 内容元数据是可用于对特定上下文下的活动进行分组和检索的 JSON 数据。 通常,它采用 http://schema.org 数据的形式。 请参阅下文,了解有关填写此数据的指南。

自适应卡设计指南

当活动显示在时间线中时,系统会使用自适应卡框架显示它们。 如果开发人员没有为每个活动都提供自适应卡,则时间线会根据应用名称/图标、必需标题字段和可选说明字段自动创建简单卡。

鼓励应用开发人员使用简单的自适应卡 JSON 架构提供自定义卡。 请参阅自适应卡文档,了解有关如何构造自适应卡对象的技术说明。 对于在用户活动中设计自适应卡,请参阅下面的指南。

  • 使用图像
    • 如果可能,请为每个活动使用唯一的图像。 应用程序名称和图标会自动显示在活动的卡旁边;其他图像会帮助用户找到所查找的活动。
    • 图像不应包含用户需要阅读的文本。 此文本不可供具有辅助功能需求的用户使用,无法进行搜索。
    • 如果图像不包含文本并且可以裁剪到大约 2:1 比率,则应将它用作背景图像。 这会生成粗体活动卡,它会在时间线中突出显示。 图像会略微变暗,以确保文本在卡上保持可见,在这种情况下,建议仅使用活动名称,因为较小文本可能会变得难以阅读。
    • 如果无法将图像裁剪为 2:1,则应将它置于活动卡中。
      • 如果纵横比为方形或纵向,请将图像定位在卡的右侧并且无边距。
      • 如果纵横比为横向,请将图像定位到卡的右上角。
  • 每个活动都需要提供活动名称(应始终显示)。
    • 此名称应使用大型粗体文本选项显示在卡的左上角。 名称易于识别会十分重要,因为当活动在 Cortana 方案中显示时,这是用户会看到的唯一部分。 在时间线中显示相同名称会使用户能够更轻松地浏览大量活动。
  • 为应用中的所有活动使用相同视觉样式,以便用户可以在时间线中轻松找到应用的活动。
    • 例如,活动应使用相同的背景色。
  • 请谨慎使用补充文本信息。
    • 避免使用文本填充卡,只使用补充信息来帮助用户查找正确的活动或反映状态信息(例如特定任务中的当前进度)。

内容元数据指南

用户活动还可以包含内容元数据,Windows 和 Cortana 会使用这些元数据对活动进行分类并生成推断。 活动随后可以围绕特定主题进行分组,例如位置(如果用户在研究假期)、对象(如果用户在研究某个事物)或操作(如果用户在不同应用和网站上购买特定产品)。 最好同时表示活动中涉及的名词和动词。

在下面的示例中,内容元数据 JSON(遵循 Schema.org 的标准)表示情景:“John 和 Steve 一起玩了《愤怒的小鸟》。”

// John played angry birds with Steve.
{
  "@context": "http://schema.org",
  "@type": "PlayAction",
  "agent": {
    "@type": "Person",
    "name": "John"
  },
  "object": {
    "@type": "MobileApplication",
    "name": "Angry Birds."
  },
  "participant": {
    "@type": "Person",
    "name": "Steve"
  }
}

关键 API