Я пытаюсь разработать приложение, используя 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.