如何让AppIntent请求数字类参数?以书籍页数查询为例
创建支持页数参数的AppIntent实现方案
你不需要为每一页单独创建Intent,只需要给你的SiriSearchPage添加一个页数参数,让系统自动询问用户想要跳转的具体页码即可。以下是优化后的完整实现:
struct SiriSearchPage: AppIntent { static var title: LocalizedStringResource = "跳转到指定书页" static var description = IntentDescription("让应用跳转到书籍的指定页码") static var openAppWhenRun: Bool = true // 定义页数参数,设置标题和描述,让系统理解该参数的用途 @Parameter(title: "页码", description: "你想要跳转的书籍页码") var pageNumber: Int static var parameterSummary: some ParameterSummary { // 告知系统参数的交互逻辑,Siri会据此询问用户 Summary("跳转到书籍的\(\.$pageNumber)页") } @MainActor func perform() async throws -> some IntentResult { // 在这里实现跳转到指定页码的逻辑 // 例如:BookReaderManager.shared.jumpTo(page: pageNumber) return .result(dialog: "已为你跳转到第\(pageNumber)页") } }
关键部分说明:
- @Parameter:通过这个属性标记页数参数,系统会自动处理用户的输入(包括语音或文字),无需手动创建多个Intent。你可以设置参数的标题和描述,帮助Siri和用户理解参数的作用。
- parameterSummary:这里的摘要定义了Intent的交互句式,系统会根据这个内容生成自然的询问语(比如Siri会问“你想要跳转到第几页?”)。
- perform方法:在这个方法里拿到用户输入的
pageNumber,执行实际的页面跳转逻辑即可,最后可以返回对话反馈给用户。
内容的提问来源于stack exchange,提问作者SirEdwardIII
相关产品推荐
相关产品推荐

