Сбой приложения при настройке словаря для carName с помощью Siri Kit - PullRequest
0 голосов
/ 08 мая 2018

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

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Я столкнулся с подобной проблемой. Убедитесь, что для вашего расширения Цель развертывания установлена ​​соответствующая версия iOS. Создание расширения с последним Xcode (на данный момент 10.1) установит Deployment Target на 12.1 и, таким образом, приведет к падению при запуске на iOS 10 . Таким образом, вы должны изменить его до желаемого минимума.

0 голосов
/ 13 сентября 2018

Убедитесь, что в ЦЕЛИ вашего проекта в Build Phases-> Embed App Extensions добавлено ваше расширение Siri. Возможно, если вы замените INStartWorkoutIntent на INGetCarLockStatusIntent, старый INStartWorkoutIntent останется там.

Мой сбой исправить это.

...