iOS: Healthkit получает насыщение кислородом в режиме реального времени - PullRequest
0 голосов
/ 26 апреля 2018

Я новичок в системе HealthKit и хочу в реальном времени насыщать кислородом кровоток.

REF: https://github.com/coolioxlr/watchOS-2-heartrate

ИЗ ЭТОГО РЕПО. Я пытался сделать запрос на насыщение кислородом

   func createOxygenSaturationStreamingQuery(_ workoutStartDate: Date) -> HKQuery? {

        guard let quantityType = HKObjectType.quantityType(forIdentifier: .oxygenSaturation) else { return nil }
        let datePredicate = HKQuery.predicateForSamples(withStart: workoutStartDate, end: nil, options: .strictEndDate )

        let predicate = NSCompoundPredicate(andPredicateWithSubpredicates:[datePredicate])

        let oxygenSaturationQuery = HKAnchoredObjectQuery(type: quantityType,
                                                       predicate: predicate,
                                                       anchor: nil,
                                                       limit: Int(HKObjectQueryNoLimit)) { (query, sampleObjects, deletedObjects, newAnchor, error) -> Void in

            self.updateOxygenSaturation(sampleObjects)
        }

        oxygenSaturationQuery.updateHandler = {(query, samples, deleteObjects, newAnchor, error) -> Void in
            self.updateOxygenSaturation(samples)
        }
        return oxygenSaturationQuery
    }

    func updateOxygenSaturation(_ samples: [HKSample]?) {

        guard let oxygenSaturationSamples = samples as? [HKQuantitySample] else {return}

        DispatchQueue.main.async {
            // RETURN FROM HERE AS EMPTY ARRAY
            guard let sample = oxygenSaturationSamples.first else { return }
            let value = sample.quantity.doubleValue(for: HKUnit(from: "%/min"))
            let stringValue = String(UInt16(value))
            self.label.setText(stringValue)
            // retrieve source from sample
            let name = sample.sourceRevision.source.name
            print("sample.sourceRevision.source.name : \(name)")
            print("PERCENT : \(stringValue)")
        }
    }

P.S .: Я проверяю в симуляторе

Я получаю пульс из этого репо, но уровень кислорода становится пустым?

Дайте мне знать, что я сделал неправильно и как я могу исправить?

1 Ответ

0 голосов
/ 26 апреля 2018

watchOS не записывает автоматически образцы насыщения кислородом, поэтому вы не должны ожидать получения каких-либо результатов, если у вас нет устройства, которое записывает образцы этого типа и записывает их в HealthKit с помощью приложения.

...