SiriKit Intent Handler не вызывается

У меня есть приложение, в котором реализованы намерения Siri, и они хорошо работают. Вы можете заставить Siri запустить приложение, и оно выполнит действие, как ожидалось. Все мои намерения должны выполняться в приложении, поэтому у меня нет расширения для них.

Однако при использовании приложения «Ярлыки», когда я использую свой ярлык, приложение просто останавливается в моем приложении и не продолжает работу, поэтому Siri не получает ответ обработчика.

Прямо сейчас мой делегат откроется из действия внутри вызова NSUserActivity, и я буду использовать настраиваемый класс, чтобы определить, какой это ярлык, и выполнить указанное действие.

У меня есть этот настраиваемый класс, соответствующий протоколу IntentHandler для каждого действия, и я вызываю ответ .success в обработчике завершения.

Вот где я думаю, что могу ошибаться. Я вручную вызываю протокол обработчика внутри своего настраиваемого класса.

func handleSiri(_ intent: INItent) {
 if intent is ActionIntent {
     func handle(intent: ActionIntent, completion: @escaping (ActionIntent Response) -> Void) {
       let response = DisconnectIntentResponse.init(code: .success, userActivity: nil)
       print("Intent was a success")
       completion(response)
    }
  }
}

Однако Siri никогда не завершает работу. Должен ли я вызывать это вручную? Нужно ли мне, чтобы расширение вызывало эти функции?


person mKane    schedule 25.09.2018    source источник
comment
вы могли бы найти решение для этого?   -  person birdcage    schedule 08.11.2018
comment
Если ваше приложение не использует расширение, обратного вызова не будет. Если вы спрашиваете о приложении «Ярлыки», просто установите действие, чтобы экран не требовался.   -  person mKane    schedule 09.11.2018


Ответы (1)


Единственная причина, по которой это не вызывается, заключается в том, что вы не добавили расширение Voice Intent в свой dependencies список в разделе Build Phase для вашего App Target.

person MatterGoal    schedule 11.11.2019