我正在尝试为自定义Siri Intent提供语音快捷方式,作为Apple Watch应用程序的一部分,但我不确定这是否可行。有没有人有这个成功或知道它是否得到支持?
在这种情况下,没有太多代码可以共享,因为大多数代码都是由Xcode自动生成的,但这里是我如何设置所有内容的快速概述。
我使用.intentdefiniton
文件创建了一个自定义Intent,并为我的iOS应用程序和watchOS应用程序创建了单独的Intents Extension目标来处理Intent。
我在适当的时候设置并捐赠快捷方式。我在我的应用程序中包含了一个INUIAddVoiceShortcutButton,因此用户可以轻松地为快捷方式添加或编辑短语。
一切都在iPhone上工作正常:快捷方式在整个iOS的相关时间显示,当我说Siri的调用短语时,iOS应用程序中的Intents Extension处理快捷方式。
由于我的应用程序用户中有20%使用Apple Watch应用程序,因此我希望在watchOS上提供一致的体验。正如预期的那样,捐赠的快捷方式显示在Siri表盘上。我从Siri表盘触发快捷方式,由Intents Extension处理,这是我的watchOS应用程序的一部分。
当我向Apple Watch(仅限3系列GPS)说出意图调用短语时,它不起作用。 Siri说:
检查应用程序...
然后几秒钟后:
我不认识那个命令。
我已经为我的watchOS应用程序尝试了一个单独的Intents扩展,没有。在这两种情况下我得到相同的结果。它适用于模拟器,但不适用于真实设备。
我还确保在.intentdefinition
文件的目标成员资格下选择了Watch Extension和Watch App。
我还尝试进入“设置”>“开发人员”并启用“显示最近的快捷方式”,然后点击“强制同步快捷方式”,但这不会改变行为。
Apple Watch是否支持这些自定义意图的语音快捷方式?我无法用Apple的文档说出这种或那种方式。 SoupChef示例项目设置了watchOS应用程序的Intents扩展,这让我觉得应该支持它。并且,因为它在模拟器上工作,这使我认为应该支持它。
但是,此页面未列出watchOS支持的自定义意图,因此我认为它们可能不受支持:https://developer.apple.com/design/human-interface-guidelines/watchos/user-interaction/siri/
如果有人能帮助我弄清楚这是否得到支持我真的很感激。我不确定我是做错了什么,或者这是不是支持。
问题出在我的Apple Watch上。
我可以通过擦除手表(设置>常规>重置>删除所有内容和设置)然后从备份恢复它来使其工作。