Highlight
iOS 14 和 watchOS 7 将步速、步长、双支撑时间、步行不对称性、上下楼速度、六分钟步行距离和改进后的 VO2Max 写入 HealthKit,让 app 能用日常携带的 iPhone 和 Apple Watch 追踪行动能力变化。
核心内容
临床上评估一个人怎么走路,常见办法并不轻松。六分钟步行测试需要一段 30 米走廊,问卷依赖回忆和主观感受,动作捕捉又需要昂贵设备、摄像头、标记点和受训技术人员。它们能给出有价值的数据,可大多只是少数时间点的快照。
这场 session 的出发点很具体:用户真正关心的是日常生活中走得怎么样。Apple 在 iOS 14 和 watchOS 7 里把一组 Mobility Metrics(行动能力指标)开放到 HealthKit。iPhone 放在口袋或腰侧时,可以记录平地连续步行片段里的步速、步长、双支撑时间和步行不对称性。Apple Watch 还能提供上下楼速度、预测的六分钟步行距离,以及适合低体能用户的 VO2Max 估算。
讲者用 Jamie 脚踝受伤后的康复过程做例子。app 不再只数今天走了多少步,而是读取受伤前 30 天到受伤后 60 天的步速,找出受伤造成的下降,再把恢复期的细小进展变成图表。后面再加入双支撑时间和六分钟步行距离,帮助用户理解速度变化背后的步态质量和体能恢复。
详细内容
这场 session 没有公开代码片段。下面只按逐字稿里的 API 名称、数据处理步骤和限制条件展开,不放 fenced code。
读取新的 Mobility Metrics
(03:22)Apple 将一组新的行动能力指标加入 HealthKit。iPhone 侧包含 walking speed、step length、double support time 和 walking asymmetry。Apple Watch 侧包含上下楼速度、预测的 six-minute walk distance,以及改进后的 VO2Max。
关键点:
- walking speed 是 HealthKit quantity type。示例 app 只读取数据,不写回 HealthKit,所以授权请求只需要 read access。
- 查询范围从 Jamie 受伤前 30 天开始,到受伤后 60 天结束。这样能先建立 baseline,再观察恢复曲线。
- 查询结果回调拿到的是匹配的 HKSamples。活跃用户可能返回数百条 walking speed samples,直接画全量点会很拥挤。
- walking speed 不是全天所有走路的总量。它记录平地、连续、条件稳定的步行片段,因此更适合比较康复前后的变化。
把全天样本压成趋势
(11:03)全天被动采集的数据很嘈杂。同一个人的步速会被赶会议、遛狗、同行者速度、天气和通勤方式影响。讲者建议结合医生、物理治疗师、生物力学专家或数据科学团队,先决定当前场景真正有意义的汇总方式。
Jamie 的案例选择了每日第 95 分位步速。原因是康复场景更关心接近最高能力的步行表现,例如能不能快走过马路;第 95 分位又比单个最高值更不容易被离群值带偏。
关键点:
- 以午夜作为每天的起止点,用 enumerateDates 按天遍历查询范围。
- 输出数组使用 optional values,因为用户某一天可能没带手机、活动太少,或者没有足够 walking speed 数据。
- 有数据的日期,从 HKQuantitySamples 里取出 walking speed values,按图表使用的 miles per hour 单位计算。
- 每天先排序,再取第 95 分位;恢复周期按周观察,所以再做 7 天平均。
- 受伤日期要作为计算边界。不要把受伤前的 baseline 和受伤后的恢复值混在同一个平滑窗口里。
用步态质量解释速度变化
(14:27)速度下降不一定只说明康复倒退。天气、通勤、陪家人散步都会改变当天步速。Mobility Metrics 的价值在于能把 walking speed 和 walking quality 放在一起看。
double support time 表示一次步行中双脚同时接触地面的时间占比。讲者说明,较低数值通常更好,因为它意味着行走者花在双脚稳定身体上的时间更少。Jamie 的例子里,即使热浪期间步速变慢,double support time 仍然持续回到受伤前水平,这给了 app 一个解释恢复进展的第二视角。
关键点:
- double support time 和 six-minute walk distance 可以像 walking speed 一样加入请求列表并查询。
- six-minute walk distance 可能来自 Apple Watch 的预测值,也可能是用户在 Health App 里手动输入的诊所测试结果。
- 需要检查 HKSample 的 SourceRevision 和 Metadata。bundle identifier 可用于识别 Apple 记录的数据,WasUserEntered metadata key 为 true 时代表用户手动录入。
- 图表可以把诊所手动测试值和 Apple Watch 预测值分成两组点。前者是红色的少量快照,后者是绿色的连续系统估算。
记住采集条件和元数据
(19:18)最后的建议集中在边界条件。iPhone 的 mobility values 需要用户把手机放在接近腰部的位置,并在平地行走。six-minute walk distance 需要一周 Apple Watch 佩戴数据。样本还带有 start/end times、预测六分钟步行距离的 calibration status 等 metadata。
关键点:
- 如果 app 需要更底层的运动信号,可以用 CMMotionManager 读取 iPhone 和 Apple Watch 的惯性传感器数据。
- 如果要跟踪高度变化,可以使用 CMAltimeter。
- 2020 年还新增了 headphone motion API,让 AirPods Pro 成为新的惯性信号位置。
- 聚合策略不应该只由工程师决定。演讲明确建议和物理治疗师、医生、生物力学专家一起定义指标含义。
核心启发
-
康复进度面板:让用户输入受伤日期,读取受伤前 30 天和受伤后 60 天的 walking speed。起点用每日第 95 分位和 7 天平均展示恢复曲线,图上标出受伤日,帮助用户看到小幅进步。
-
步态质量解释卡片:在步速曲线下方加入 double support time。当天速度下降时,如果双支撑时间仍在改善,app 可以解释为步态稳定性继续恢复,避免用户只盯着单一速度数值。
-
诊所测试对照图:把 Health App 手动录入的 six-minute walk test 和 Apple Watch 预测的 six-minute walk distance 放在同一张图上。实现入口是读取同一类样本,再用 SourceRevision 和 WasUserEntered metadata 区分来源。
-
护理团队周报:面向 CareKit 场景,把每周 walking speed、double support time 和 six-minute walk distance 汇总成一页报告。报告只展示趋势、缺失日期和采集条件,方便物理治疗师判断是否需要调整训练计划。
-
研究型行动能力日志:结合 ResearchKit 图表和问卷,让参与者在 mobility metrics 旁补充疼痛、疲劳、天气或运动计划变化。这样能把被动采集的 walking samples 和主动报告放在同一条时间线上分析。
关联 Session
- What’s new in HealthKit — 了解 HealthKit 在 2020 年新增的 ECG、症状记录和 mobility data types。
- Getting started with HealthKit — 补齐 HealthKit 授权、隐私、读写数据和内置查询基础。
- Synchronize health data with HealthKit — 学习用 sync identifier 和 HKAnchoredObjectQuery 管理跨设备健康数据同步。
- What’s new in CareKit — 查看护理 app 里的 CareKit 视图、数据存储和隐私设计。
- What’s new in ResearchKit — 了解 ResearchKit 的 onboarding、问卷和 active tasks 更新。
评论
GitHub Issues · utterances