[英]iOS 14 Widget background refresh not happening - how to get diagnostics / refresh budget counter information?
在我们的应用程序达到给定的 state 后,我们正尝试在每天 10 小时内以每小时 4 到 5 次的速度更新我们的 home 小部件(我们无法准确预测何时会发生这种情况)。
当应用程序在前台时,一切正常,如预期的那样,尽管应用程序在后台,小部件可能每小时刷新一次或根本不刷新(后台处理已启用并正常工作)。 感觉完全随机,目前我们根本无法追溯或理解正在发生的事情或发生的原因。
这是我们的TimelineProvider :
struct Provider: TimelineProvider {
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> Void) {
let preferences = UserDefaults.init(suiteName:widgetGroupId)
let title = preferences?.string(forKey: "title")
let entry = SimpleEntry(date: Date(), title: title ?? "")
completion(entry)
}
func placeholder(in context: Context) -> SimpleEntry {
...
}
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
getSnapshot(in: context) { (entry) in
let timeline = Timeline(entries: [entry], policy: .never)
completion(timeline)
}
}
}
我们的应用程序尝试通过WidgetCenter.shared.reloadAllTimelines()
更新主页小部件。
我现在有以下问题:
根据我的经验,从前台应用程序以外的任何地方调用 reloadAllTimelines() 似乎都不可靠。 与其将时间线过期策略设置为.never,不如尝试在未来 15 分钟左右使用.after。 这应该确保您的小部件每小时更新约 4 次最新数据。 希望这对于您的用例来说已经足够接近了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.