Невозможно запросить данные о частоте сердечных сокращений в Apple Watch через WatchKit, «Авторизация не определена», даже после отображения листа авторизации - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь написать небольшое приложение WatchKit, которое использует данные о сердечном ритме.Внутри willActivate я делаю следующее:

guard HKHealthStore.isHealthDataAvailable() == true else {
    self.heartRateLabel!.setText("N/A")
    return
}

guard let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate) else {
    self.heartRateLabel!.setText("N/A")
    return
}

let dataTypes = Set(arrayLiteral: quantityType)
self.healthStore.requestAuthorization(toShare: nil, read: dataTypes) { (success, error) -> Void in
    if success {
        let datePredicate = HKQuery.predicateForSamples(withStart: Date.init(), end: nil, options: .strictStartDate)
        let devicePredicate = HKQuery.predicateForObjects(from: [HKDevice.local()])
        let predicate = NSCompoundPredicate(andPredicateWithSubpredicates:[datePredicate, devicePredicate])
        let heartRateQuery = HKAnchoredObjectQuery(type: quantityType,
                                                   predicate: predicate,
                                                   anchor: nil,
                                                   limit: HKObjectQueryNoLimit) {
                                                       (query, sampleObjects, deletedObjects, newAnchor, error) -> Void in
                                     self.updateHeartRate(sampleObjects)
        }

        heartRateQuery.updateHandler = {(query, samples, deleteObjects, newAnchor, error) -> Void in
            self.updateHeartRate(samples)
        }

        self.healthStore.execute(heartRateQuery)
    } else {
        self.heartRateLabel!.setText("N/A")
    }
}

Мой вызов «requestAuthroization», кажется, работает, поскольку мне показывают лист «authorize» как на самих часах, так и на телефоне.Тем не менее, в обратном вызове для моего HKAnchoredObjectQuery ошибка заполняется и гласит:

▿ Optional<Error>
  - some : Error Domain=com.apple.healthkit Code=5 "Authorization not determined" UserInfo={NSLocalizedDescription=Authorization not determined}

Я чувствую, что мне здесь не хватает чего-то маленького, но я просто не могу понять, на чем это основано на сообщении об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...