如何为 siri 快捷方式的每个自定义意图使用不同的视图控制器?

     2023-02-23     287

关键词:

【中文标题】如何为 siri 快捷方式的每个自定义意图使用不同的视图控制器?【英文标题】:How do I use a different view controller for each custom intent for siri shortcuts? 【发布时间】:2018-08-20 17:50:49 【问题描述】:

我已经成功地在我的应用程序中使用自定义意图制作了 siri 快捷方式原型。我想为不同的快捷方式类型定义自定义 UI。例如,IntentA 会显示一张带有很多标签的高卡片,而 IntentB 会显示一张带有图片和一个标签的短卡片。

我在 MainInterface 故事板中使用的 IntentViewController 和意图定义文件之间的代码中看不到任何直接链接。

如果可能,我希望在 MainInterface 故事板中定义 IntentAViewController 和 IntentBViewController 并相应地处理它们,但我看不到我会告诉扩展程序为每个意图加载哪个视图控制器或故事板 ID。

如果不可能,那么实现多个意图 UI 的最佳做法是什么? (我没有找到任何具有多个意图的教程)。

【问题讨论】:

【参考方案1】:

我在 Apple 的 SoupChef 示例应用程序中找到了解决方案。由于只有一个主 IntentViewController 和一个 MainInterface 故事板,使用 Intent 时您应该检测 Intent 类型并将必要的视图控制器添加为 IntentViewController 的 child

来自 SoupChef 中的 IntentViewController:

/* Different UIs can be displayed depending if the intent is in the confirmation phase or the handle phase. This example uses view controller containment to manage each of the different views via a dedicated view controller. */ if interaction.intentHandlingStatus == .ready let viewController = InvoiceViewController(for: intent) attachChild(viewController) completion(true, parameters, desiredSize) else if interaction.intentHandlingStatus == .success if let response = interaction.intentResponse as? OrderSoupIntentResponse let viewController = OrderConfirmedViewController(for: intent, with: response) attachChild(viewController) completion(true, parameters, desiredSize) (其中 attach child 调用 addChild、addSubview、didMove 并设置约束)

【讨论】:

这真的很有帮助。

如何在不捐赠意图或使用快捷方式的情况下利用 Siri 创建自定义对象?

】如何在不捐赠意图或使用快捷方式的情况下利用Siri创建自定义对象?【英文标题】:HowcanIutilizeSiritocreateacustomobjectwithoutdonatingintentsorusingshortcuts?【发布时间】:2019-05-0720:08:07【问题描述】:*使用Swift4.2和Xcode10.2我试图通过允... 查看详情

如何自定义有关“failureRequiringAppLaunch”类型的 Siri 意图响应的错误消息

...述】:我正在向我的应用程序添加一个Siri意图,以便在快捷方式应用程序中使用它。用户需要登录才能使用意图。当 查看详情

如何为层中的每个节点为 Keras relu 函数分配自定义 alpha?

】如何为层中的每个节点为Kerasrelu函数分配自定义alpha?【英文标题】:HowcanIassignacustomalphaforKerasrelufunction,foreachnodeinalayer?【发布时间】:2020-03-2501:35:17【问题描述】:我想为每个Keras激活函数添加一个特定于节点的变量。我希... 查看详情

如何为自定义 nemo 操作添加键盘快捷键?

】如何为自定义nemo操作添加键盘快捷键?【英文标题】:Howtoaddkeyboardshortcutforcustomnemoaction?【发布时间】:2016-12-2913:46:04【问题描述】:我有一个自定义nemo操作,如下所述:https://wiki.archlinux.org/index.php/Nemo#Nemo_Actions如何为此操... 查看详情

如何为 ACTION_OPEN_DOCUMENT 意图实现自定义 MIME 类型?

】如何为ACTION_OPEN_DOCUMENT意图实现自定义MIME类型?【英文标题】:HowtoimplementacustomMIMEtypeforACTION_OPEN_DOCUMENTintent?【发布时间】:2020-05-1500:26:16【问题描述】:我正在使用ACTION_OPEN_DOCUMENT意图来启动系统文件选择器。用户应该选择... 查看详情

如何为每个属性定义具有不同计时功能的 CSS 动画?

】如何为每个属性定义具有不同计时功能的CSS动画?【英文标题】:HowdoyoudefineaCSSanimationwithdifferenttimingfunctionsforeachproperty?【发布时间】:2011-09-2920:28:05【问题描述】:我正在使用CSS中的关键帧动画,我希望能够为我正在制作动... 查看详情

