ios - INSearchForNotebookItemsIntentResponse 与单个任务列表
问题描述
我使用 INSearchForNotebookItemsIntent 通过自定义 Intent UI 在 Siri 的界面中显示列表和项目。当返回一个成功的 INSearchForNotebookItemsIntentResponse 并且 TaskLists 数组属性中只有一个任务列表并且(并且响应的任务数组为空)时,SiriKit 无法加载我的自定义 Intents UI,而是加载 Apple 的默认 UI。
如果提供了多个多任务列表,自定义 Intents UI 将按预期加载。
更糟糕的是,Apple 的 UI 有这些奇怪的复选框,它们既不与我的应用程序或自定义 Intent UI 协调,也不做任何事情。它们没有连接到任何地方,即使它们看起来与 Apple 的提醒复选框相同,点击它们也无济于事,也无法提供交互。
为了解决这个问题,我一直在将一个虚拟 INTask 对象填充到响应上的任务数组中,这会导致自定义 UI 呈现(从 Things 应用程序的 Siri 界面中发现了这个技巧)但真的很不想这样做:它在自定义 UI 的底部添加了一个残留的“标题”,上面写着Items,当 Siri 说话时,她会说一些类似于“找到两个项目”的内容,因为虚拟对象与找到的列表一起被考虑。
自从我开始使用 SiriKit API 以来,我就已经通过它学习了 YMMV,但这是一个困扰我的应用程序并继续存在于 iOS 12 预览中的特殊问题。
解决方案
这与您提供关键见解的几乎同一时间的这篇文章有关。似乎对于response.notes
and response.taskLists
,调用 IntentsUI 扩展需要两个或多个项目。对于response.tasks
,一个或多个就足够了。
如果您从一个任务列表更改为仅一组任务(即使只有一个工作),您的一个问题可能会得到解决。如果您不喜欢单选按钮,请设置INTask.taskType
为.notCompletable
或.unknown
。我猜点击单选按钮将触发具有该标识符的该任务的某些活动,但尚未尝试使用该 b/c 它不适用于我的应用程序。
推荐阅读
- json - Azure App Services 在配置中添加字符串数组
- javascript - 从 Frida 的非主线程调用 API 来修改应用程序的 GUI
- reactjs - 我需要在 react js 中提交表单的帮助
- reactjs - 如何使用 yup(和 react-form-hooks)验证 CreatableSelect 组件(多选)
- sql - 如何在 SQL 中插入 2 列而没有空值?
- json - 使用数组时未正确处理 Yaml
- c# - 我使用 MongoDB C# 驱动程序 FindAsync 的方式有缺陷吗?
- angular - 获取返回当前页面的事件,离子导航
- sql - 具有 CLOB 数据类型的 NVL 函数
- javascript - 反应上下文提供者返回未定义为组件