SuperAPI AI 工具集

swift-health-kit

编程与开发

查看项目

更新于 10-16 07:23

技能介绍

用途:该技能提供 Apple HealthKit 框架的整合文档,供开发健康与健身类应用时查阅。核心内容集中在 Articles/healtkit.md 这一份按 Apple 官方文档 URL 分节的 188 页合并文档中,可按章节 URL 或 HKHealthStore、HKQuantitySample、HKWorkout、HKObserverQuery 等关键词检索。

主要能力:覆盖框架架构、配置(entitlements、Info.plist)、健康数据授权与用户隐私保护、保存与读取数据、HKHealthStore API 参考、数据类型标识、样本(HKSample、quantity、category、correlations)、查询(sample、anchored、statistics、observer)、workout 与活动圆环、HKError 错误处理、观察者查询执行、后台投递(HKUpdateFrequency)、HKObjectType 及其子类、HKSampleType 参考,以及 visionOS 的 State of Mind 可视化与用药症状记录等内容。

使用方式:配置上需在 Xcode 添加 HealthKit 能力(仅在需要时启用 Clinical Health Records),在 Info.plist 添加 NSHealthShareUsageDescription 与 NSHealthUpdateUsageDescription,调用前先检查 HKHealthStore.isHealthDataAvailable(),创建并长期持有单个 HKHealthStore 实例,读写前通过 requestAuthorization(toShare:read:) 请求授权。读取时创建对应的 HKSampleType 或 HKQuantityType,构建查询描述符(如 HKSampleQueryDescriptor、HKStatisticsQueryDescriptor)后对 HKHealthStore 执行,结果在后台队列处理、主线程更新 UI。保存时创建 HKQuantitySample、HKCategorySample 或 HKCorrelation,使用匹配单位(如步数用 .count()、距离用 .meter()),调用 save(:withCompletion:),并可先用 authorizationStatus(for:) 检查写入权限。后台投递需启用 Background Modes(Background fetch),对每种数据类型调用 enableBackgroundDelivery(for:frequency:withCompletion:),注册带更新处理器的 HKObserverQuery,被唤醒后调用 execute(:) 重跑查询。

适用场景与限制:适用于 iPhone、Apple Watch、visionOS(含同步的完整 HealthKit 存储)以及 iPadOS 17+;iPadOS 16 及更早、macOS 13+ 虽框架可用但 isHealthDataAvailable() 返回 false。授权按数据类型细粒度控制,应用无法判断读取权限是否被拒绝,查询只会返回空数据;visionOS 访客用户会话会限制变更,需处理 errorNotPermissibleForGuestUserMode。常见错误码包括 errorHealthDataUnavailable、errorHealthDataRestricted、errorAuthorizationNotDetermined、errorAuthorizationDenied、errorRequiredAuthorizationDenied。HealthKit 存储线程安全、样本不可变,应避免超过 24 小时的样本,correlations 内部已含样本不应重复保存,可用 anchored 查询的 HKDeletedObject 检测删除。不得将 HealthKit 数据用于广告或出售给第三方。SwiftUI 可结合 HealthKitUI 的 .healthDataAccessRequest 处理授权。原文未提供具体收费、价格或其他平台信息。