Я пытаюсь получить значение сна из приложения «Здоровье» на моем iPhone, но на выходе отображается 0.IOS

Программируем под IOS
Anonymous
Я пытаюсь получить значение сна из приложения «Здоровье» на моем iPhone, но на выходе отображается 0.

Сообщение Anonymous »

Приложение имеет разрешения приложения «Здоровье» на доступ к данным о сне. В настоящее время я могу узнать количество шагов и частоту сердечных сокращений, но данные о сне отображаются как 0. Вот код, который мне нужен для получения данных о сне. Пожалуйста, дайте мне знать, если я делаю что-то не так или что-то упускаю.
func fetchSleepData() {
let sleepType = HKObjectType.categoryType(forIdentifier: .sleepAnalysis)!
let startDate = Calendar.current.startOfDay(for: Date())
let endDate = Date()
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: .strictStartDate)

let query = HKSampleQuery(sampleType: sleepType, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { query, samples, error in
guard let samples = samples as? [HKCategorySample], error == nil else {
print("Failed to fetch sleep data: \(error?.localizedDescription ?? "No error")")
return
}

// Calculate total sleep duration using .allAsleepValues
let totalSleep = samples.reduce(0.0) { sum, sample in
if HKCategoryValueSleepAnalysis.allAsleepValues.contains(HKCategoryValueSleepAnalysis(rawValue: sample.value) ?? .awake) {
let sleepDuration = sample.endDate.timeIntervalSince(sample.startDate)
return sum + sleepDuration
}
return sum
}

let sleepHours = totalSleep / 3600.0 // Convert seconds to hours
print("Total Sleep Hours: \(sleepHours)")

// Send Data to Backend
self.sendDataToServer(data: ["sleep_hours": sleepHours])
}

healthStore.execute(query)
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -output-is

Вернуться в «IOS»