问题标签 [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 回答
1129 浏览

ios - Siri快捷方式:如何要求解锁手机

Siri Intent:是否可以要求用户在执行前解锁 iPhone?我不希望 Intent 导致启动相应的 iOS 应用程序。

如果我取消选中“支持后台执行”框(如下所示),Siri 需要解锁设备,但它也会启动应用程序,我不希望这样。

在此处输入图像描述

0 投票
1 回答
192 浏览

sirikit - iOS SiriKit:在 Intent 的“resolve”和“handle”方法之间传递数据

我正在尝试带有可自定义参数的新 iOS13 SiriKit Intents。它工作正常......我有多个参数,并且为每个参数调用'resolve'方法,然后是'confirm',然后是预期的'handle'。但是我在这些多个调用之间保持和传递“状态”时遇到了麻烦。当第一个参数被解析时,我想存储一些关于解析的额外信息,所以它可以在'handle'中使用。我打算使用 IntentsHandler 对象来保持这种状态,但显然每个“resolve”调用都会实例化一个新的 IntentsHandler 对象,所以这不起作用。

我们可以通过什么其他方式在“解决”和“确认”/“处理”方法之间传递“状态”,这在一个 Siri“事务”正在进行时是相关的?

0 投票
1 回答
223 浏览

ios13 - Siri Shortcuts 的 Intent Extension 在 Sample App 中有效,不在现有项目中

我正在尝试在我现有的 Obj-C 项目中使用 Intents Extension 来实现 iOS 13 中的会话快捷方式。我已按照所有步骤操作,并且这些程序在示例应用程序中运行良好。

但是当我在现有应用程序中尝试时,意图无法启动,它会自动重定向到我的父应用程序。

控制台报错如下

有没有人遇到过这样的意图问题?请分享您对此的看法。

附加信息:意图已注册。已经实现了 'handle' 'resolve' 方法并且还在接口中声明了它们。

让扩展的最小部署目标与父级相同(这造成了我之前错过的问题)。

0 投票
1 回答
250 浏览

ios - 如何为快捷方式应用自定义 SiriKit 意图扩展以请求允许访问?

我们可以通过扩展SiriKit为 Siri 构建自定义意图。此外,Apple 还介绍了如何管理Siri Shortcuts 和 Shortcuts 应用程序的基本集成和自定义

快捷方式应用链接

尽管如此,一些应用程序有自己的快捷方式 UI,并进行了一些定制;例如,使用允许访问 API 的按钮,我们该怎么做?

在 Apple 提供的文档中,没有关于如何在快捷方式应用程序中自定义关于我的应用程序创建的自定义意图的 UI 的说明。

我尝试对 Intent 响应进行自定义失败,但没有找到 API 访问选项。喜欢↴</p>

在此处输入图像描述

然而,在尝试首先运行 trello 时,与 Shortcuts App 呈现的 UI 没有什么相似之处 ↴</p>

0 投票
1 回答
118 浏览

c# - 带有 netstandard 的 xamarin 意图扩展导致 MT2001 错误

我正在尝试将 siri 意图添加到我的应用程序中。我创建了意图扩展项目,而不是创建了引用具有共享逻辑(核心)的 .netstandard 项目的 ios 库项目(文档中的套件项目)。

核心项目使用 MvvmCross,当我尝试构建主应用程序时,它会导致:

错误 MT2001:无法链接程序集。原因:处理“Diabetto.iOS.Intents, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”的引用时出错

通过更详细的日志,我知道了此错误的原因:

处理“Diabetto.iOS.Intents”的引用时出错---> Mono.Cecil.AssemblyResolutionException:无法解析程序集:“MvvmCross,版本=6.4.1.0,Culture=neutral,PublicKeyToken=null”---> Mono。 Cecil.AssemblyResolutionException:无法解析程序集:'MvvmCross,版本 = 6.4.1.0,文化 = 中性,PublicKeyToken = null'

我尝试将 nuget 引用添加到 iOS 类库、iOS 意图库(不成功,出现错误

未能添加参考。包“MvvmCross”试图添加对“System.Drawing.Common.dll”的框架引用,但在 GAC 中找不到

VS 2019 16.3.5,iOS 项目 13.1

要清楚,我的项目结构

项目结构

链接到项目

0 投票
2 回答
2736 浏览

swift - 当我的核心数据存储从后台扩展更新时,如何刷新我的 SwiftUI 视图?

我有一个带有意图扩展目标的 SwiftUI 应用程序。我还有一个位于共享应用程序组的核心数据存储。

newBackgroundContext()Intents 扩展可以使用Shortcuts 应用程序成功地将数据写入商店。我的 SwiftUI 应用程序可以从应用程序组中读取数据,viewContext但只有当我强制退出应用程序并重新打开它时。

我想我需要一种方法让我的应用知道它已在不同的上下文中更新,但我不确定如何做到这一点?

我已经尝试context.automaticallyMergesChangesFromParent = true在应用程序委托中设置并在 SwiftUI 视图中添加context.refreshAllObjects()onAppear但这似乎没有任何区别。

mergeChanges(fromContextDidSave:)看起来很有希望,但我不确定如何获得通知。

我是 Core Data 的新手并且非常困惑,所以任何正确方向的指针都会很棒,谢谢!

这是我当前代码的净化版本:

应用代理

场景代表

斯威夫特用户界面视图

意图扩展

0 投票
0 回答
31 浏览

ios - INActivateCarSignalIntent SiriKit 听觉/视觉意图混淆

在 SiriKit 中有INActivateCarSignalIntent允许您识别用户何时要求“听觉”或“视觉”信号。

例如,如果您说“按一下我的汽车喇叭”。INCarSignalOptions.audible将传递给您的处理程序。如果您说“让我的车灯闪烁” INCarSignalOptions.visual,则会将其传递给您的处理程序。

但是,上述文档指出:

用户可以通过多种方式让 Siri 激活汽车的信号。表 2 提供了一些不同语言的示例短语。您可以在测试期间使用这些短语来触发您的意图。此列表并不详尽,Siri 可能会识别许多其他短语。

这是令人困惑的,因为还有其他可以触发audible.visual意图的短语。这使得了解用户实际要求的内容变得不可靠。“视觉”和“听觉”太笼统了,可以适用于很多事情。例如“闪车灯”和“打开车灯”都触发INCarSignalOptions.visual

如果当您要求按汽车喇叭时,意图传递给您,那.honkHorn = true将更有意义(除此之外,所有其他 SiriKit 意图都是描述性的)。

我在这里缺少什么吗?是否有可靠的方法来了解用户在按喇叭、闪烁灯、打开灯等方面的要求?

0 投票
1 回答
572 浏览

ios - SiriKit Intents 扩展:动态提供值时避免/自动解析参数

我正在构建一个应用程序,它使用 Intents Extension 来跟踪各种指标,如体重、步数、炉膛速率等。我想根据他想要跟踪的指标向用户提供可供选择的测量单位。例如,如果用户跟踪饮用水,她可以在升、液量盎司、毫升或杯子之间进行选择,我将向她展示这些单位。如果用户跟踪步数,则唯一使用的单位是“步数”,为其提供消歧或动态选项是没有意义的。我注意到,当使用动态选项时,每次都会调用为其生成的provideUnitOptions函数,即使在解析函数中我发送了一个notRequired解析结果。

以下是我的意图处理程序中的函数:

在provideUnitOptions之前和之后调用 resolveUnit 函数可以 禁用动态选项,但在这种情况下,用户将无法使用快捷方式中的预定义单位。你觉得我应该怎么做?我错过了什么吗?谢谢!

0 投票
1 回答
1266 浏览

ios - SiriKit:在主应用程序中处理意图时如何设置输出属性?

语境

我正在努力将对 Siri Shortcuts (Intents?) 的支持添加到一个重要的应用程序中。我的主要目标是允许用户使用 Shortcuts.app 自动化应用程序中的一些任务。

我已经在目标中定义了MyIntent,与 一起,它具有输出属性。Intents.intentdefinitionIntents ExtensionMyIntentResponsefile: INFile

鉴于应用程序的非平凡性质,我将意图从Intent Extension主应用程序转发:

问题

一旦意图被转发到应用程序,该AppDelegate.application(_:continue:restorationHandler:)方法就会被一个用户活动调用,该用户活动也具有该属性interaction: INInteraction?集。

从提供的内容中,INInteraction我可以同时获得intent: INIntentresponse: INIntentResponse来相应地处理意图。

然而,缺少的是如何与 Shortcuts.app 就意图的结果进行通信并提供所需的输出属性 ( file: INFile) 的方法。

问题

如果在主应用程序中处理意图,是否有办法提供带有输出属性集的意图响应?

细节

有趣的是,有一种AppDelegate方法可以处理这个用例:

文件说:

带有 Intents 应用扩展的应用可以使用此方法直接处理意图,而不是在应用扩展中处理它。您可以使用此方法来实现无法在扩展中轻松实现的工作流。例如,您可以使用它来开始或管理用户的锻炼会话。如果您的应用程序未运行,SiriKit 会在后台启动您的应用程序,以便 Siri 界面保持活动状态。

更多信息:https ://developer.apple.com/documentation/uikit/uiapplicationdelegate/2887573-application

从理论上讲,应该可以只调用具有正确设置属性completionHandler的新实例化的。MyIntentResponsefile

但是,永远不会调用此方法。相反,上面提到AppDelegate.application(_:continue:restorationHandler:)的被调用。

0 投票
1 回答
236 浏览

ios - 在 Xcode 11.4/iOS 13.4 我发现 NSUserActivity 并不总是响应 setSuggestedInvocationPhrase

我有一个项目用于成功创建和更新NSUserActivity对象以提供 Siri 快捷方式和 Handoff。今天我第一次返回这段代码,有点惊讶地发现,如果我在设备上进行了调试构建并从 Springboard 运行它,它会崩溃并显示无法识别的选择器消息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSUserActivity setSuggestedInvocationPhrase:]: unrecognized selector sent to instance 0x280083580'

这个完全相同的二进制文件很好,当我运行它附加到调试器时。我不知道问题出在哪里。我创建了一个非常简单的测试应用程序,它表现出相同的行为。这是一个演示问题的简单 SwiftUI 视图:

我认为这段代码应该总是显示“你可以调用 setSuggestedInvocationPhrase”,当我从调试器运行它时它会显示。但是,如果我独立启动应用程序,我会得到“如果你调用它,setSuggestedInvocationPhrase 将会崩溃”。反而。

有没有其他人见过这样的事情?如果是这样,它是否在您在硬件上升级到 Xcode 11.4 和/或 iOS 13.4 后开始发生?我现在已经能够在 iPod Touch、iPhone 11 Pro Max 和 iPhone 8 的模拟器中重现这一点。

目前我正在通过respondsToSelector在设置短语之前明确检查来解决这个问题,但这不是一个很好的长期解决方案。