Когда я заканчиваю тренировку, я сохраняю частоту сердечных сокращений и информацию о сожженной энергии.Я мог бы включить сюда другой код, который также записывает эту информацию в Core Data, а затем сразу же извлекает ее и синхронизирует с приложением iOS, которое синхронизирует ее с сервером.Это лучший подход?
Я бы предложил создать некоторую HealthKitService
, которая будет отвечать за выборку и сохранение данных в HKHealthStorage
.Используйте объект PONSO
, чтобы описать DTO
, который вы собираетесь передать на разных уровнях вашего приложения.
Это будет выглядеть примерно так:
struct Workout {
let date: Date
let sets: Double
let reps: Double
let heartRate: Double
}
protocol HealthKitService: class {
func saveWorkout(_ workout: Workout, completion: (() -> ())?)
func fetchWorkouts(by date: Date, completion: (([Workout]) -> ())?)
}
Для простоты я бы рекомендовал не использовать базовые данные, если ваша модель данных не отличается от HKWorkout
, но если вам нужносохраните некоторые дополнительные данные, связанные с тренировкой, которые не поддерживаются HealthKit
, тогда вам нужно настроить собственное хранилище.
Если вы хотите отправить данные о работоспособности пользователя на свой собственный сервер, проверьте документ Защита конфиденциальности пользователя , чтобы предотвратить отклонение вашего приложения во время обзора App Store.
Можно ли в iOS запрашивать сеансы тренировки HealthKit и извлекать список показаний пульса при каждом обновлении?
Да, это возможно.Проверьте официальную документацию для HKWorkout .Обычно вам нужно HKHealthStorage
, чтобы сохранить ассоциированную с HKWorkout
частоту сердечных сокращений как HKSample
.Затем вы можете выполнить запрос для получения данных, вот ссылка .