如何将应用程序意图捐赠给快捷方式应用程序?

问题描述 投票:0回答:1

我有一个 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 检测到,而无需手动执行。

ios siri sirikit sirishortcuts appintents
1个回答
0
投票

AppIntents 在构建时自动“捐赠”。它们不再需要用户手动“添加”它们才能显示在 Siri 或快捷方式应用程序中。您仍然可以捐赠特定于您的应用的操作,以便 siri 可以随着时间的推移了解用户的行为并向用户建议这些操作。

在此处查看更多信息:https://developer.apple.com/documentation/appintents/intent-discovery

仅当有人直接使用您的应用程序界面时才捐赠意图。您不需要捐赠与 Siri 或与快捷方式应用程序交互相关的意图,因为系统会自动捐赠它们。当有人取消或撤销之前执行的操作,或者该操作不再相关时,您还可以删除捐赠。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.