Запрос разрешения пользователя
Для запроса авторизации мы вызываем
запрос Авторизации (toShare: , readTypes: , завершение :) на
HKHealthStore экземпляр. Этот метод принимает три параметра:
- необязательный набор объектов HKSampleType
- необязательный набор объектов HKObjectType
- обработчик завершения с двумя параметрами: логическое значение, указывающее результат запроса авторизации (успешный или неудачный) и необязательная ошибка
Важно понимать, что логическое значение обработчика завершения не указывает, предоставил ли пользователь доступ к запрошенным типам данных о работоспособности или отказал ему. Он только сообщает приложению, ответил ли пользователь на запрос авторизации приложения. Если пользователь отклонил форму, отменив запрос на авторизацию, логическое значение обработчика завершения устанавливается равным false.
На ваш взгляд загружен:
healthStore.requestAuthorization(toShare: healthKitTypes, read: healthKitTypes) { (success, error) in
if let err = error {
print("Error \(err.localizedDescription)")
} else if success {
// Get the Step Count....
getStepHistory()
} else {
print("No access to healthkit data")
}
}
По желанию Вы можете попробовать эту функцию, чтобы получить количество шагов:
let healthStore = HKHealthStore()
func getTodaysSteps(completion: @escaping (Double) -> Void) {
let stepsQuantityType = HKQuantityType.quantityType(forIdentifier: .stepCount)!
let now = Date()
let startOfDay = Calendar.current.startOfDay(for: now)
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: now, options: .strictStartDate)
let query = HKStatisticsQuery(quantityType: stepsQuantityType, quantitySamplePredicate: predicate, options: .cumulativeSum) { _, result, _ in
guard let result = result, let sum = result.sumQuantity() else {
completion(0.0)
return
}
completion(sum.doubleValue(for: HKUnit.count()))
}
healthStore.execute(query)
}