WWDC Quick Look 💓 By SwiftGGTeam
What's new in HealthKit

What's new in HealthKit

观看原视频

Highlight

HealthKit 在 2020 年新增 30 个症状数据类型、开放 Apple Watch 心电图读取,并加入步行速度、步长、步态不对称等 Mobility 指标,让健康 App 能把症状、心律和活动能力放进同一条用户健康记录链路。

核心内容

健康 App 经常遇到一个断点:用户知道自己哪里不舒服,Apple Watch 也记录了心率或活动数据,但 App 很难把这些信息连起来。一次胸闷、一段心电图、一周内步速下降,单独看都只是片段。医生和护理团队真正需要的是上下文。

这场 session 的更新正是补上这些上下文。HealthKit 新增 30 个症状数据类型,开发者可以读写症状样本;Apple Watch 的 ECG(electrocardiogram,心电图)样本可以作为 HKElectrocardiogram 读取;Mobility(活动能力)指标把步行速度、步长、步态不对称、双支撑时间百分比、上下楼速度、六分钟步行距离放进 HealthKit。

结果是,App 不必只做“记录一个数值”的界面。它可以在用户记录呼吸急促时保存严重程度,在读取心电图时看到是否关联了症状,在康复或老年照护场景中跟踪行动能力的长期变化。这些能力都来自 HealthKit,用户授权后才能使用,数据也留在系统的健康数据模型里。

详细内容

30 个症状数据类型

00:49)Apple 在 HealthKit 中加入 30 个症状数据类型。Transcript 明确举了呼吸急促、睡眠变化、食欲变化、流鼻涕等例子,并说明开发者可以读写症状样本,用来构建虚拟健康体验。

Symptom sample workflow
1. Choose one of the new HealthKit symptom data types.
2. Record what the user experienced, such as shortness of breath.
3. Record the severity of that symptom.
4. Write the symptom sample to HealthKit, or read existing symptom samples back.

关键点:

  • session 支撑的事实是 HealthKit 新增 30 个症状数据类型。
  • 呼吸急促、睡眠变化、食欲变化、流鼻涕是 transcript 中出现的症状例子。
  • metadata 提到这些症状可以记录严重程度,适合做症状日记或远程问诊前的自我记录。
  • transcript 明确说开发者可以 read and write symptom samples,所以这里保留为工作流,不写具体 Swift API。

读取 Apple Watch 心电图

01:45)Apple Watch 的 ECG App 会记录心跳和心律波形。2020 年的更新让 ECG 样本可以被读取为 HKElectrocardiogram。这个样本有 classification(分类)、symptomsStatus、平均心率、采样频率、测量数量等属性。

HKElectrocardiogram overview
- waveform: a series of voltage values
- classification: sinus rhythm, atrial fibrillation, or inconclusive
- symptomsStatus: whether the user associated a symptom with this ECG
- measurement context: average heart rate, sampling frequency, and number of voltage measurements

关键点:

  • HKElectrocardiogram 是 transcript 明确提到的 ECG 样本表示形式。
  • classification 对应 Apple Watch 录制后的结果,session 中列出了 sinus rhythm、atrial fibrillation 和 inconclusive。
  • symptomsStatus 是 transcript 中出现的属性名,用来表示这次 ECG 是否关联症状。
  • 平均心率、采样频率、测量数量在 transcript 中作为测量描述出现,这里按概念列出,不写成 Swift 属性调用。

03:47)如果要读取组成 ECG 波形的单个电压值,session 指向 HKElectrocardiogramQuery。流程是先用任意 HealthKit 查询拿到 ECG 样本,再用这个样本初始化查询,最后在 health store 上执行。

ECG voltage measurement workflow
1. Fetch ECG samples with any HealthKit query.
2. Initialize HKElectrocardiogramQuery with the fetched ECG sample.
3. Execute that query on the health store.
4. Receive individual voltage measurements in the query data handler.

关键点:

  • HKElectrocardiogramQuery 的输入是已经取回的 HKElectrocardiogram 样本。
  • session 只描述了查询流程和 data handler,不提供闭包签名或结果枚举。
  • data handler 返回的是组成 ECG 的 individual voltage measurements。
  • 这个流程适合用来支撑波形展示,但本文不把它写成可运行代码。

Mobility 数据类型

04:41)Mobility 指标衡量用户的功能性运动能力。Session 点名了 walking speed、step length、walking asymmetry、double support percentage、stair ascent speed、stair descent speed、six-minute walk test distance。这些数据可在最新 iOS 和 watchOS 上读写。

Mobility data types mentioned in this session
- walking speed
- step length
- walking asymmetry
- double support percentage
- stair ascent speed
- stair descent speed
- six-minute walk test distance

Availability
- These data types are available for reading and writing on the latest iOS and watchOS.

关键点:

  • walking speed 和 step length 对应步速和步长,session 说它们受力量、体能、平衡和协调影响。
  • walking asymmetry 和 double support percentage 对应平衡与协调。
  • stair ascent speed、stair descent speed 反映上下楼能力,session 将它们关联到心肺健康、平衡和协调。
  • six-minute walk test distance 对应临床常用的六分钟步行测试距离。
  • transcript 只说明这些类型可在最新 iOS 和 watchOS 读写,没有给出具体枚举名或授权代码。

核心启发

  • 症状日记:做什么:让用户每天记录呼吸急促、睡眠变化、食欲变化等症状和严重程度。为什么值得做:HealthKit 已经提供症状样本读写能力。怎么开始:先选定要支持的症状类型,再把用户输入保存为 symptom sample,详情页按日期展示严重程度变化。

  • ECG 复盘页:做什么:展示每次 Apple Watch ECG 的分类、平均心率、是否关联症状。为什么值得做:HKElectrocardiogram 提供 ECG 样本,transcript 明确点名分类、症状状态和测量描述。怎么开始:先查询 ECG 样本,再把分类、症状状态和测量上下文做成时间线。

  • 心电波形检查入口:做什么:在用户打开某次 ECG 时加载单个电压测量序列。为什么值得做:HKElectrocardiogramQuery 能拿到组成 ECG 的电压值。怎么开始:用已取回的 ECG 样本初始化 query,在 data handler 中接收电压测量,加载完成后绘制波形。

  • 康复活动能力看板:做什么:跟踪步速、步长、步态不对称、双支撑时间和六分钟步行距离。为什么值得做:session 明确把 Mobility 和呼吸疾病、心脏健康、伤后恢复、老年人活动能力联系起来。怎么开始:围绕这组 Mobility 数据做周趋势视图,不把单次波动当成结论。

关联 Session

评论

GitHub Issues · utterances