Передайте конфигурацию в намерение в виджете, который использует AppIntentConfiguration. ⇐ IOS
-
Anonymous
Передайте конфигурацию в намерение в виджете, который использует AppIntentConfiguration.
У меня есть 2 виджета WidgetKit, созданные с использованием AppIntentConfiguration:
var body: some WidgetConfiguration { AppIntentConfiguration(вид: вид, намерение: SelectValueTrackerIntent.self, поставщик: TrackerTimelineProvider(trackerType: .value)) {запись в TracKitWidgetEntryView (timelineEntry: запись) .containerBackground(Color.tk_mainBackgroundColor, для: .widget) } .configurationDisplayName("Мой виджет") .description("Это пример виджета.") } Каждый виджет использует намерение предоставить конфигурации виджета динамические значения. Оба виджета получают одни и те же данные через сеть, но каждый из них фильтрует данные немного по-разному, предоставляя разный список возможных значений.
Мне не удалось найти способ заставить эту настройку работать без дублирования всего кода, используемого для намерения приложения.
Вот остальная часть кода для этой настройки:
struct SelectValueTrackerIntent: WidgetConfigurationIntent { статический заголовок var: LocalizedStringResource = «Выбрать трекер» static vardescription = IntentDescription("Выбирает трекер для отображения информации.") @Parameter(title: «Трекер») вар трекер: ValueTrackerAppEntity } структура ValueTrackerAppEntity: AppEntity { статическая переменная defaultQuery = ValueTrackerQuery() статическая переменная typeDisplayRepresentation: TypeDisplayRepresentation = «Трекер» вар displayRepresentation: DisplayRepresentation { DisplayRepresentation(title: "\(title)") } идентификатор переменной: строка пусть заголовок: Строка } структура ValueTrackerQuery: EntityQuery { объекты func (для идентификаторов: [String]) асинхронные броски -> [ValueTrackerAppEntity] { вернуть попытку await юридические лицаForAllTrackers().filter { идентификаторы.contains($0.id) } } асинхронные броски func предложенныеEntities() -> [ValueTrackerAppEntity] { вернуть попытку await юридические лицаForAllTrackers() } func defaultResult () асинхронно -> ValueTrackerAppEntity? { если пусть трекер = попробую? ждут сущностиForAllTrackers().first { трекер возврата } вернуть ноль } } Есть ли способ передать параметр конфигурации в SelectValueTrackerIntent, ValueTrackerAppEntity или ValueTrackerQuery, чтобы иметь возможность предоставлять разные данные?
У меня есть 2 виджета WidgetKit, созданные с использованием AppIntentConfiguration:
var body: some WidgetConfiguration { AppIntentConfiguration(вид: вид, намерение: SelectValueTrackerIntent.self, поставщик: TrackerTimelineProvider(trackerType: .value)) {запись в TracKitWidgetEntryView (timelineEntry: запись) .containerBackground(Color.tk_mainBackgroundColor, для: .widget) } .configurationDisplayName("Мой виджет") .description("Это пример виджета.") } Каждый виджет использует намерение предоставить конфигурации виджета динамические значения. Оба виджета получают одни и те же данные через сеть, но каждый из них фильтрует данные немного по-разному, предоставляя разный список возможных значений.
Мне не удалось найти способ заставить эту настройку работать без дублирования всего кода, используемого для намерения приложения.
Вот остальная часть кода для этой настройки:
struct SelectValueTrackerIntent: WidgetConfigurationIntent { статический заголовок var: LocalizedStringResource = «Выбрать трекер» static vardescription = IntentDescription("Выбирает трекер для отображения информации.") @Parameter(title: «Трекер») вар трекер: ValueTrackerAppEntity } структура ValueTrackerAppEntity: AppEntity { статическая переменная defaultQuery = ValueTrackerQuery() статическая переменная typeDisplayRepresentation: TypeDisplayRepresentation = «Трекер» вар displayRepresentation: DisplayRepresentation { DisplayRepresentation(title: "\(title)") } идентификатор переменной: строка пусть заголовок: Строка } структура ValueTrackerQuery: EntityQuery { объекты func (для идентификаторов: [String]) асинхронные броски -> [ValueTrackerAppEntity] { вернуть попытку await юридические лицаForAllTrackers().filter { идентификаторы.contains($0.id) } } асинхронные броски func предложенныеEntities() -> [ValueTrackerAppEntity] { вернуть попытку await юридические лицаForAllTrackers() } func defaultResult () асинхронно -> ValueTrackerAppEntity? { если пусть трекер = попробую? ждут сущностиForAllTrackers().first { трекер возврата } вернуть ноль } } Есть ли способ передать параметр конфигурации в SelectValueTrackerIntent, ValueTrackerAppEntity или ValueTrackerQuery, чтобы иметь возможность предоставлять разные данные?
Мобильная версия