【问题标题】:Best approach to reading workout data from HealthKit从 HealthKit 读取锻炼数据的最佳方法
【发布时间】:2018-05-29 12:33:59
【问题描述】:

我想将锻炼的心率信息上传到我的服务器。问题是,我不确定如何获取这些信息。

当我结束锻炼时,我会保存心率和能量消耗信息。我可以在此处包含其他代码,这些代码也将这些信息写入 Core Data,然后基本上立即将其拉出并与 iOS 应用程序同步,后者将其与服务器同步。这是最好的方法吗?

在 iOS 中是否可以查询 HealthKit 锻炼会话,并在每次更新时提取心率读数列表?

不是很相关,但为了澄清我上面提到的即时同步。它不会总是立即与服务器同步,因为当 Watch 超出范围时,用户可以创建其他锻炼会话,这些会话将相关数据存储在 Core Data 中,然后在返回范围时立即同步。

【问题讨论】:

    标签: ios swift healthkit


    【解决方案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 没有不同,我建议不要使用 Core Data,但如果您需要保留一些与锻炼相关的额外数据,而 HealthKit 不支持,那么您必须设置自己的存储。

    如果您想将用户的健康数据发送到您自己的服务器,请查看Protecting User Privacy 文档,以防止您的应用在 App Store Review 期间被拒绝。

    在 iOS 中是否可以查询 HealthKit 锻炼会话,并在每次更新时提取心率读数列表?

    是的,这是可能的。查看HKWorkout 的官方文档。 基本上,您需要一个HKHealthStorage 来将与HKWorkout 关联的心率保存为HKSample。 然后你可以执行查询来接收数据,这里是reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多