У меня есть приложение, в котором реализованы намерения 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 никогда не завершает работу. Должен ли я вызывать это вручную? Нужно ли мне, чтобы расширение вызывало эти функции?