Виджет не обновляется даже при синхронизации UserDefaults

Я использую XCode 12 beta 2 (iOS 14 Sim) для передачи данных из моего приложения в виджет с помощью AppContainer.

Я использую приведенный ниже код для сохранения данных (здесь String) в контейнер приложения.

  let userDefaults = UserDefaults(suiteName: "group.abc.WidgetDemo")
        userDefaults?.setValue(status, forKey: "widget")
        userDefaults?.synchronize()

И в файле Widget.swift


struct Provider: TimelineProvider {
    
    @AppStorage("widget", store: UserDefaults(suiteName: "group.abc.WidgetDemo"))
    var status: String = String()

    public func snapshot(with context: Context, completion: @escaping (MyEntry) -> ()) {
        let entry = MyEntry(status: status, date: Date())
        completion(entry)
    }

    public func timeline(with context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
       
        let entryDate = Calendar.current.date(byAdding: .second, value: 10, to: Date())!
        let entry = MyEntry(status: status, date: entryDate)
        let timeline = Timeline(entries: [entry], policy: .atEnd)
        completion(timeline)

    }
}

Обратите внимание: запись на временной шкале занимает 10 секунд после текущей даты.

Даже после 10-секундной задержки я не могу видеть обновленную информацию в виджете.


person Abhishek Bedi    schedule 13.07.2020    source источник


Ответы (1)


По-видимому, после прочтения документации я заставил ее работать, используя приведенные ниже

       WidgetCenter.shared.reloadTimelines(ofKind: "WidgetDemo")

Но если иногда вышеперечисленное не работает, я пытаюсь перезагрузить все временные рамки.

       WidgetCenter.shared.reloadAllTimelines()

Обратите внимание: код временной шкалы перезагрузки записан в исходном файле, откуда мы передаем данные.

person Abhishek Bedi    schedule 13.07.2020
comment
Когда и в какой части кода это следует вызывать? - person JoeGalind; 05.04.2021
comment
@JoeGalind Вызовите его из источника, в котором вы вносите изменения в данные. - person Abhishek Bedi; 09.04.2021