每五秒一次的心率:HealthKit 应用会发生什么变化
新的 Apple Watch 传感器给 HealthKit 应用带来了什么变化? Apple Watch Series 12 和 Apple Watch Ultra 4「全天候每五秒测量一次心率」,心率变异性(HRV)则「最快每五分钟一次」,苹果称之为「频率提升 24 倍」。2 但苹果的新闻稿描述的是手表测量什么,而不是它向 HealthKit 写入什么;文档索引中没有 readiness 类型,只多了一个新的 HRV 类型 heartRateVariabilityRMSSD。8 苹果 2024 年的白皮书把此前的后台测量频率定为静止时每五分钟尝试一次。因此请预设 HealthKit 中的后台数量可能密集得多,无论是表现为样本变多,还是表现为序列变长,然后在完整佩戴一天之后实测真实的写入密度。11
苹果在 2026 年 9 月 9 日发布了这两款手表,两者都搭载由全新光学与电学心脏传感器组成的 Health Sensing System。13 面向消费者的故事是 readiness。面向开发者的故事是密度,而苹果给出了两个可供推算的数字。
TL;DR: 每五秒一次的心率,若全部保留,一天就是 17,280 个读数;最快每五分钟一次的 HRV,一天最多 288 个。此前的基线来自苹果 2024 年的白皮书:后台心率在静止时每五分钟尝试一次,运动读数按每五秒窗口发布一个,HRV 心动图默认每四小时一次,开启不规则心律通知后为两小时,开启 AFib History 后为 15 分钟。由此可知苹果的「24 倍」对应的是两小时这个基线,尽管苹果并未说明自己拿哪种设置作比较。211 名义上,全天候心率的测量频率是旧有后台尝试频率的 60 倍;其中有多少真正抵达 HealthKit 尚未公布,readiness 没有对应的 HealthKit 类型,而第二个 HRV 标识符 heartRateVariabilityRMSSD 出现得毫无说明。8 现在就转向 anchored query、statistics collection 以及入库前聚合,然后在 Series 12 完整佩戴一天之后实测。56
苹果的原话

