我想将锻炼的心率信息上传到我的服务器。问题是,我不知道如何获取这些信息。
当我结束锻炼时,我保存心率,并消耗能量信息。我可以在这里包含其他代码,这些代码也会将此信息写入Core Data,然后基本上立即将其拉出并与iOS应用程序同步,后者将其与服务器同步。这是最好的方法吗?
在iOS中,是否可以查询HealthKit锻炼课程,并在每次更新时提取心率读数列表?
不是真的相关,但是为了澄清我上面提到的即时同步。它不会立即与服务器同步,因为当Watch超出范围时,用户可以创建其他锻炼会话,其中相关数据存储在Core Data中,然后在返回范围时立即同步
答案 0 :(得分:1)
当我结束锻炼时,我保存心率,并消耗能量信息。我可以在这里包含其他代码,这些代码也会将此信息写入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
没有差异,我建议您不要使用核心数据,但如果您需要保留一些与{{1不支持的“锻炼相关的其他数据那么你必须设置一个自己的存储。
如果您想将用户的健康数据发送到您自己的服务器,请查看Protecting User Privacy文档,以防止在App Store审核期间拒绝您的应用。
在iOS中,是否可以查询HealthKit锻炼课程,并在每次更新时提取心率读数列表?
是的,这是可能的。查看HKWorkout的官方文档。
基本上,您需要HealthKit
将与HKHealthStorage
心率相关联的HKWorkout
保存为HKSample
。
然后你可以执行查询来接收数据,这里是reference。