如何为其模型中文本的不同代码点自定义Java 9+ JTextField的视图?

】如何为其模型中文本的不同代码点自定义Java9+JTextField的视图?【英文标题】:HowtocustomizetheViewofJava9+JTextFieldfordifferentcode-pointofthetextinitsModel?【发布时间】:2020-08-0920:01:17【问题描述】:所有JavaSwing组件都使用MVC,每个组件都... 查看详情

如何为具有不同图形和媒体资产的不同发送方应用程序实现相同的自定义接收方应用程序?

】如何为具有不同图形和媒体资产的不同发送方应用程序实现相同的自定义接收方应用程序?【英文标题】:Howtoimplementsamecustomreceiverappfordifferentsenderappshavingdifferentgraphicsandmediaassets?【发布时间】:2015-06-1605:19:07【问题描述】:... 查看详情

如何为 HTML 验证提供自定义验证错误消息?

】如何为HTML验证提供自定义验证错误消息?【英文标题】:HowtogivecustomvalidationerrormessagesforHTMLvalidations?【发布时间】:2019-05-2117:47:28【问题描述】:当我使用默认HTML验证时,它会显示默认错误消息,而我不想向我的客户显示这... 查看详情

如何为 NavigationView 中的单个菜单项提供自定义图标颜色?

】如何为NavigationView中的单个菜单项提供自定义图标颜色?【英文标题】:HowtogivecustomiconcolorforasinglemenuiteminaNavigationView?【发布时间】:2016-03-2100:23:51【问题描述】:我正在使用安卓导航视图。我想为NavigationView中的某些项目提... 查看详情

如何为自定义帖子类型创建档案

】如何为自定义帖子类型创建档案【英文标题】:howcanicreatearchivesforcustomposttype【发布时间】:2014-10-1016:00:00【问题描述】:WordPress框架允许为您的每个自定义帖子类型构建不同的存档模板,例如:archive-event.phptaxonomy-event_category... 查看详情

如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器

】如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器【英文标题】:HowdoIgetdifferentviewcontrollersforabuttonclickincustomtableviewcell【发布时间】:2018-07-0507:22:51【问题描述】:如何为通过自定义tableViewCell提供的按钮中的... 查看详情

如何为每个测试模拟不同的 useLocation 值?

】如何为每个测试模拟不同的useLocation值?【英文标题】:Howtomockdifferentvalue,ofuseLocation,foreachtest?【发布时间】:2020-08-1000:07:06【问题描述】:我的react组件应该根据当前位置对状态进行一些更改。有自定义钩子,在组件加载时调... 查看详情

如何为 iOS 应用创建自定义容器视图?

】如何为iOS应用创建自定义容器视图?【英文标题】:HowdoIcreateacustomcontainerviewforaniOSApp?【发布时间】:2012-05-2314:18:14【问题描述】:我开始开发一个iPad应用程序,我希望顶部有一个工具栏,它会在其下方显示不同的视图,如下... 查看详情

如何为谷歌应用脚​​本功能创建自定义键盘快捷键?

】如何为谷歌应用脚​​本功能创建自定义键盘快捷键?【英文标题】:Howtocreatecustomkeyboardshortcutsforgoogleappscriptfunctions?【发布时间】:2012-11-2318:31:52【问题描述】:我正在尝试了解用GoogleDoc电子表格替换我的一些MicrosoftExcel电... 查看详情

如何为android中的所有视图使用相同的自定义字体?

】如何为android中的所有视图使用相同的自定义字体?【英文标题】:howtouseasamecustomfontfaceforalltheviewinandroid?【发布时间】:2013-10-0812:49:52【问题描述】:我想使用android中具有相同字体类型的所有组件,为此我正在为每个组件创... 查看详情

如何为不同的键盘布局使用默认快捷键?

】如何为不同的键盘布局使用默认快捷键?【英文标题】:Howtousedefaultshortcutsforadifferentkeyboardlayout?【发布时间】:2016-11-2413:37:20【问题描述】:默认情况下,我的Windows8.1系统使用德语键盘布局。AtmelStudio似乎在安装过程中检测... 查看详情

如何为数组中的每个创建一个具有唯一图像和选择器的自定义 UIButton?

】如何为数组中的每个创建一个具有唯一图像和选择器的自定义UIButton?【英文标题】:HowtomakeacustomUIButtonwithauniqueimageandselectorforeachfromanarray?【发布时间】:2012-12-0515:50:33【问题描述】:我有几个从NSMutableArray创建的UIButton。我... 查看详情