苹果 2026 年 9 月 9 日发布会直播画面,太平洋时间上午 10:37:亮起光学心脏传感器的 Series 12 背面;苹果把每五秒的测量频率归功于这些更大的绿色 LED。
支撑这次变化的有三处表述,与其概括,不如直接引用。
关于心率:「凭借光学心脏传感器上更大、更省电的绿色 LED,Apple Watch Series 12 和 Apple Watch Ultra 4 现在能够全天候每五秒测量一次心率。这种持续、被动的测量让用户对自身体能与生理状态有更深入的了解,同时让 Exercise 和 Move 两个 Activity 圆环更加准确。」2
关于 HRV,健康主题的新闻稿称其「现在最快每五分钟测量一次」,称之为「频率提升 24 倍」,并且「可在 Heart Rate 应用的新版块中查看」;硬件新闻稿的说法是「最多提升到 24 倍」。123 另有 Series 12 新闻稿中的一段:「Apple Watch 提供两种彼此独立的 HRV 变体,帮助用户更好地理解自己的健康状况。Recovery HRV 最适合识别每日的压力与恢复信号,overall HRV 则最适合洞察用户更广泛的健康状况,包括心血管健康。」1
关于 readiness:健康主题的新闻稿把它描述为「一项分析用户近期活动、体征与睡眠评分的新功能,每天给出 0 到 10 的单一评分,并附上清晰、可执行的建议:Recover、Pace Yourself、Ready 或 Go For It」。2 两份硬件新闻稿都列出了第四项输入——训练负荷,而健康主题的新闻稿对此只字未提。13
两款手表将于 9 月 18 日星期五发售,watchOS 27 则于 9 月 14 日星期一向 Series 9 及更新机型、SE 3、Ultra 2 及更新机型推送。3
此前的测量频率是多少
苹果关于心率的支持页面,用一句话概括了 Series 1 以来所有 Apple Watch 的后台行为:手表「在您静止时全天测量心率,在您行走时定期测量」,而在运动期间及结束后三分钟内持续测量。4 真正公布了间隔的是苹果的心率白皮书。后台算法「仅在用户静止时报告测量结果。它尝试每 5 分钟报告一个以 bpm 为单位的心率」,白皮书还精确写明了上限:「在每一个互不重叠的五分钟窗口内,Apple Watch 尝试向 HealthKit 发布一个后台心率,能否发布取决于信号质量与用户的活动状态。」运动及用户主动触发的算法则早已按新频率运行:「在每一个互不重叠的五秒窗口内,算法会挑选质量最高的一个心率测量结果用于显示并发布到 HealthKit。」11 所以后台算法的上限是每天 288 次尝试,每一次都以静止和信号质量为前提;白皮书称信号质量允许时会「发布到 HealthKit」的行走抽测,以及 Heart Rate 应用中的测量,都会叠加在此之上,而运动数据流本来就是五秒一次。11 关于 HRV,白皮书写得很具体:「心动图的默认测量频率为每四小时一次;当用户开启不规则心律通知或 AFib History 时,分别提高到每两小时或每 15 分钟一次。」11 把苹果的「频率提升 24 倍」与「每五分钟」对应起来,算出来正好是两小时,因此这个隐含的两小时基线与不规则心律通知的频率吻合,尽管苹果并未说明自己的比较设置;我自己的 SDNN 数据流一天只有寥寥几个样本,且大多在夜间,接近四小时这个默认值。2
所以这次变化在很大程度上并不是新增 API,而是同样的 heartRate 和 heartRateVariabilitySDNN 类型,可能承载多出一个数量级的样本,外加一个新类型 heartRateVariabilityRMSSD。8 运动区间与生殖健康方面的新增内容,见 iOS 27 HealthKit 一文。
真正抵达 HealthKit 的是什么,仍是未解之问
苹果的新闻稿谈的是测量。截至 9 月 9 日,无论新闻稿还是 iOS 27 的 SDK 文档,都没有说明每五秒的读数是否都会变成一个 HKQuantitySample,还是手表会先聚合再写入。heartRate 页面确实带有一条长期存在的提示:「样本数据可能被 HealthKit 压缩和/或合并」,而它指向的文章把这一行为限定在「至少已有几个月」的第一方运动上——在那种情况下,HealthKit 会把「取值相同且发生时间相近的数量」合并为一个区间数量。这也是应当读统计值而非样本的又一个理由。8 24 小时内的计数不受此影响,几个月前的第一方运动样本计数则会受影响。有三个具体的未知数:
- 样本密度。 此前的手表在运动中本就大约每五秒写入一个心率样本;我自己的 Watch 在一次 53 分钟的跑步中记录了 639 个心率样本,一次 70 分钟的跑步中记录了 870 个。后台心率则是静止时每五分钟窗口最多一个,再加上行走抽测。11 新的部分是运动之外的五秒频率。如果 Series 12 按其测量速率全天写入,算下来每位用户 24 小时就是 17,280 个心率数量;由于一个样本可以承载一个序列,
HKQuantitySample对象的数量可能与之不同。12 反过来,如果它仍按旧频率写入后台读数,把五秒数据留给自家算法使用,那么对你来说什么都没变。只有真机能给出答案。 - 两种 HRV 变体。 HealthKit 一直只有一个 HRV 标识符
heartRateVariabilitySDNN,iOS 27 的 SDK 新增了第二个heartRateVariabilityRMSSD,目前的文档只是一条没有任何说明的声明。8 苹果没有说 Recovery HRV 和 overall HRV 是否分别对应 RMSSD 与 SDNN,所以第一天就把两个类型都读出来,并与 Heart Rate 应用中显示的内容对照。 - readiness。 苹果把它描述为一项带评分和建议的功能。今天的 HealthKit 文档索引里没有 readiness 类型,新闻稿也没有提到第三方访问。在 SDK 给出不同说法之前,就当它是苹果专属。
9 月 18 日之前该改什么
以下这些都不需要新硬件。无论密度是每五分钟尝试一次、每天 288 个,还是每五秒一个、每天 17,280 个,这些模式都始终成立。
读增量,别读整天。 HKAnchoredObjectQuery 只返回自你持久化的锚点之后新增或删除的样本,而且可以保持打开以接收更新。5 每次启动都对最近 24 小时重跑一次样本查询的应用,做的是随样本数增长的功;到了两万个样本,这笔开销每次启动都要付一遍。我没有测过它从哪里开始变痛,而这恰恰是不该继续付这笔钱的理由。
概览用统计值,细节用样本。 HKStatisticsCollectionQuery 按你选定的区间返回由 HealthKit 计算好的最小值、最大值和平均值,因此日视图无论底下压着多少读数,请求到的结果数量都是有界的。6 原始读数留给真正需要它们的视图,比如单次运动或一段恢复窗口,并且要在新密度下对这些视图做性能分析,而不是假定它们扛得住:五秒的数据流可能会在五分钟图表原本只画一个点的地方放上 60 个点。
有意识地选择后台推送。 enableBackgroundDelivery(for:frequency:) 接收一个 HKUpdateFrequency,系统「在所指定频率定义的每个时间段内最多唤醒你的应用一次」;.immediate 会「在任何进程保存或删除指定类型的样本时」唤醒你的应用,但同样受苹果文档所述的频率限制约束,而在 watchOS 上,文档写明「大多数数据类型都有每小时的最大频率」。7 除医疗场景外,几乎所有用途每小时一次都够用,其间到达的数据交给 anchored query 去取。
入库前先聚合。 那些为了离线图表或同步而把 HealthKit 镜像到自家数据库的应用,应当存储每分钟或每五分钟的聚合值,只为确实需要的窗口(例如一次运动)保留原始样本。一个每天增长数千行的存储会遭遇什么,见 SwiftData 性能一文。
给查询设上限。 HKSampleQuery 接收 limit 和排序描述符,两者都要用。做增量读取时,给 HKAnchoredObjectQuery 设一个 limit,并从它返回的锚点继续,而不是按日期分页。59
把逐搏数据分开存。 更密集的 BPM 读数不是 RR 间期,所以别把它们倒进心跳序列里。逐搏间期本来就有 HKHeartbeatSeriesSample,用 HKHeartbeatSeriesBuilder 写入;应用采集的 RR 间期数据用它,而 BPM 读数无论频率多高,都放在 heartRate 样本里。10
产品的空间在哪里

