Как я могу предоставить динамические данные пользовательскому обработчику намерений?

Контекст: я использую настраиваемое намерение, называемое TestConfiguration, для нового виджета iOS 14, который я создал, и у меня отмечены динамические параметры. Моя цель - позволить пользователю редактировать представление виджета на основе параметра, выбранного из списка, полученного из серверной части, и отражать изменения в самом виджете.

У меня есть класс IntentHandler, который придерживается TestConfigurationIntentHandling. В этом методе делегата

func provideAssetsOptionsCollection(for intent: TestConfigurationIntent, with completion: @escaping (INObjectCollection<TestIntentItem>?, Error?) -> Void) {

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

func confirm(intent: TestConfigurationIntent, completion: @escaping (TestConfigurationIntentResponse) -> Void) {
    completion(TestConfigurationIntentResponse(code: .inProgress, userActivity: nil))
    backendService.fetchData() { result in
        //format all the data
        completion(TestConfigurationIntentResponse(code: .success, userActivity: nil))
    }
}

Но это, похоже, тоже не сработало, поскольку оно все еще дает мне тот же ответ. Что я не понимаю / как мне это сделать?


person Jay    schedule 28.10.2020    source источник


Ответы (1)


Убедитесь, что при тестировании на устройстве iOS 14.0 целевая версия Intent Handler также установлена ​​на iOS 14.0 вместо iOS 14.1.

person Ely    schedule 02.11.2020
comment
Это супер интересно ... потому что 14.1 теперь доступна для широкой публики. Вы случайно не знаете, почему это так? Есть ли другая реализация для 14.1? - person Jay; 04.11.2020
comment
@Jay: если версия целевой ОС расширения (14.1) выше, чем ОС устройства (14.0), оно не будет загружено. Таким образом, в этом случае вы получаете рабочий виджет в сочетании с неработающим обработчиком намерений. - person Ely; 05.11.2020
comment
В этом есть смысл, я не заметил, что он был доступен только в iOS 14.0. Как я могу разместить 14,1? - person Jay; 05.11.2020
comment
@Jay: если ваша целевая ОС для Widget и Intent Handler установлена ​​на 14.0, то она также должна работать в 14.1. Или 14.2, выпущенная сегодня. - person Ely; 06.11.2020