从自定义快捷键操作中传递参数



我想为我的倒数计时器应用程序创建一个自定义快捷方式操作,该操作返回一个包含剩余倒计时时间的变量。 从自定义快捷键操作返回参数是 iOS 13 的一项新功能,但我没有成功让它工作。

我尝试过什么

我已经定义了我的意图,并使用常规过程在 Xcode 11 中创建了一个意图扩展。 我已经成功地将操作捐赠给了Siri/Shortcuts,并通过与Siri交互以及从iOS 13.1下的Shortcuts应用程序启动它们来使它们正常运行。目前,我的一个操作让Siri报告一个描述剩余时间的字符串,并在IntentsUI扩展中显示时钟滴答作响。 从快捷方式运行时,此操作将成功显示 IntentsUI 扩展 ViewController。 我希望此操作传递一个参数,其中包含其他快捷方式操作可以使用的剩余时间。

我创建了一个输出参数,并使用本 WWDC 2019 视频 29:51 中所述的步骤将其分配给意图响应。这涉及修改应用的 intentsdefinition 文件以定义变量,将其作为属性添加到 Intent 响应,并将其标记为输出。Xcode 的意图代码生成成功地将输出变量添加到我的意图处理协议中,并且我能够在我的意图处理程序中访问和填充输出变量。

什么不起作用

不幸的是,当我在快捷方式中运行该操作时,它似乎没有提供输出变量。例如,如果我在其下方添加"文本"操作,则没有将我的自定义操作连接到文本操作的行。 如果我尝试将变量添加到以后的操作中,该变量不会出现在可用变量列表中,也不会在我点击"魔术变量"按钮时从我的操作中挂起。

我知道其他应用程序开发人员已经成功地实现了带有输出参数的快捷方式操作,所以我似乎不是 Xcode 11 或 iOS 13 错误(其中有很多(。 任何帮助/建议将不胜感激。

想通了! 为了未来的读者...

如果要从自定义快捷方式中传递参数,则需要选中 intent definiton 文件中的"Intent 是用户可配置的"。 即使像我一样,没有输入参数供用户配置,您也需要这样做。 从上面引用的WWDC视频中,这一点并不明显。

最新更新