Лучший подход к чтению данных о тренировках из HealthKit - PullRequest
0 голосов
/ 29 мая 2018

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

Когда я заканчиваю тренировку, я сохраняю частоту сердечных сокращений и энергию, сжигаемую.Я мог бы включить сюда другой код, который также записывает эту информацию в Core Data, а затем сразу же извлекает ее и синхронизирует с приложением iOS, которое синхронизирует ее с сервером.Это лучший подход?

В iOS можно ли запрашивать сеансы тренировки HealthKit и извлекать список показаний сердечного ритма при каждом обновлении?

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

1 Ответ

0 голосов
/ 29 мая 2018

Когда я заканчиваю тренировку, я сохраняю частоту сердечных сокращений и информацию о сожженной энергии.Я мог бы включить сюда другой код, который также записывает эту информацию в 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.Затем вы можете выполнить запрос для получения данных, вот ссылка .

...