HKObserverQuery не может работать на iPhone

Я хочу немедленно собрать данные о частоте сердечных сокращений с часов Apple на iPhone, но, следуя документу Apple, я обнаружил, что 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)

Ищете ваш ответ!

Вот мои другие вопросы, относящиеся к этому.

1 ответ

Решение

Вы не можете использовать HKSampleQuery в HKObserverQuery. updateHandler для HKObserverQuery. Обработчик запроса наблюдателя может быть выполнен в фоновом режиме, но один из примеров запроса не может быть выполнен в фоновом режиме.

Другие вопросы по тегам