大多数浏览器和
Developer App 均支持流媒体播放。
-
带你的 App 登陆 Siri
了解如何利用 App Intents 将你的 App 功能公开给 Siri。了解有哪些现成的意图可供使用,以及如何创建自定意图以将你 App 中的操作整合到系统中。我们还将介绍应提供哪些元数据、如何确保实体支持“聚焦”搜索、如何标注屏幕引用,等等。
章节
- 0:00 - Introduction
- 1:44 - What's new with Siri
- 8:34 - Actions
- 15:38 - Personal context
资源
-
下载
欢迎观看本次讲座 今天的主题是 “带你的 App 登陆 Siri” 我叫 Daniel Niemeyer 是 Siri 团队的一名软件工程师 今天我将介绍如何 带你的 App 登陆 Siri 我将首先介绍我们为此建立的框架 然后介绍今年随着 Apple Intelligence 的推出 我们提供了哪些新功能 还有新的 API 这些 API 让 Siri 能够执行你 App 中的各种操作 此外还有一些可直接整合的个性化 情境功能 也非常值得期待 最后我将总结一下 今天讲座的关键要点 为什么应该将 App 与 Siri 整合? 借助 Siri 用户无论处于设备上的 哪个位置 都能执行你 App 中的操作 Siri 还提供了一种绝佳方式 让用户能够在注视 App 的同时 快速完成操作 我们来看看如何使用 我们现有的框架、SiriKit 和 App Intents 实现这一点 在 iOS 10 中 SiriKit 正式面世 它让开发者能够使用系统提供的意图 来实现用户已要求 Siri 完成的操作 例如播放音乐或发送短信 SiriKit 域仍是启用这类 功能的最佳方式 在本次讲座的后面部分中 你将看到这些域 在今年得到了怎样的进一步优化 在 iOS 16 中 我们 推出了 App Intents 这是一个全新框架 可将 App 与 Siri、 “快捷指令”、“聚焦”等整合 如果你的 App 与现有的 SiriKit 域不重叠 那就比较合适使用 App Intents 框架 要了解更多相关信息 请观看今年的 “利用 App Intents 为用户奉上 App 的核心功能”视频 今年得益于 Apple Intelligence 我们对 Siri 进行了重大改进 全新的大语言模型带来了更好的体验 如果你还没有将 App 与 Siri 整合 现在正是采取行动的好时机 Apple Intelligence 让我们 具备了必要的基础能力 从而让 Siri 取得了重大进展 具体表现在以下 3 个重要方面 首先 现在 Siri 对你说话时 听起来更加自然 其次 现在 Siri 与情境的相关程度 更高 也能为你提供更个性化的体验 Apple Intelligence 将为 Siri 提供 屏幕感知功能 让它能够理解 你注视的内容 并对这些内容进行操作 第三 由于 Siri 能够 理解更丰富的语言 现在 你可以更自然地与 Siri 对话 即使你说得磕磕绊绊 Siri 也能理解你的意思 如果你的 App 已采用 SiriKit 你会自动免费获得这些改进 但我们不想止步于此 我们重新设计了 Siri 体验 能够更深入地了解 你在设备上完成的操作 以便 Siri 能够代你 完成 App 内和跨 App 的更多操作 为此 我们在构建 App Intents 框架方面投入了大量精力 通过这种方式将各种 App 与 Apple Intelligence 紧密融合在一起 因此 我们构建了一系列新的 API 称为 App Intent 域 接下来我要介绍一下这些域 域是基于 App Intents 的 API 的集合 专门设计用于特定类型的功能 例如图书、相机或电子表格 在 iOS 18 中 我们 将发布 12 个这样的域 Mail 和 Photos 即日起开放试用 在接下来的几个月里 我们将推出更多域 其中每个域都会包含一组 丰富多样的新操作 这些操作经过训练和测试 不仅支持灵活的 语音交互 而且还非常易于采用 今年 Siri 将支持 12 个 域中超过 100 个不同的操作 我们来举例说明一下 诸如“Darkroom”之类的 App 可以使用 Set Filter 意图 让用户能够发出相应的指令 比如“将电影效果预设 应用于我昨天为 Mary 拍的照片” 如果你的 App 具有上述 任一域所涵盖的功能 这些新 API 就是专为你而设计的 我们也非常期待收到你的反馈! 而这一切仅仅只是开始 随着时间推移 Siri 将能够理解和完成 更多 App 中的更多操作 接下来 我要介绍一下如何 通过我们所说的“助理模式” 为 App Intent 域构建操作
“模式”是个含义很广的术语 所以我要明确一下它的定义 字典中将它称为某个类的所有成员 通用的概念 即某种普遍 或基本的类型或形式 我们来深入了解一下这种“模式”在 Siri 的情境中意味着什么
Apple Intelligence 由基础模型提供支持 这些模型在我们刚才谈到的域中 为 Siri 赋予了新功能 这些模型经过训练 能够 识别具有特定架构的意图 这种架构就是我们所说的模式 而“助理模式”就是我们所说的 API 如果构建了具有正确 架构的 App Intent 你就能受益于我们的培训 而无需担心自然语言的复杂性 你只需编写 perform 方法 就能让平台完成其余的工作
今年我们已经为 100 多种意图构建了模式 这些意图包括制作照片、 发送电子邮件等 每个模式都定义了一组输入和输出 它们对相应意图的 所有采用者都是通用的 这就是我所说的架构 你的 perform方法 位于整个几何结构的中央 你可以自由发挥创意 定义适合你 App 的体验 接下来 我要介绍一下使用 Apple Intelligence 的 Siri 请求 的生命周期 为大家演示 “助理模式”的实际应用 一切从用户请求开始 请求会路由到 Apple Intelligence 进而通过模型进行处理 我们的模型经过专门训练 可针对模式进行推理 让 Apple Intelligence 能够 根据用户请求预测一个模式 选择适当的模式后 请求会路由到一个工具箱 这个工具箱包含了来自 设备上所有 App 的 AppIntents 集合 这个集合按模式分组 通过让你的意图遵从某个模式 就能让模型对这个意图进行推理 最后通过调用 AppIntent 来完成操作 系统会显示结果并返回输出值 关于示意图 我们就说到这里 接下来我们来看一些代码 这里有一个 AppIntent 是用于创建相簿的 要想遵从某个模式 实现方法非常简单 只需在 AppIntent 声明之前 额外添加一个 Swift 宏即可 就像这样! 这个新的宏会接受某个模式的参数 而这个模式始终与某个 App Intent 域绑定 在这个示例中 photos 是域 createAlbum 是模式 由于模式的架构在编译时 处于已知状态 因此我不再需要 为 AppIntent 提供额外的元数据 这意味着 这里的代码 可以进一步缩减 变成这样!
遵从模式的意图在代码中更容易定义 这得益于已知的架构 尽管如此 有时候 架构未必是最灵活的 不过不要担心 在这个示例中 你可以解决这个难题 如果需要 还可以使用可选参数 对助理意图进行扩展 从而让架构变得更加灵活 AppIntents 框架不仅 包含用于构建操作的意图 还包含用于为 App 中的概念建模的实体 比如从这个意图 返回的 AlbumEntity
我们还添加了一个新的宏用于 向 Siri 公开 AppEntity 和意图一样 要想采用这种新类型 实现方法非常简单 只需在 AppEntity 声明中添加一行代码即可 助理实体也可受益于预定义的架构 从而让 App 实体的实现 变得更加简洁 而且 和助理意图一样 在需要时 助理实体也可以 声明新的可选属性 从而扩展至远超出架构的范围 比如我的 Album 实体上的这个 Album Color 属性 最后 我们不能抛下枚举不谈 向 Siri 公开 AppEnum 就像公开实体和意图一样简单 只需将新的 AssistantEnum 宏添加 到枚举声明 我们会完成其余的工作
与实体和意图不同的是 助理枚举 不会对枚举成员施加任何架构 因此在实现过程中 你可以充分表达自己的需求 刚才我介绍了新的助理模式宏 接下来看看 Xcode 演示吧? 我在开发一款媒体资料库 App 用于在设备上查看和整理照片 我来演示一下如何将我的 App 与 Siri 整合以完成多项操作 本次讲座也一并提供这个 App的示例代码 供大家下载 启动我的 App 后 你会进入这个精美的图库 其中包含可在我的设备上 查看的照片和视频 点按照片可全屏查看
还可以点按顶部的这个菜单 来完成收藏和共享等操作
接下来 我要转到 Xcode 来展示这个 App 的代码
我的 App 有两种基本的模型类型 素材和相簿 我来演示一下如何定义素材 素材是一个对象 表示 我的资料库中的照片或视频 素材有很多属性 例如 title 和 creationDate
在这个文件的底部 有一个 名为 entity 的计算属性 这个属性会在我的 asset 类之后 返回建模的 AppEntity 如你所见 这个实体包含了 许多直接从我的模型吸收的属性 我要选择“Jump to Definition” 看看 AssetEntity 是如何定义的 这个实体能够为我的 资料库中的给定素材建模 它会公开许多属性 例如 Title、 Creation Date、Location 等 实体是对你的 App 内容 进行建模的绝佳方式 与 App Intents 结合使用时 能让系统对实体完成多种操作 说到操作 我已经编写了 一个 App Intent 用于 在我的 App 中打开 特定的 AssetEntity 这个示例中有一个 OpenAssetIntent 它会接受目标参数、 要打开的素材以及完成这个 操作所需的几个 App 依赖项 例如我的 App 的导航管理器
我来展示一下如何 向 Siri 公开这个意图 并将我的 App 与 Apple Intelligence 整合 今年我可以利用 App Intent 域 通过采用新的打开照片 模式来做到这一点 我要将新的助理意图宏 添加到我的 App Intent 声明
开始输入时 我会获得代码补全建议 这些建议会全程为我提供帮助 首先选择 photos 域 然后 选择 openAsset 模式
这样就可以了 接下来 我要构建 App
哎呀 这里新出现的错误 是怎么回事? 向 Siri 公开我的意图时 我还 需要确保公开所有关联的实体或枚举 现在我们通过跳转至素材实体 的定义来修复这个错误
啊 我好像忘记公开我的实体了 我们可以将新的助理实体宏 添加到实体的声明 就能解决这个问题
当我开始输入时 自动补全功能 再次显示 photos 作为建议选项
现在我可以选择 asset 作为这个实体的模式
我们再次尝试进行构建
太好了 看起来我的意图 之前出现的错误得到了修复 不过 新增这一遵从性之后 现在我的实体 又出现了新的构建失败问题 我们的模型经过训练 能够 识别具有特定架构的实体 通过让实体遵从某个模式 编译器能 进行额外的检查来验证实体的架构 在这个示例中 我好像缺少 hasSuggestedEdits 属性 我们现在就把它加上
瞧 通过添加缺失的属性 现在我的实体能够 与模式的架构相匹配 构建成功了 编译器是一种绝佳的工具 可以帮助你 让现有的 App 意图遵从相关模式 如果你是从零开始构建 我们还会公开一些代码片段 来代你填充所需的架构
我的模型已经有了 将照片添加到收藏的方法 让我们使用这个方法 来构建新的 App Intent 从而向 Siri 公开这项功能
现在我们回到 AssetIntents 文件
这一次我们改为使用模板
我只需将这个占位符替换为 我的实际实体类型即可
检索我的 App 依赖项
然后实现 perform
这样就可以了
编译器没有问题 我的构建现在成功了 正如你在演示中看到的那样 助理模式可以对现有的 App Intents 进行额外的构建时验证 这项验证可确保你的模式实现与我们 训练模型时使用的架构相匹配 此外我们还公开了一些 Xcode 代码片段 让你能够更轻松地从头构建这些操作 接下来我们谈谈如何在“快捷指令” App 中测试和运行这些操作 和任何 App Intent 一样 遵从模式的 App Intents 会在“快捷指令” App 中 自动显示为操作 从而与整个 快捷指令生态系统连接起来 这个生态系统包括个人自动化 功能、主屏幕快捷指令等 如今 “快捷指令” App 是 测试助理模式的绝佳方式 在未来 这些意图和实体 将会自动与 Siri 配合使用 还记得上一个演示中的 OpenAssetIntent 和 UpdateAssetIntent 吗? 我来展示一下如何 使用“快捷指令”App 完成这些操作 并对它们 进行端到端测试 首先启动“快捷指令” App 可以轻点顶部的加号按钮 来创建新的快捷指令 然后可以轻点 AssistantSchemas 筛选出来自我的 App 的操作 我们首先使用 Open Photo 并且需要存储它
很好 现在存储它
我现在有了一个新的图块 轻点这个图块会执行之前看到的 Open-Asset-Intent
我看到了几个可供选择的选项 可以从中选择一个 在我的 App 中打开
如你所见 系统完成了这个操作 我的 App 导航到了右侧的图片 正如你在演示中看到的那样 如今“快捷指令”已成为 对操作进行测试的绝佳方式 在未来 这些意图将会 自动与 Siri 配合使用 刚才我在我的 App 中 构建了遵从模式的操作 并验证了这些操作 接下来 我很高兴能够 带你抢先预览个性化情境 Apple Intelligence 让 Siri 能够理解丰富的个性化情境 这意味着 Siri 能够 以安全且私密的方式 搜索设备上的所有可用信息 并对这些信息进行推理 我们先来看看 App 内搜索 这个操作建立在现有的 ShowInAppSearchResultsIntent 之上 让系统能够直接 利用 App 的搜索功能 Siri 可以直接将用户 导航到搜索结果 如果诸如“Superhuman” 之类的电子邮件 App 使用这个 AppIntent 用户就能够发出 “在 Superhuman 上查找自行车” 的指令 然后在 App 中查看结果
这里有一个 AppIntent 用于 在我的 App 中显示搜索结果 它遵从了现有的 ShowInAppSearchResultsIntent 类型 今天我们将在 system 域下 引入一个新的助理模式 用于将 App 的内建 搜索功能与 Siri 整合 要遵从这个新模式 只需 在 AppIntent 声明之前 添加一个 Swift 宏即可 就像这样!
这个搜索意图也可以 受益于预定义的架构 你甚至可以放置 ShowInAppSearchResultsIntent 类型 从而让 App Intent 的 实现变得更加简洁 在上一个演示的基础上 如果 Siri 也能搜索 我的 App 中的照片 岂不是很棒? 借助新的系统搜索宏 我可以 做到这一点 我来演示一下具体方法
我的 App 已经内建了搜索栏 因此我可以按位置来筛选图片
我可以键入“New” 筛选出 New York 的图片
接下来我们回到 Xcode 中 看看如何向 Siri 公开这个功能 我的导航管理器中已经有了名为 openSearch 的方法以及相关条件 这个方法能够将用户路由到一个页面 其中显示与给定条件匹配的搜索结果 我已经有了一个 Search Assets App Intent 这个意图会利用导航管理器 在我的 App 中显示结果 借助适用于系统操作的 新 App Intent 域 我现在可以向 Siri 和 Apple Intelligence 公开同一意图 我来演示一下具体方法!
为搜索添加这个新的助理模式后 Siri 就能直接将用户 路由到搜索结果 UI 这样就可以了 我们来构建这个功能 然后使用“快捷指令”运行这个功能 在实际应用中进行测试
我又可以打开“快捷指令” App 并创建一个新的操作 我可以筛选我的 App
这一次 我们使用 Search Photos 并且需要存储它 我们现在就运行它
由于这个 App Intent 使用 一个参数作为搜索条件 因此系统提示我输入一个值 我们来搜索“San Fran”
如你所见 系统 成功完成了我的操作 现在我看到了这张 美丽的金门大桥照片 正如你在演示中所见 App 内搜索提供了一种绝佳方式 让用户能够进入我的 App 通过美观的 UI 获取结果 今年 我们将进一步 扩充 Siri 的功能 让它能够在更深入地理解 App 的内容之后完成更多操作 现在得益于 Apple Intelligence Siri 逐渐具备了 执行语义搜索的能力 这意味着当我搜索“宠物”时 它不仅仅会查找“宠物”一词 还会找到猫、狗 甚至是蛇 现在借助 LLM Siri 可以理解什么是宠物 找到你的内容后 Siri 可以 直接对这些内容进行操作 比如将你喜爱的宠物照片 分享给你的好友 对于你的 App 你将能够使用 App Intents 框架来定义实体 从而提供这种额外的情境 遵从名为 IndexedEntity 的新 API 从而让 Siri 能够搜索 你的 App 中提供的内容 并通过语义索引提供信息 要进一步了解索引实体 请观看由我的同事带来的视频讲座 “App Intents 的新功能” 得益于 Apple Intelligence 的 强大功能 今年开启了 Siri 新纪元 将 App 与 Siri 整合所需的 工具即日起可供使用 在软件更新中 我们将逐步推出 刚才介绍的 App 内操作和 个性化情境功能 在这个讲座中 我演示了带我的 媒体资料库 App 登陆 Siri 的过程 但我们还没有看到实际应用中的演示 在今天的讲座结束之前 你可以抢先预览你的 App 在未来可以实现哪些操作
将这张照片添加到 “California”相簿中
通过电子邮件发送给 Josh
总结一下 得益于 Apple Intelligence 的全新大语言模型 Siri 现在比以往更强大、 更灵活、更智能 SiriKit 和 App Intents 是两个 用于将 App 与 Siri 整合的框架 如果你的 App 与现有的 SiriKit 域不重叠 那么使用 App Intents 框架就比较合适 说到智能 Siri 可以代表 用户在 App 内进行操作 采用新的 Assistant Schemas API 也能让你的 App 从中受益
这里提供了一些很棒的视频资料 接下来不妨看一看
谢谢观看!
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。