HKObserverQuery 无法在 iPhone 上工作
HKObserverQuery cannot work on iPhone
我想立即从 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 我的另一个问题与此相关。
您不能在 HKObserverQuery 中使用 HKSampleQuery。 HKObserverQuery.The 观察者查询处理程序的 updateHandler 可以在后台模式下执行,但示例查询之一无法在后台模式下执行。
我想立即从 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 我的另一个问题与此相关。
您不能在 HKObserverQuery 中使用 HKSampleQuery。 HKObserverQuery.The 观察者查询处理程序的 updateHandler 可以在后台模式下执行,但示例查询之一无法在后台模式下执行。