我正在使用App Intents框架为我的iOS16应用程序添加App Intents。
其中一个意图是打开我的应用程序数据库中所有事件的列表视图。 应用程序中的视图有许多可用的过滤器,我正在尝试在意图中复制其中一些过滤器。
我已经编写了几个选项 - 一个 AppEnum
显示时间范围(过去/未来/所有事件),以及一种出版物选择器(每个事件可以有零个或一个出版物)。
遵循WWDC2022会议中演示的技术Dive Into App Intents,我已经实现了这一点:
struct OpenEventsList: AppIntent {
static var title: LocalizedStringResource = "Open Events List"
static var openAppWhenRun: Bool = true
@Parameter(title: "Scope")
var scope: TimeScope
@Parameter(title: "Publication")
var publication: PublicationEntity?
static var parameterSummary: some ParameterSummary {
Summary("Open \(\.$scope) for \(\.$publication)")
}
@MainActor
func perform() async throws -> some IntentResult {
// implementation omitted
}
}
这将生成一个可用的快捷方式操作:
在WWDC演讲中,演讲者说:
你还可以定义哪些参数显示在折叠下面,哪些参数隐藏。这些API可以做一些很酷的事情,例如根据您意图的任何参数的实际值使用When和Otherwise API或Switch、Case和Default API来变化摘要。
...但我找不到任何解释这些API的地方。苹果的文档列出了一些涉及的协议,但仅此而已。
我想把发布选项移到折叠下面,以便默认参数摘要仅包括基于时间的选项,并且如果操作框展开,则显示发布选项(以及我稍后可能添加的其他选项)。