问题标签 [intents-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

ios - INPlayMediaIntent 忽略诸如“音乐”和“广播”之类的术语

我正在开发一个媒体应用程序,我想改进它的 Siri 交互。我已经实现了一个 Intents 扩展,将“广播”作为媒体类别,我正在改进resolveMediaItems方法。通常,如果我告诉 Siri Play <search query> in <my app>,然后INPlayMediaIntent在调试器中检查 ,我会看到类似这样的内容

其中mediaSearch.mediaName有来自扬声器的数据,我可以用它来解决查询。

不幸的是,如果查询中包含“音乐”或“广播”这些词,则这些词不会包含在该mediaName字段中。如果查询只包含这些词,例如, "Play music in <my app>"该字段将是<null>并且INPlayMediaIntent实际上将不包含任何内容。

鉴于应用程序提供的内容,了解是否使用了“音乐”和“广播”这两个词对于明智地解决查询是绝对必要的。谁能提供有关如何使这些术语在INPlayMediaIntent对象中可见的指导?

0 投票
0 回答
274 浏览

swiftui - 主机应用程序关闭时如何从 Intent Handler 中的 coredata 重新加载获取数据?

我目前正在使用 SwiftUI 开发应用程序。

IntentHandler每次关闭主机应用程序时,我都想从 CoreData 重新加载数据以更新更新的数据。

在 的情况下Widget,我们可以使用WidgetCenter.shared.reloadAllTimelines()来更新,但是在 的情况下我们如何更新数据IntentHandler呢?

在我的代码中,小部件中编辑视图列表中的数据仅在主机应用程序首次启动时接收数据。


以下是代码:

TimerApp.swift(主机应用程序)

IntentHandler.swift (IntentsExtension)


Xcode:版本 12.0.1

iOS:14.0

生命周期:SwiftUI 应用

0 投票
0 回答
33 浏览

ios - 如何在真正的 Apple Watch 上调试快捷方式意图?

我正在为 Apple Watch 开发一个处理快捷方式意图的应用程序。您可能知道意图在单独的线程上工作,因此不可能在 Xcode 中添加断点和调试它们。我在代码中添加了一些 os_log 调用,但我的问题是,当连接到真正的手表(而不是模拟器)时,控制台应用程序通常不显示日志流。

只有我有这种经历吗?是否有另一种方法可以在 Apple Watch 上测试和调试快捷方式意图?

0 投票
0 回答
24 浏览

ios - iOS SiriKit:仅语音响应?

我正在开发一个非常简单的应用程序,它带有一个不带参数并输出单个句子答案的 SiriKit 扩展。有没有办法让 Siri 大声说出这句话,还是我被迫实施 IntentsUI 扩展?

如果需要更多详细信息,请询问。

提前致谢 !

托马斯

0 投票
1 回答
20 浏览

ios - 运行 IntentsExtension 时,如何调试主应用程序?

我正在尝试在我的应用程序中实现 StartCallIntent。意图首先通过扩展来解析联系人,确定应用程序是否可以处理意图等。到目前为止,我的扩展部分正在工作,并且可以调试它。但是,一旦扩展程序完成处理,扩展程序将打开主应用程序以继续调用流程:

那时,我无法设置断点或查看主应用程序进程的任何日志。我只看到扩展日志/断点被触发。我怎样才能使主应用程序可以调试?

0 投票
1 回答
91 浏览

sirikit - SiriKit:在 IntentsDefinition 文件中定义的快捷方式未显示在 macOS 的快捷方式应用程序中?

我无法在 macOS Monterey 中向我的 macOS 应用程序添加一些基本的 SiriKit 操作。为了测试这一点,我创建了一个新项目,将其作为带有 Storyboard 的 macOS 应用程序。然后我添加了一个意图定义文件,并添加了一个基本意图,没有输入/输出。我在目标“常规”配置中将意图名称添加到“支持的意图”中。

当我构建并运行应用程序时,快捷方式不会显示在 Apple Shortcuts 应用程序中。我尝试在“Signing & Capabilities”中寻找“Siri”功能,但它没有在此处列出(与新的 iOS 应用程序相比)。

我不确定我在这里缺少什么。希望得到一些帮助。

顺便说一句,我在 macOS Monterey RC 上使用 Xcode 13.1。

这就是我的自定义意图的样子。

在此处输入图像描述

0 投票
0 回答
25 浏览

macos - 无法使用 fileURL 在快捷方式中加载图像文件

NSImage在应用程序或 Swift Playground 中适用于所有初始化程序。但是,内部快捷方式处理程序 URL/路径初始化程序无法加载图像。initWithData作品。唯一的区别是数据由INFile. file.fileURL 不是 nil 并且具有正确的 URL。图像是什么并不重要。

0 投票
3 回答
182 浏览

objective-c - 未调用自定义 Intent 处理程序 - iOS 声明 IntentHandlerMethodForIntent 未实现

我的自定义意图的 Objective-C 实现中的 IntentHandler 无法接收来自语音激活快捷方式的呼叫。当使用 Siri 调用捐赠的交互时,我观察到我在控制台应用程序中收到以下错误,声称意图的意图处理程序方法未实现:

此错误与尝试使用语音命令触发自定义意图导致 iOS 调用我的 appDelegate,特别是 application:continueUserActivity:restorationHandler: 的事实一致。根据文档,restoreHandler 仅应在未处理意图且必须由主应用程序处理的情况下调用。

由于 Objective-C 实现的文档很少,我无法弄清楚我缺少什么。我试图将 Siri Shortcuts 的示例 SoupChef 应用程序实现映射到我的实现。我无法弄清楚我哪里出错了。这是我的实现(对不起所有细节,但我希望你能看到一些错误):

首先,我实现了两个额外的目标;一个共享框架和一个意图扩展。我还实现了一个意图定义文件。

这是我的目标的图像:

在此处输入图像描述

W_P_r 是主应用程序,W_P_rKit 是共享框架,PartsListManagerIntents 是 Intents 扩展。

接下来,这是我的 Intents 定义文件和它所属的目标成员:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我还在 main 目标和 PartsListIntentManager 目标的 add 的功能部分中添加了一个应用程序组。我将 Siri 功能添加到主要目标。

所有这些都会自动创建一些代码,包括 PartsListManagerIntents 目标中的默认 IntentHandler.m 和 info.plist。我已将 info.plist 更新如下:

在此处输入图像描述

这是自动生成的 IntentHandler(我已对其进行修改以记录活动并调用驻留在 W_P_rKit 共享框架中的特定意图处理程序:

请注意,CreatePartsListIntentHandler 是一个实现 CreatePartsListIntentHandling 协议的类(IntentHandler 的解析、确认和处理方法)。

现在这里是应该触发 iOS 调用 IntentHandler 的相关实现:

在我的应用程序中,当用户填写新项目的名称时,我拨打电话以捐赠互动,如下所示:

对 donateCreatePartsListIntent 的调用执行以下操作:

一旦用户创建了空的部件列表(强制进行上述交互捐赠),视图控制器将显示一个“添加 Siri 快捷方式”按钮。点击按钮会自动调用以下方法来创建快捷方式:

对 prepareCreatePartsListIntent 的调用执行以下操作:

这确实会创建一个在快捷方式应用程序中可见的快捷方式。单击快捷方式或说出调用短语将直接将您带到应用委托的 application:userActivity:restorationHandler。但它不调用 IntentHandler。

为什么我的 IntentHandler 没有被调用?为什么 iOS 会发送错误消息 _invokeIntentHandlerMethodForIntent:intentHandler:parameterNamed:keyForSelectors:executionHandler:unimplementedHandler:?

实际上,我已经为此苦苦挣扎了好几个星期。任何帮助或提示都会很有帮助。

0 投票
0 回答
76 浏览

ios - iOS App Intents UI Extension多次调用configureView并多次显示我的视图

我正在将 IntentsExtension 和 IntentsUIExtension 用于消息传递应用程序,以允许用户使用 Siri 发送消息。

一切正常,消息发送一次,但是当显示扩展 UI 时,我在 configureView 中定义的视图显示 3 次。

这是默认的代码意图处理程序。使用此默认代码或我的自定义代码,结果是相同的。UI 扩展 IntentViewController 的 configureView 方法调用了 3 次:

和用户界面代码:

在 configureView 的完成处理程序上放置一个断点,我可以看到它被调用了 3 次。在我的应用程序中,这会导致自定义视图一个接一个地垂直堆叠出现 3 次。