我有一个 React Native 应用程序,但现在我主要关注 iOS 模块。 首先,我使用意图定义文件创建了一个意图,但后来我决定将其转换为应用程序意图。 总体而言,当我手动转到快捷方式应用程序、搜索该应用程序并添加具有模板的意图时,它按预期工作。 使用快捷方式应用程序添加后,我让 siri 询问我的参数,然后它启动应用程序,我收到用户在我的 swift/ obj c 代码中所说的参数。
我的问题是现在我不知道如何/在哪里可以将此意图作为快捷方式捐赠,以避免用户手动执行上述所有步骤。
这是我的应用程序意图代码的样子(通过将我的意图定义文件转换为应用程序意图生成)
import Foundation
import AppIntents
import UIKit
@available(iOS 16.0, macOS 13.0, watchOS 9.0, tvOS 16.0, *)
struct [AppName]Command: AppIntent, CustomIntentMigratedAppIntent, PredictableIntent {
static let intentClassName = "[AppName]CommandIntent"
static var openAppWhenRun = true
static var title: LocalizedStringResource = "[AppName] Command"
static var description = IntentDescription("A command should be done by [AppName]")
@Parameter(title: "Command")
var command: String?
static var parameterSummary: some ParameterSummary {
Summary("\(\.$command) by [AppName]")
}
static var predictionConfiguration: some IntentPredictionConfiguration {
IntentPrediction(parameters: (\.$command)) { command in
DisplayRepresentation(
title: "\(command!) by [AppName]",
subtitle: "The \(command!) should be done by [AppName]"
)
}
}
func perform() async throws -> some IntentResult {
print("SI.Command Performed: \(command ?? "No Command")") // Log for debugging
NotificationCenter.default.post(name: Notification.Name("[AppName]CommandTriggered"),
object: nil,
userInfo: ["command": command ?? ""])
// Example feedback to Siri
return .result()
}
}
@available(iOS 16.0, macOS 13.0, watchOS 9.0, tvOS 16.0, *)
fileprivate extension IntentDialog {
static var commandParameterConfiguration: Self {
"Work orders, Assets, Invoices"
}
static func commandParameterPrompt(command: String) -> Self {
"What is your \(command) for [AppName]?"
}
static var responseSuccess: Self {
"Done"
}
}
我尝试创建一个应用程序意图,我希望它出现在快捷方式应用程序中并被 siri 检测到,而无需手动执行。
AppIntents 在构建时自动“捐赠”。它们不再需要用户手动“添加”它们才能显示在 Siri 或快捷方式应用程序中。您仍然可以捐赠特定于您的应用的操作,以便 siri 可以随着时间的推移了解用户的行为并向用户建议这些操作。
在此处查看更多信息:https://developer.apple.com/documentation/appintents/intent-discovery
仅当有人直接使用您的应用程序界面时才捐赠意图。您不需要捐赠与 Siri 或与快捷方式应用程序交互相关的意图,因为系统会自动捐赠它们。当有人取消或撤销之前执行的操作,或者该操作不再相关时,您还可以删除捐赠。