You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SiriKit开发汽车门锁应用时设置carName词汇致应用崩溃

解决SiriKit设置carName词汇时崩溃的问题

我之前做SiriKit汽车相关Intent的时候也踩过这个坑,你的崩溃异常NSInternalInconsistencyException加上“Illegal attempt to provide vocabul...”的提示,大概率是词汇配置的类型或时机不符合SiriKit的规则,下面给你几个针对性的解决办法:

1. 确认词汇类型完全匹配

INGetCarLockStatusIntent里的carName对应的Siri词汇类型必须是INVocabularyStringTypeCarName(Swift里简写为.carName),如果你误用了之前教程里的workoutActivityName这类其他类型,就会触发这个崩溃。

正确的调用写法参考:

// 放在主App的启动流程中执行
let myCarNames = ["我的Model 3", "家庭代步SUV"]
INVocabulary.shared().setVocabularyStrings(myCarNames, for: .carName)

2. 必须在主App中设置,且时机要早

  • 绝对不能在Intent Extension里设置Siri词汇,Extension没有权限修改Siri的词汇库,必须把配置代码放在主App的启动逻辑里(比如AppDelegate的didFinishLaunchingWithOptions,或者SceneDelegate的scene(_:willConnectTo:options:))。
  • 不要等到处理Intent的时候才去设置词汇,这时候SiriKit的上下文已经初始化完成,再修改就会触发内部一致性异常。

3. 检查词汇内容的合法性

虽然这个情况比较少见,但如果你的carName数组里包含空字符串、特殊不可见字符,也可能导致Siri拒绝接收词汇。建议先测试纯文本的简单名称,确认没问题后再扩展复杂内容。

如果还是有问题,可以查看完整的崩溃日志,异常信息后面通常会附带更具体的提示(比如“invalid type for carName intent”),能帮你更快定位问题。

内容的提问来源于stack exchange,提问作者Vidhya Sri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:03:20