【发布时间】:2020-05-15 01:38:05
【问题描述】:
我有一个应用程序运行以下代码,以在应用程序处于后台/暂停/终止时每小时获取 Healthkit 数据,并且它根据需要每小时运行一次而不会失败。从 appdelgate 调用代码
didFinishLaunchingWithOptions
然而,它实际上是在不到一秒的时间内每小时触发 3-6 次查询,因此数据访问我的服务器的次数是需要的 3-6 倍。
我已经阅读了很多关于 Health Kit 后台交付的问题,但似乎没有一个涵盖这个问题。
我读到这可能是因为我每次都在注册后台刷新,我应该检查我是否已经注册而不是重新注册,但我不知道如何检查并且找不到任何文档甚至提到了这个过程的参考资料。鉴于代码每小时运行的次数如此多变,我也不知道这是否是问题。
任何帮助将不胜感激。
func startObservingKJ() {
print("BG Code Called")
let KJQuantityType = HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned)!
self.healthStore.enableBackgroundDelivery(for: KJQuantityType, frequency: .hourly) { (success, error) in
if let unwrappedError = error {
print("could not enable background delivery KJ: \(unwrappedError)")
}
if success {
print("background delivery enabled KJ")
}
}
let query = HKObserverQuery(sampleType: KJQuantityType, predicate: nil) { (query, completionHandler, error) in
self.updateKJandSteps() {
completionHandler()
}
}
healthStore.execute(query)
}
【问题讨论】:
标签: ios swift background-process healthkit