Перезагрузка временной шкалы другого виджета iOS из AppIntentIOS

Программируем под IOS
Anonymous
Перезагрузка временной шкалы другого виджета iOS из AppIntent

Сообщение Anonymous »

Я работаю с двумя виджетами iOS ( и WidgetB), которые отображают значение флага, хранящегося в SwiftData. Каждый виджет может обновлять флаг, вызывая AppIntent при нажатии кнопки.
После того, как один виджет обновит флаг, я хочу, чтобы другой виджет обновил свою временную шкалу, чтобы он отображал обновленное значение. Я попытался вызвать WidgetCenter.shared.reloadAllTimelines() и WidgetCenter.shared.reloadTimelines(ofKind:)
из AppIntent, но хотя это работает нормально в симуляторе и на физическом устройстве во время отладки, оно не работает на физическом устройстве вне режима отладки.
Вот мое намерение приложения, которое должно запустить обновление.

Код: Выделить всё

struct ToggleFlagIntent: AppIntent {
func perform() async throws -> some IntentResult {

// await swiftdata update

// Tried any variation of reload timeliness
WidgetCenter.shared.reloadAllTimelines()
WidgetCenter.shared.reloadTimelines(ofKind: "WidgetB")
WidgetCenter.shared.reloadTimelines(ofKind: "WidgetA")

return .result()
}
}
Виджет, который запускает обновление (и любые его варианты, такие как маленький/средний/большой), обновляется, поскольку это гарантировано системой, как описано в примере WWDC, но другие виджеты с отдельными определениями, которые зависят от тех же данных, не перезагружают свою актуальность, следовательно, отображают устаревшие данные.
Кто-нибудь сталкивался с такой проблемой? Возможно ли вообще перезагрузить временные шкалы других виджетов из AppIntent?
Это упрощенная версия моего процесса, поэтому использование одного виджета для имитации нескольких типов виджетов не является для меня решением.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... -appintent

Вернуться в «IOS»