首页 > 解决方案 > 包含 Siri 和 Widget 的项目的 IntentHandler

问题描述

我将 Siri 添加到我的项目中,并使用 IntentHandler 来处理 Siri 的意图。然后我将 Widget 添加到我的项目中,因此也需要处理它的意图。

我扩展了我的 IntentHandler 的处理程序函数来处理 Widget 意图并且它可以工作,但是我不明白在我的 xcode 项目中,Widget 被配置为使用相同的 IntentHandler,我什至看到这个文件不包含在 Widget 目标中所以不明白它是如何工作的。

在文档中的任何地方都没有找到关于如何配置哪个意图处理程序将处理意图的解释,特别是是否可以定义多个 IntentHandler 实例,一个用于处理 Siri 的意图,另一个用于处理 Widget 的意图,如果是,该怎么做所以。

我也在 Apple Developer Forums 中问过这个问题,但没有得到任何回应。

标签: ios14sirikitwidgetkit

解决方案


在我的 xcode 项目中,Widget 配置为使用相同的 IntentHandler

在 Widget 扩展中,您只需指定要使用的 Intent(通过实现IntentConfigurationIntentTimelineProvider)。

在 IntentHandler 扩展中,您指定要支持的意图。

这一切都由父应用程序和 Intent 的类型连接起来。IntentHandler什么都不知道Widget(反之亦然)。


如何配置哪个意图处理程序将处理意图

可以在扩展的Info.plist文件中配置。IntentHandler具体在以下IntentsSupported部分:

在此处输入图像描述


如果可以定义多个 IntentHandler 实例,一个处理 Siri 的意图,另一个处理 Widget 的意图

是的,您可以创建两个IntentHandler扩展并在该部分中选择要支持的意图IntentsSupported(如上图所示)。


这是一个GitHub 存储库,其中包含不同的 Widget 示例,包括 Dynamic Intent Widget。


推荐阅读