We are using Intent for app shortcuts which allows user to select name from array of string. In the intent, there is only one parameter name.
After migrating to app intent, it does not preserve the name of existing shortcut and every time it asks for the name. For example, I have an existing app shortcuts with name "Book 1". After migrating to AppIntent, if I run same shortcut, it ask for the name again. We are passing same books array in DynamicOptionsProvider and provideNameOptionsCollection method.. Here is the code:
@available(iOS 16.0, *)
struct CreateBook: AppIntent, CustomIntentMigratedAppIntent, PredictableIntent {
static let intentClassName = "BookIntent" // Intent name: Book
static var title: LocalizedStringResource = "Book"
static var description = IntentDescription("Book")
@Parameter(title: "Name", optionsProvider: BookNamesOptionsProvider())
var name: String?
private struct BookNamesOptionsProvider: DynamicOptionsProvider {
func results() async throws -> [String] {
["Book 1", "Book 2"]
}
}
static var parameterSummary: some ParameterSummary {
Summary("Create \(\.$name)")
}
static var predictionConfiguration: some IntentPredictionConfiguration {
IntentPrediction(parameters: (\.$name)) { name in
DisplayRepresentation(
title: "Create \(name!)",
subtitle: "Create Book"
)
}
}
func perform() async throws -> some IntentResult {
...
}
}