我正在尝试使用 SiriKit 开发一个应用程序来获取车门锁状态并从 Siri 进行设置。我关注了这个博客https://www.appcoda.com/sirikit-introduction/并进行了所有设置,将INStartWorkoutIntent替换为INGetCarLockStatusIntent。
但是,当我尝试为 carName 设置词汇表时,应用程序因以下异常而崩溃,
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不处理任何可能使用该类型词汇表的意图的应用程序非法尝试提供 INVocabularyStringTypeCarName 类型的词汇表”
我用来设置词汇的源代码是,
INPreferences.requestSiriAuthorization { (status) in
}
INVocabulary.shared().setVocabularyStrings(["benz", "bmw", "audi"], of: .carName)
在AppDelegate中,我添加了以下方法,
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard let intent = userActivity.interaction?.intent as? INGetCarLockStatusIntent else {
print("AppDelegate: Start Workout Intent - FALSE")
return false
}
print("AppDelegate: Start Workout Intent - TRUE")
print(intent)
return true
}
还创建了意图处理程序的扩展并实现了 INSetCarLockStatusIntentHandling、INGetCarLockStatusIntentHandling协议。当我尝试在 iPhone 10 中运行它时,我遇到了这个问题。