HKObserverQuery 无法在 iPhone 上运行
Posted
技术标签:
【中文标题】HKObserverQuery 无法在 iPhone 上运行【英文标题】:HKObserverQuery cannot work on iPhone 【发布时间】:2016-04-10 10:56:11 【问题描述】:我想立即从 Apple Watch 收集心率数据到 iPhone,但即使我关注Apple's document,我发现无法创建和更新 HKAnchorObjectQuery(在 HKObserverQuery 中)。
此外,HKObserverQuery 仅在开始执行应用程序时有效。
我已经尝试了 2 周,没有任何想法......
代码如下:
func createHeartRateStreamingQuery(workoutStartDate: NSDate) -> HKQuery?
let sampleType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
let query = HKObserverQuery(sampleType: sampleType, predicate: nil)
query, completionHandler, error in
if error != nil
// Perform Proper Error Handling Here...
print("*** An error occurred while setting up the observer. ***")
abort()
else
print("sampleType initiated: ",sampleType)
let anchoredQuery = HKAnchoredObjectQuery(type: sampleType, predicate: nil, anchor: self.anchor, limit: Int(HKObjectQueryNoLimit)) (query1, sampleObjects, deletedObjects, newAnchor, error) -> Void in
print("anchored query initiated!")
guard let newAnchor = newAnchor
else return
self.anchor = newAnchor
self.updateHeartRate(sampleObjects) //use to display the heart rate data
anchoredQuery.updateHandler = (query1, samples, deleteObjects, newAnchor, error) -> Void in
self.anchor = newAnchor!
self.updateHeartRate(samples) //use to display the heart rate data
print("anchored query updating!")
completionHandler()
return query
let query = createHeartRateStreamingQuery()
healthStore.executeQuery(query)
期待您的回复!
Here's我的另一个与此相关的问题。
【问题讨论】:
【参考方案1】:您不能在 HKObserverQuery 中使用 HKSampleQuery。 HKObserverQuery 的 updateHandler。观察者查询的处理程序可以在后台模式下执行,但示例查询之一不能在后台模式下执行。
【讨论】:
以上是关于HKObserverQuery 无法在 iPhone 上运行的主要内容,如果未能解决你的问题,请参考以下文章
iOS : HKObserverQuery 的后台更新completionHandler 的使用