App Intents 是什么

App Intents 是苹果新的"把 App 能力暴露给系统"的方式。用它声明一个操作后,Siri、快捷指令、Spotlight、锁屏都能直接调用,用户不用打开 App 就能完成一件事。

把 App 的动作登记一下,系统就能替用户喊它。

这篇写一个最小可用的 Intent。

以前要接 Siri 和快捷指令得写一堆 SiriKit 扩展和配置文件,门槛很高。App Intents 把这些都简化成一个 struct,加几行代码,编译时系统自动把它登记到能力库里。你不用管 Siri 怎么识别、快捷指令怎么对接,系统帮你串。这也是为什么苹果在推它——开发者多写一行,用户在系统层面多一个可用动作。

写一个 Intent

struct AddNoteIntent: AppIntent {
  static var title: LocalizedStringResource = "记一笔"
  func perform() async throws -> some IntentResult {
    NoteStore.shared.add("随手记")
    return .result()
  }
}
Intent 速查
  • AppIntent协议声明操作。
  • perform真正执行动作。
  • title系统里显示的名字。

perform 是真正干活的地方,可以 async,里面 await 网络请求、读数据库都行。返回 IntentResult 告诉系统干完了;带返回值的 Intent 可以把结果交回 Siri 念出来,比如"查余额"直接报数字。

声明完的 Intent 会自动被系统索引到 Spotlight 和快捷指令,用户不用做任何额外配置。把高频动作都做成 Intent,用户体验立刻上一档。

带参数的 Intent

加一个 @Parameter,Siri 会自动问用户补全。

@Parameter(title: "内容") var text: String

带参数后,用户对 Siri 说一句话,Siri 会自动把话里的关键信息填进参数;用户手动在快捷指令 App 里搭流程时,这个参数就是要填的空。参数还能设默认值、枚举候选,越清楚越好用。

Siri 与快捷指令

声明完 Intent,它自动出现在"快捷指令"App 的动作库里,用户可以拼成自动化。说一声"Siri,记一笔"也能直接触发。

苹果 App Intents:一颗发光语音助手光点向多个应用入口节点发送连线、节点围绕中心发光六边形核心的蓝调插画
语音助手光点向一圈应用入口节点发出连线,中心是发光六边形。