如何判断我的意图是否正在“快捷方式”应用程序中运行?

Pau*_*w11 7 ios swift sirikit sirishortcuts

在我的应用程序中,我创建了一个SiriKit意图,该意图使用户可以搜索人。

如果他们直接从Siri触发了此意图,那么我想使用该搜索字符串打开我的应用程序并显示结果-我可以通过将.continueInApp和传递NSUserActivity给完成处理程序来实现。

但是,如果意图是Shortcuts应用程序流的一部分,那么我想将结果作为意图处理程序的输出传递-再次,我可以通过返回结果数组并返回.success到完成处理程序来做到这一点。

我的问题是我的处理程序如何确定运行它的上下文,以便它可以启动我的应用程序或在适当的情况下直接返回结果?

Ale*_*lex 5

我可能是错的,但是我不认为iOS会公开此类信息(发起人,例如Siri或ShortCuts),因为这将使开发人员能够定义不同于其Intent静态定义(其中Siri / ShortCuts是应该透明地行动)。我怀疑苹果会同意这一点。

IMO,如果这确实是您想要的,唯一的选择是进行堆栈跟踪,确定调用函数是否/在哪里显示出Siri / ShortCut之间的差异,然后从那里开始。

丑陋,但是会起作用。