通过 Siri 直接控制应用:用户可以对 Siri 说“查找我的航班”或“添加待办事项”等命令,Siri 会直接与应用交互。 让应用内容出现在 Spotlight 搜索中:用户无需打开应用就可以在 Spotlight 搜索到内容,比如从笔记应用中找到某个笔记内容。 支持快捷指令和自动化操作:用户可以创建快捷指令,在特定情境下自动执行应用操作。 使用硬件按钮触发操作:支持用户通过 iPhone 或 Apple Watch 上的按钮直接启动特定功能。
App Intents 的基本组成部分
App Intent(应用意图):定义应用中用户可以触发的具体操作,比如“打开文档”或“发送消息”。当用户通过 Siri、快捷指令或 Spotlight 搜索时,这些意图可以被直接调用。 App Entity(应用实体):表示应用中的具体内容,比如照片、联系人或文件。通过定义 App Entity,用户可以在 Spotlight 或 Siri 中搜索并访问这些内容。比如,一个食谱应用可以定义“食谱”实体,用户可以通过 Siri 搜索具体的菜谱。 App Enum(应用选项):用于定义一组选项,例如照片应用中的“相册分类”或任务管理应用中的“任务状态”。这样,Siri 在识别用户请求时可以更好地理解内容的上下文。
查询航班信息:通过 App Intent 定义“查看航班”操作,用户可以对 Siri 说“查找我的航班”,Siri 会直接从应用中提取相关信息。 Spotlight 搜索支持:用户在 Spotlight 中搜索航班号,就可以找到对应的航班信息,甚至不用打开应用。 快捷指令支持:用户可以设置一个快捷指令,例如“出差模式”,点击一下可以自动显示天气、航班和酒店信息。 Apple Watch 操作按钮:用户可以设置 Apple Watch 的操作按钮,快速访问当前航班信息或行程安排。
让应用内容与 Siri 和 Apple Intelligence 交互
使用场景举例
文档阅读应用:用户正在阅读一份报告,他可以问 Siri“这份报告的结论是什么?” Siri 会读取应用提供的文档内容,并总结结论。 邮件客户端:用户收到一封长邮件,但没有时间阅读,可以对 Siri 说“总结一下这封邮件的内容。” Siri 会通过应用的邮件内容为用户提供简要的概述。
如何实现
AppEntity
(应用实体)来定义应用内的内容。AppEntity
是一种数据结构,它可以描述特定的内容类型,例如照片、文档或网页链接。创建 AppEntity
后,开发者需要将它与应用的 NSUserActivity
对象关联,使系统可以识别并跟踪这些内容。AppEntity
,然后将它与用户的“正在查看照片”这个活动关联,这样 Siri 就能理解用户正在查看的具体内容。AppEntity
需要符合 Transferable
协议。该协议允许开发者定义内容的多种表示形式(如富文本、纯文本、PDF、图片等)。这样,无论用户是在发送邮件、保存文件,还是需要内容的不同形式,Siri 都可以处理这些请求。集成操作至 Siri 和 Apple Intelligence
使用特定领域的助手架构(Assistant Schema)实现功能
浏览器架构:如果一个应用是浏览器,开发者可以使用 .browser.tab
这个架构,用户可以询问 Siri 有关当前网页的问题。文件管理架构:对于文件管理应用,开发者可以使用 .files.file
架构,用户可以请求 Siri 总结文件内容。照片架构:对于照片应用,使用 .photos.asset
架构,用户可以让 Siri 回答关于照片中的对象问题(例如描述照片中的内容)。
什么是助手架构(Assistant Schema)?
photos.openAsset
这样的架构,可以让 Siri 理解你要展示一张照片。AppIntent:定义用户可以通过 Siri 触发的功能(比如打开一张照片)。 AppEntity:表示应用中的特定内容(比如一张具体的照片或一个文件)。 AppEnum:用于定义可选项(比如图片分类的不同选项)。
如何开始集成 Siri 和 Apple Intelligence?
满足助手架构的要求
不允许添加额外的必填参数:比如,如果“查看图片”只需要一个图片 ID,不能强制用户提供额外的信息。 可选参数只能在快捷指令中使用:这意味着一些扩展的选项(比如图片标题或描述)只能在快捷指令应用中看到,而不会影响 Siri 的基本操作。
创建应用意图并符合架构
确定应用的功能领域:每个应用意图都有自己对应的功能领域(例如,照片、文件、邮件等)。 在 Xcode 中创建新的 Swift 文件:使用代码补全工具,选择合适的架构,例如,输入 photos_
就会显示与照片领域相关的所有操作,比如openAsset
。使用宏来符合架构:添加 @AssistantIntent(schema:)
宏来告诉 Siri 这是一个特定功能,例如打开照片。构建和调试:通过编译代码,确保没有架构不匹配的错误。
确保内容和选项符合架构
更新和迁移现有意图
isAssistantOnly = true
,让它只被 Siri 识别,而不显示在快捷指令列表中。______________
点赞,关注关注关注!