用途
SiriKit 技能面向希望在 iOS 与 watchOS 应用中接入 Siri 语音交互、快捷指令与智能建议的开发者。通过该框架,用户可以用语音或 Shortcuts 触发应用内的功能,系统也能基于用户行为给出智能建议。
主要能力
- 意图处理(Intent Handling):实现三步流程——解析参数(Resolve)、确认意图(Confirm)、执行意图(Handle)。参数校验可返回成功、缺值、多义消解或不支持等结果。
- 系统意图域:文档列出多个系统意图域,包括消息、通话、支付、约车、健身、媒体、照片、清单与笔记、车载命令、预约,并给出各域的代表性意图类,如
INSendMessageIntent、INStartCallIntent、INSendPaymentIntent、INRequestRideIntent、INStartWorkoutIntent、INPlayMediaIntent、INSearchForPhotosIntent、INCreateNoteIntent、INSetCarLockStatusIntent、INGetReservationDetailsIntent等。 - 自定义意图:通过创建
Intents.intentdefinition文件、按「动词+名词」命名、设置类别并定义参数类型来扩展意图。参数类型分为系统类型(字符串、整数、布尔、日期、人物、位置、货币等)与自定义类型(枚举或对象)。 - Shortcuts:支持在用户操作后捐赠快捷指令、删除指定或全部已捐赠的快捷指令。
- 应用内处理意图:应用被启动时可在 SwiftUI 或 UIKit 中通过 user activity 恢复并处理意图。
使用方式
- 新建 Intents Extension(File → New → Target → Intents Extension),如需自定义 Siri 界面可勾选 Include UI Extension。
- 在主应用 target 的 Signing & Capabilities 中启用 Siri 能力。
- 编写意图处理器:继承
INExtension,在handler(for:)中按意图类型分发,并在专用 handler 中实现 resolve、confirm、handle 方法。 - 配置 Info.plist:在 NSExtension 下声明
IntentsSupported、IntentsRestrictedWhileLocked、NSExtensionPointIdentifier(com.apple.intents-service)与NSExtensionPrincipalClass。 - 调用
INPreferences.requestSiriAuthorization请求 Siri 授权。 - 按需捐赠或删除 Shortcuts,并在应用内处理传入意图。
适用场景
适合需要在 Apple 平台上实现语音下单、发送消息、发起通话、支付、约车、健身记录、媒体播放、照片检索、笔记与任务创建、车载控制、预约等交互的应用。
限制与约束
- 后台执行:扩展运行时间短暂,长任务需启动主应用。
- 共享数据:应用与扩展之间需使用 App Groups 共享数据。
- 扩展内无 UI:自定义界面需使用 IntentsUI 扩展。
- 测试:安装后需等待系统识别新的意图。
- 本地化:需提供本地化的
AppIntentVocabulary.plist。