如何在 SwiftUI 上处理带有参数的意图?

Ata*_*eis 5 ios siri sirikit sirishortcuts swiftui

我正在尝试使用 SwiftUI 和 Siri 在 iOS 上实现语音交互。我只是想找到使用单个字符串参数的快捷方式。我对这个框架非常陌生,并且一直被困住。以下是我尝试过的:

  • 开始 Scrumdinger 项目(来自 Apple SwiftUI 教程,我在 GitHub 存储库中找到了该教程。在任何 Siri 更新之前,我停在提交90731处)
  • 基于 NSUserActivity 创建了一个添加 Siri 快捷方式的按钮来创建新的 scrum,但没有任何参数;这有效(d64133
  • 后来我尝试了很多方法都没有效果:
    • 创建了一个意图扩展目标并与群组共享
    • 创建带有参数的意图,将其命名为“ScrumIntent”
    • 为意图创建了快捷方式
    • 请求 Siri 授权

目前,我的设置具有上述所有内容,我可以创建快捷方式,该快捷方式显示在快捷方式应用程序上。然而,它被卡住了,我什至不知道如何调试它。如果我尝试语音,Siri 会抱怨出了问题。如果我尝试单击快捷方式,它也会被卡住。下面你可以看到它是如何被卡住的图像,停止按钮几乎完成了。

在此输入图像描述

我试图在处理回调时简单地在用户默认值中设置一个字符串。无需对处理程序进行特殊检查。

关于实施的一些要点:

  • 处理程序仅位于扩展目标中,但我不确定这是否正确。在 SwiftUI 中,我们可以使用 NSUserActivities 修饰符onContinueUserActivity,但我找不到类似的意图(我知道我们需要参数意图)。
  • “添加 Siri 快捷方式”按钮仅定义 Intent 并设置suggestedInvocationPhrase

我应该在这里分享任何其他细节或重要的代码吗?我不确定,所以我现在只是分享了 github 链接。