Пожертвование Siri Intent для ярлыков заканчивается ошибкой

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

Ошибка пожертвования взаимодействия: %@ Error Domain = IntentsErrorDomain Code = 1901 «Невозможно пожертвовать взаимодействие { намерение = { пользователь = ; идентификатор = 06DE1A38-6D46-4CB8-B825-3788E6A81420; }; dateInterval = ‹_NSConcreteDateInterval: 0x60000043cce0> (дата начала) 2018 -07-17 12:38:39 +0000 + (Продолжительность) 0,000000 секунд = (Дата окончания) 2018-07-17 12:38:39 +0000; -41A8-8698-681F06C8CEB5; направление = не указано; } с намерением, которое не имеет допустимых типов ярлыков" UserInfo={NSLocalizedDescription=Невозможно пожертвовать взаимодействие { намерение = { пользователь = ; идентификатор = 06DE1A38-6D46-4CB8-B825-3788E6A81420; }; dateInterval = ‹_NSConcreteDateInterval: 0x60000043cce0> (Дата начала) 2018-07-17 12:38:39 +0000 + (Продолжительность) 0,000000 секунд = (Дата окончания) 2018-07-17 12:38:39 +0000; намерение Ответ = ; Идентификатор группы = ; намерениеHandlingStatus = не указано; идентификатор = F145FA84-7147-41A8-8698-681F06C8CEB5; направление = не указано; } с намерением, у которого нет допустимых типов ярлыков}

Ниже приведен мой код пожертвования намерения

func donateInteraction() {
        let intent = GetBalanceIntent()
        intent.suggestedInvocationPhrase = "Get Balance"
        let interaction = INInteraction(intent: intent, response: nil)
        interaction.donate { (error) in
            if error != nil {
                if let error = error as NSError? {
                    print("Interaction donation failed: %@", error)
                } else {
                    print("Successfully donated interaction")
                }
            }
        }
    }

person Vittal Pai    schedule 17.07.2018    source источник
comment
Можете ли вы показать мне свой .intentdefinition файл? Распечатки будет достаточно.   -  person mtrevia    schedule 19.07.2018


Ответы (3)


Я пропустил инициализацию пользовательского свойства (т.е. пользователя в приведенном выше примере), которое я определил в файле определения.

Добавление решило проблему. Код выглядит так:

func donateInteraction() {
        let intent = GetBalanceIntent()
        intent.suggestedInvocationPhrase = "Get Balance"
        intent.user = "vittal"
        let interaction = INInteraction(intent: intent, response: nil)
        interaction.donate { (error) in
            if error != nil {
                if let error = error as NSError? {
                    print("Interaction donation failed: %@", error)
                } else {
                    print("Successfully donated interaction")
                }
            }
        }
    }
person Vittal Pai    schedule 04.08.2018
comment
Вам действительно нужно добавить все свойства, даже перечисления, которые не являются необязательными (и я думал, что они будут иметь значение по умолчанию) - person ph1lb4; 29.11.2018

введите здесь описание изображения

У меня была та же проблема, я понял, что имя моего подкласса IIntent в моем быстром файле не соответствует имени в файле . определение намерения, надеюсь, это кому-то поможет.

person James Rochabrun    schedule 24.08.2018
comment
Эй, ты смог успешно запустить несколько намерений? - person Mr. Bean; 08.09.2018

Ваш файл определения намерений должен иметь допустимые типы ярлыков. Вы можете добавить их в типы ярлыков.

person Vinay Podili    schedule 02.08.2018