在Apple Watch的小工具中查询HealthKit



我想每15分钟从HealthKit查询一次步骤,通过WidgetKit更新我的并发症。

在Timeline Provider getTimeline((中,我执行查询,创建一个带有步骤的时间线条目,并将时间线刷新策略设置为.after(现在+15min(。

目前我被卡住了,因为刷新从未被触发。最初在Watchface上设置复杂度但从不刷新后,会查询并显示步骤。

`

func getTimeline(in context: Context, completion: @escaping (Timeline<HealthKitWidgetEntry>) -> Void) {
let currentDate = Date()
let refreshMinuteGranuity = 15
let refreshDate = Calendar.current.date(
byAdding: .minute,
value: refreshMinuteGranuity,
to: currentDate
)!

healthData.getTodaysSteps { steps in
let entry = HealthKitWidgetEntry(
date: currentDate, steps: steps
)
let timeline = Timeline(
entries: [entry], policy: .after(refreshDate)
)
print("Next refresh: (refreshDate)")
completion(timeline)
}
}

`

关于如何解决这个问题,有什么意见吗?

我也遇到了同样的问题。我可以通过启动这样一个观察者来解决这个问题:enableBackgroundDelivery Health kit iOS15不能正确工作

在ChangeHandler中,您可以使小部件自我更新:

WidgetCenter.shared.reloadAllTimelines((

请确保您为";HealthKit Observer Query Background Delivery";

最新更新