苹果 2026 年 9 月 9 日发布会直播画面,太平洋时间上午 10:44:Health 应用的总结幻灯片,也就是一个通用健身仪表盘从此要与之竞争的那块地方。
readiness 将随手表一同登场。重新设计的 Health 应用「将于今年晚些时候先以美国英语推出」,新增一个包含 Health Age 的 Longevity 标签页;苹果表示该标签页除自家数据外还会取用「第三方应用与设备」的数据,用户在美国「将能够预约并购买」售价 119 美元的化验套餐。23 在我看来,一个通用健身仪表盘与之竞争,只会输。苹果没有做的是具体:一项运动的恢复、一种疾病的配速、一个社群的教练闭环、一位临床医生点名要的视图。更密集的心率数据只会让这些做得更好。苹果说 Longevity 视图会取用「第三方应用与设备」的数据,因此你的应用写入 HealthKit 的样本,在重新设计的 Health 应用上线后或许会出现在那里;苹果并未说明哪些数据符合条件,而不论如何,写入优质样本而非什么都不写,这个理由都依然成立。2
第一天就该跑的测试
从 9 月 18 日起佩戴 Series 12,在完整戴满一天之后测量一个 24 小时窗口。对 heartRate 执行一次样本查询,记录与该窗口相交的 HKQuantitySample 对象数量;一个数量样本「包含一个或多个 HKQuantity 对象」,而它的 count 覆盖整个样本,因此把 count 相加会把落在窗口之外的那部分序列也算进去。12 至于读数总数,请对同一类型执行 HKQuantitySeriesSampleQuery;它的 handler 会把每个数量连同各自的日期区间一起交给你,因此只保留起始时间落在 [start, end) 内的数量并计数,再计算相邻数量之间的间隔,按小时、按来源设备、按当时是否正在进行运动分组;把查询的 includeSample 设为 true,handler 还会把所属样本及其设备一并交给你。12 对 heartRateVariabilitySDNN 和 heartRateVariabilityRMSSD 做同样的事。需要报告六项:窗口、手表与 watchOS 版本号、是否开启了不规则心律通知或 AFib History、容器数量、窗口内的数量总数,以及运动中与非运动时的间隔中位数。这些数字将决定上文各节究竟是预防措施还是紧急情况。对于此前的手表,苹果 2024 年的白皮书给出了向 HealthKit 发布的频率;对于 Series 12,苹果尚未发布任何能给出同一数字的资料。11
要点回顾
给 HealthKit 开发者: - Series 12 和 Ultra 4 每五秒测量一次心率、最快每五分钟测量一次 HRV,但苹果没有说其中有多少会抵达 HealthKit。按苹果白皮书所述,此前的手表在静止时每五分钟尝试一次后台读数。211 - 现在就转向 anchored query 和 statistics collection;两者在任何密度下都是正确的。56 - 除非某项功能确实需要更快,否则把后台推送保持在每小时一次,并在入库前聚合。7
给产品决策:
- 在苹果的新闻稿和当前的 HealthKit 索引中,readiness 与 Health Age 都没有第三方入口;HRV 则新增了第二个类型 heartRateVariabilityRMSSD。请基于样本构建,而不是基于评分。28
- 空间在于具体:一项运动、一种疾病、一个社群,也就是苹果的通用仪表盘止步之处。
常见问题
HealthKit 会收到每五秒的每一个心率读数吗?
苹果没有说。新闻稿描述的是手表上的测量,而不是 HealthKit 中的存储。苹果 2024 年的白皮书称,此前的手表在运动中每五秒窗口发布一个读数,在后台每五分钟窗口尝试一个读数,而没有覆盖 Series 12 的更新版白皮书。请在完整佩戴一天之后,也就是 9 月 19 日或更晚再测量:统计 HKQuantitySeriesSampleQuery 返回的数量中起始时间落在这个 24 小时窗口内的那些,并单独报告 HKQuantitySample 的容器数量。21112
第三方应用能拿到 readiness 评分吗?
苹果已公布的任何材料中都没有相关内容。HealthKit 文档索引里没有 readiness 类型,新闻稿也没有提到第三方访问。2
Recovery HRV 和 overall HRV 是两种不同的 HealthKit 类型吗?
未知。HealthKit 一直公开的是 heartRateVariabilitySDNN,iOS 27 的 SDK 新增了 heartRateVariabilityRMSSD,但只是一条没有说明的声明。苹果没有说其中哪一个承载哪种变体,甚至没有说是否有对应关系。8
watchOS 27 会改变旧款手表吗?
苹果给出的五秒与五分钟这两个数字,专指 Series 12、Ultra 4 及其新传感器。watchOS 27 可以运行在 Series 9 及更新机型上,但新闻稿把新的测量频率归因于硬件。23
我的心率图表会崩掉吗?
建立在 HKStatisticsCollectionQuery 之上的图表,对固定时间范围返回的区间结果数量是有界的,因此点数不会随密度变化,尽管取值会变;而直接绘制原始样本的图表,做的是随样本数增长的功。请在手表发售之前按新密度做一次性能分析,并把概览类图表切换过去。6
参考来源
-
Apple Newsroom,Introducing Apple Watch Series 12, with the all-new Health Sensing System,2026 年 9 月 9 日。引用:两种 HRV 变体;HRV「最多提升到 24 倍」;包含训练负荷在内的 readiness 输入项。 ↩↩↩↩
-
Apple Newsroom,Apple advances health and fitness capabilities using Apple Intelligence,2026 年 9 月 9 日。引用:两款手表每五秒测量心率及关于 Activity 圆环的那句话;HRV「最快每五分钟一次」与「频率提升 24 倍」;readiness 的定义与四条建议;重新设计的 Health 应用「今年晚些时候先以美国英语推出」;Longevity 标签页的第三方数据。 ↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Apple Newsroom,Apple unveils Apple Watch Ultra 4,2026 年 9 月 9 日。HRV「最多提升到 24 倍」;包含训练负荷在内的 readiness 输入项;watchOS 27 于 9 月 14 日推送;9 月 18 日发售;「将能够预约并购买」119 美元的化验套餐。 ↩↩↩↩↩↩
-
Apple 支持,Monitor your heart rate with Apple Watch,2026 年 9 月 9 日获取。引用:后台测量「在您静止时全天测量,在您行走时定期测量」;运动期间及结束后三分钟内的持续测量。 ↩
-
Apple Developer Documentation,HKAnchoredObjectQuery。 ↩↩↩↩
-
Apple Developer Documentation,HKStatisticsCollectionQuery。 ↩↩↩↩
-
Apple Developer Documentation,enableBackgroundDelivery(for:frequency:withCompletion:) 与 HKUpdateFrequency。 ↩↩
-
Apple Developer Documentation,heartRateVariabilitySDNN、heartRateVariabilityRMSSD(iOS 27.0、watchOS 27.0 引入)以及 heartRate,后者注明「样本数据可能被 HealthKit 压缩和/或合并」;其中链接的文章 Accessing condensed workout samples 把该行为限定在「至少已有几个月」的第一方运动上,并描述了把取值相同的心率数量合并为区间数量的做法;截至 2026 年 9 月 9 日,HKQuantityTypeIdentifier 与 HKCategoryTypeIdentifier 索引中都没有列出 readiness 或 Health Age 标识符。 ↩↩↩↩↩↩↩
-
Apple Developer Documentation,HKSampleQuery。 ↩
-
Apple Developer Documentation,HKHeartbeatSeriesSample 与 HKHeartbeatSeriesBuilder。 ↩
-
Apple,Heart Rate, Calorimetry, and Activity on Apple Watch,2024 年 11 月,2026 年 9 月 9 日获取。引用:后台算法「仅在用户静止时报告测量结果。它尝试每 5 分钟报告一个以 bpm 为单位的心率」;「在每一个互不重叠的五分钟窗口内,Apple Watch 尝试向 HealthKit 发布一个后台心率,能否发布取决于信号质量与用户的活动状态」;「在每一个互不重叠的五秒窗口内,算法会挑选质量最高的一个心率测量结果用于显示并发布到 HealthKit」;行走抽测:「如果信号质量足够,抽测得到的行走心率会发布到 HealthKit」;HRV:「心动图的默认测量频率为每四小时一次;当用户开启不规则心律通知或 AFib History 时,分别提高到每两小时或每 15 分钟一次。」 ↩↩↩↩↩↩↩↩↩
-
Apple Developer Documentation,HKQuantitySample:「一个数量样本包含一个或多个 HKQuantity 对象」;
count属性;以及 HKQuantitySeriesSampleQuery,「一种访问与数量样本相关联的序列数据的查询」,其 handler 会收到每个数量及其日期区间,而includeSample属性决定「该查询是否应返回序列样本」。 ↩↩↩↩