Spezi HealthKit

Build and Test codecov DOI

在您的 Spezi 应用中访问健康数据。

概述

Spezi HealthKit 模块使应用能够与 Apple 的 HealthKit 系统集成,获取数据,设置长期后台数据收集,并可视化与健康相关的数据。

设置

您需要在 Xcode 中将 Spezi HealthKit Swift 包添加到 您的应用Swift 包

重要提示

如果您的应用程序尚未配置为使用 Spezi,请按照Spezi 设置文章设置核心 Spezi 基础设施。

健康数据收集

在配置 HealthKit 模块之前,请确保您的 Spezi 应用程序中的 Standard 符合 HealthKitConstraint 协议以接收 HealthKit 数据。对于每个新收集的 HealthKit 样本,将调用 HealthKitConstraint/add(sample:) 函数,而对于每个删除的 HealthKit 样本,将调用 HealthKitConstraint/remove(sample:) 函数。

actor ExampleStandard: Standard, HealthKitConstraint {
    // Add the newly collected HKSample to your application.
    func add(sample: HKSample) async {
        // ...
    }

    // Remove the deleted HKSample from your application.
    func remove(sample: HKDeletedObject) {
        // ...
    }
}

然后,您可以在 SpeziAppDelegate 的配置部分配置 HealthKit 模块。 例如,您可以使用 CollectSample 来收集各种 HealthKit 数据类型

class ExampleAppDelegate: SpeziAppDelegate {
    override var configuration: Configuration {
        Configuration(standard: ExampleStandard()) {
            HealthKit {
                CollectSample(.activeEnergyBurned)
                CollectSample(.stepCount, start: .manual)
                CollectSample(.pushCount, start: .manual)
                CollectSample(.heartRate, continueInBackground: true)
                CollectSample(.electrocardiogram, start: .manual)
                RequestReadAccess(quantity: [.bloodOxygen])
            }
        }
    }
}

提示

请参阅 SampleType 以获取支持的样本类型的完整列表。

在 SwiftUI 中查询健康数据

您可以使用 SpeziHealthKitUIHealthKitQueryHealthKitStatisticsQuery 属性包装器来访问视图中的健康数据库

struct ExampleView: View {
    @HealthKitQuery(.heartRate, timeRange: .today)
    private var heartRateSamples

    var body: some View {
        ForEach(heartRateSamples) { sample in
            // ...
        }
    }
}

此外,您可以使用 SpeziHealthKitUIHealthChart 来可视化查询结果

struct ExampleView: View {
    @HealthKitQuery(.heartRate, timeRange: .today)
    private var heartRateSamples

    var body: some View {
        HealthChart {
            HealthChartEntry($heartRateSamples, drawingConfig: .init(mode: .line, color: .red))
        }
    }
}

有关更多信息,请参阅 API 文档

Spezi 模板应用程序

Spezi 模板应用程序 提供了一个很好的起点和示例,使用了 SpeziHealthKit 模块。

贡献

欢迎对此项目做出贡献。请务必首先阅读 贡献指南贡献者盟约行为准则

许可证

本项目根据 MIT 许可证获得许可。 有关更多信息,请参阅 许可证

Spezi Footer Spezi Footer