Issue #930
AppIntents
Declare AppShortcutsProvider
, note that appShortcuts
uses @AppShortcutsBuilder
syntax
import AppIntents
struct OurShortcutsProvider: AppShortcutsProvider {
static var shortcutTileColor: ShortcutTileColor = .lightBlue
@AppShortcutsBuilder
static var appShortcuts: [AppShortcut] {
AppShortcut(intent: AskIntent(), phrases: [
"Hey Joy",
"Ask \(.applicationName)"
])
}
}
We can create an app intent in code
import AppIntents
import OpenAI
struct AskIntent: AppIntent {
static var title: LocalizedStringResource = "Hey Joy"
static var description: IntentDescription = "Ask me anything"
@Parameter(title: "Prompt")
var prompt: String?
static var parameterSummary: some ParameterSummary {
Summary("Ask question \(\.$prompt)")
}
func perform() async throws -> some ProvidesDialog {
guard let prompt else {
throw $prompt.needsValueError("Please provide a question")
}
let client = ChatService()
let content = try await client.ask(prompt: prompt)
if let content {
return .result(dialog: IntentDialog(stringLiteral: content))
} else {
return .result(dialog: "No valid answer")
}
}
}
Update parameters
If the intents have dynamic parameters, we can tell AppIntents to refresh its parameters list, using updateAppShortcutParameters
OurShortcutsProvider.updateAppShortcutParameters()
Show tip view
Use SiriTipView
SiriTipView(intent: ReorderIntent(), isVisible: $isVisible)
.siriTipViewStyle(.black)
Show link to open Shortcuts app
Use ShortcutsLink
ShortcutsLink()
.shortcutsLinkStyle(.whiteOutline)
Troubleshoot
Look for appintentsmetadataprocessor
in build log for potential errors
Some possible warnings
Metadata extraction skipped. No AppIntents.framework dependency found.
Start the conversation