WidgetKit getCurrentConfigurations возвращает неверный список конфигураций виджетов

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

 WidgetCenter.shared.getCurrentConfigurations { results in
     guard let widgets = try? results.get() else { return }
     ..<log widgets.count>...
 }

К моему удивлению, вместо активных [WidgetInfo] у меня есть полный список всех намерений конфигурации, когда-либо использовавшихся во всех виджетах вместо реальных.

Т.е. У меня на экране 2 виджета, а WidgetCenter утверждает, что у меня 9 текущих конфигураций. Есть лучшие идеи, как считать виджеты?

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

iOS 14 Beta 8 (как для iPhone, так и для симулятора) и Xcode 12 Beta 6


person Konstantin Loginov    schedule 14.09.2020    source источник


Ответы (3)


Очевидно, iOS кэширует конфигурацию всех виджетов, когда-либо созданных для приложения, и воссоздает кеш конфигураций при запуске iOS.

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

person Ely    schedule 25.10.2020

Это кажется проблемой, связанной с бета-версией, которая была решена с выпуском GA. Нужно наблюдать больше, но с сегодняшней сборкой Xcode я вижу соответствующие цифры.

person Konstantin Loginov    schedule 16.09.2020
comment
Привет, я пытаюсь получить все виджеты, которые добавляются в любое место на экране, но этот метод дает мне все виджеты, которые мы поддерживаем. Так оно и должно работать? Я думал, что этот метод вернет информацию только об активных виджетах. - person incmiko; 21.09.2020
comment
Похоже, мне пришлось перезагрузить устройство, чтобы оно заработало. - person incmiko; 22.09.2020

Мы также пытались сделать что-то подобное и столкнулись с аналогичной проблемой. Я думаю, что проблема в том, что устройство поддерживает каждую когда-либо установленную конфигурацию виджета (что странно, и IMO не помогает). Как только я удалил все содержимое и настройки, информация о виджете вернулась к 0.

Возможно, просто перезапуск очистит эту информацию?

person Scott Wood    schedule 16.09.2020