ios - 如何为 Siri 快捷方式的每个自定义意图使用不同的 View Controller ?

标签 ios swift sirikit sirishortcuts

我已经成功地使用自定义意图在我的应用程序中制作了 Siri 快捷方式原型(prototype)。我想为不同的快捷方式类型定义自定义用户界面。例如,IntentA 将显示一张带有大量标签的高卡片,而 IntentB 将显示一张带有图像和一个标签的短卡片。

我在 MainInterface Storyboard中使用的 IntentViewController 和意图定义文件之间的代码中没有看到任何直接链接。

如果可能,我希望在 MainInterface Storyboard中定义 IntentAViewController 和 IntentBViewController 并相应地处理它们,但我不知道在哪里告诉扩展为每个意图加载哪个 View Controller 或 Storyboard id。

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

最佳答案

我在 Apple 的 SoupChef 示例应用程序中找到了解决方案。由于只有一个主 IntentViewController 和一个 MainInterface Storyboard,因此使用意图,您应该检测意图类型并添加必要的 View Controller 作为 IntentViewController 的

来自 SoupChef 中的 IntentViewController:

/* 根据意图是处于确认阶段还是处理阶段,可以显示不同的 UI。 此示例使用 View Controller 包含通过专用 View Controller 来管理每个不同的 View 。 */ 如果交互.intentHandlingStatus == .ready { 让 viewController = InvoiceViewController(for: 意图) 附加子( View Controller ) 完成(真,参数,期望大小) } 否则如果交互.intentHandlingStatus == .success { 如果让response=interaction.intentResponse为?订单汤意向响应 { 让 viewController = OrderConfirmedViewController(for: 意图, with: 响应) 附加子( View Controller ) 完成(真,参数,期望大小) } } (其中 Attach child 调用 addChild、addSubview、didMove 并设置约束)

关于ios - 如何为 Siri 快捷方式的每个自定义意图使用不同的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51936071/

相关文章:

ios - Xcode 4.2.1 : UIPickerView causing memory leak, 使用 ARC

ios - 定期在 UITextField 触发方法

ios - 本地化自定义 SiriKit 意图

ios - 我们可以使用Sirikit进行语音识别吗

ios - 申请 HomePod

C# .NET 3.5 : Memory Pool, 知道对象何时被释放?

iphone - 两个UITableViewCellStyleDefault单元格之间的一个像素-无法在其上绘制

ios - App Store 上传真的很慢,占用了我的互联网连接

ios - 对 CoreData 中的 1 个条目使用 Fetched Results Controller

swift - 为什么 NSData(contentsOfURL : url) always nil?