本指南概述了创建和更新用户活动的建议做法。 有关 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"
}
}