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

How can I tell if my intent is running in the Shortcuts app?

在我的应用程序中,我创建了一个 SiriKit 意图,允许用户搜索人。

如果他们直接从 Siri 触发这个意图,那么我想用这个搜索字符串打开我的应用程序并显示结果 - 我可以通过将 .continueInAppNSUserActivity 传递给完成处理程序。

但是,如果意图是快捷方式应用程序中流程的一部分,那么我想将结果作为意图处理程序的输出传递 - 同样,我可以通过返回结果数组和 .success 到完成处理程序。

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

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

IMO,如果这真的是你想要的,唯一的选择是获取堆栈跟踪,识别 if/where 调用函数表现出 Siri/ShortCuts 之间的差异,然后从那里开始工作。

丑陋,但它会工作。