每五秒一次的心率:HealthKit App 會有什麼改變

新的 Apple Watch 感測器,對 HealthKit App 究竟改變了什麼? 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

蘋果的原話

Apple Watch Series 12 case back in the keynote, engraved 46mm aluminum case, WR-50M, glass ceramic, GPS and Cellular, with the green optical sensor lit

蘋果 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 App 的新區塊中檢視」;硬體新聞稿的說法則是「最多提高到 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 App 裡的量測,都會疊加上去,而運動的資料流本來就是五秒一次。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 小時內的計數不受影響,數個月前的第一方運動樣本計數則會受影響。有三個具體的未知數:

  1. 樣本密度。 先前的手錶在運動中本來就大約每五秒寫入一筆心率樣本;我自己的 Watch 在一次 53 分鐘的跑步中記下 639 筆心率樣本,一次 70 分鐘的跑步則是 870 筆。背景心率是靜止時每五分鐘視窗最多一筆,再加上走路抽測。11 新的部分是運動之外的五秒頻率。如果 Series 12 整天都按量測速率寫入,算下來每位使用者 24 小時就是 17,280 筆心率數量;由於一筆樣本可以承載一段序列,HKQuantitySample 物件的數量可能與此不同。12 反過來說,如果它的背景寫入維持舊頻率,把五秒資料留給自家演算法用,那麼對你來說什麼都沒變。只有實機能給出答案。
  2. 兩種 HRV 變體。 HealthKit 一直只帶一個 HRV 識別碼 heartRateVariabilitySDNN,iOS 27 的 SDK 新增了第二個 heartRateVariabilityRMSSD,目前的文件只是一則沒有任何說明的宣告。8 蘋果沒說 Recovery HRV 與 overall HRV 是否分別對應 RMSSD 與 SDNN,所以第一天就把兩個類型都讀出來,跟 Heart Rate App 顯示的內容對照。
  3. readiness。 蘋果把它描述成一項帶分數與建議的功能。今天的 HealthKit 文件索引裡沒有 readiness 類型,新聞稿也沒有提到第三方存取。在 SDK 給出不同說法之前,就當它是蘋果專屬。

9 月 18 日之前該改什麼

以下這些都不需要新硬體。無論密度是每五分鐘嘗試一次、每天 288 筆,或每五秒一筆、每天 17,280 筆,這些做法都始終正確。

讀增量,別讀整天。 HKAnchoredObjectQuery 只回傳自你保存的錨點之後新增或刪除的樣本,而且可以保持開啟以接收更新。5 每次啟動都對最近 24 小時重跑一次樣本查詢的 App,做的是隨樣本數成長的工;到了兩萬筆樣本,這筆成本每次啟動都要付一遍。我沒量過它從哪裡開始會痛,而這正是不該再付下去的理由。

概覽用統計值,細節用樣本。 HKStatisticsCollectionQuery 會依你選定的區間回傳由 HealthKit 算好的最小值、最大值與平均值,因此日檢視不管底下壓著多少讀數,要求到的結果數量都是有界的。6 原始讀數留給真正需要的畫面,例如單次運動或一段恢復視窗,而且要在新密度下替這些畫面做效能剖析,別假設它們撐得住:五秒的資料流,可能在五分鐘圖表原本只畫一個點的位置放上 60 個點。

背景推播要有意識地選。 enableBackgroundDelivery(for:frequency:) 接收一個 HKUpdateFrequency,系統「在所指定頻率所定義的每個時段內,最多喚醒你的 App 一次」;.immediate 會「在任何行程儲存或刪除指定類型的樣本時」喚醒你的 App,但同樣受蘋果文件所述的頻率上限規範,而在 watchOS 上,文件寫明「大多數資料類型都有每小時的頻率上限」。7 除了醫療用途,幾乎所有情境每小時一次就夠了,這段期間抵達的資料交給 anchored query 去撿。

先彙總再儲存。 那些為了離線圖表或同步而把 HealthKit 鏡射到自家資料庫的 App,應該儲存每分鐘或每五分鐘的彙總值,原始樣本只留給確實需要的視窗,例如一次運動。一個每天增加數千列的資料庫會發生什麼事,請見 SwiftData 效能一文。

替查詢設上限。 HKSampleQuery 接收 limit 與排序描述子,兩者都要用。做增量讀取時,給 HKAnchoredObjectQuery 一個 limit,並從它回傳的錨點繼續,而不是用日期分頁。59

逐次心跳的資料要分開。 更密集的 BPM 讀數不是 RR 間期,所以別把它們倒進心跳序列裡。逐次心跳間期本來就有 HKHeartbeatSeriesSample,用 HKHeartbeatSeriesBuilder 寫入;App 蒐集到的 RR 間期資料用它,而 BPM 讀數不管頻率多高,都放在 heartRate 樣本裡。10

產品的空間在哪裡

Keynote recap slide for the Health app: Longevity, lab results, strength and balance assessments, Health Age, Readiness, Insights tab, on-demand VO2 max

蘋果 2026 年 9 月 9 日發表會直播畫面,太平洋時間上午 10:44:Health App 的總結投影片,也就是一個通用健身儀表板從此要與之競爭的那塊地方。

readiness 會跟著手錶一起登場。重新設計的 Health App「將在今年稍晚推出,先從美國英文開始」,新增一個包含 Health Age 的 Longevity 分頁;蘋果表示這個分頁除了自家資料,也會取用「第三方 App 與裝置」的資料,使用者在美國「將能夠預約並購買」售價 119 美元的檢驗套組。23 依我看,一個通用健身儀表板跟它競爭,只會輸。蘋果沒有做的是具體:一項運動的恢復、一種病症的配速、一個社群的教練迴圈、一位臨床醫師指名要的畫面。心率資料更密集,只會讓這些做得更好。蘋果說 Longevity 畫面會取用「第三方 App 與裝置」的資料,因此你的 App 寫進 HealthKit 的樣本,在重新設計的 Health App 上線後也許會出現在那裡;蘋果並未說明哪些資料符合條件,而不論結果如何,寫出好樣本而不是什麼都不寫,這個理由都依然成立。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、容器數量、視窗內的數量總數,以及運動中與非運動時的間隔中位數。這些數字會決定上面那些段落到底是預防措施還是緊急狀況。先前手錶向 HealthKit 發布的頻率,蘋果 2024 年的白皮書有交代;至於 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

第三方 App 拿得到 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

參考來源


  1. Apple Newsroom,Introducing Apple Watch Series 12, with the all-new Health Sensing System,2026 年 9 月 9 日。引用:兩種 HRV 變體;HRV「最多提高到 24 倍」;包含訓練負荷在內的 readiness 輸入項。 ↩↩↩↩

  2. Apple Newsroom,Apple advances health and fitness capabilities using Apple Intelligence,2026 年 9 月 9 日。引用:兩款手錶每五秒量測心率,以及關於 Activity 圓環的那句話;HRV「最快每五分鐘一次」與「頻率提高 24 倍」;readiness 的定義與四項建議;重新設計的 Health App「今年稍晚推出,先從美國英文開始」;Longevity 分頁的第三方資料。 ↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Apple Newsroom,Apple unveils Apple Watch Ultra 4,2026 年 9 月 9 日。HRV「最多提高到 24 倍」;包含訓練負荷在內的 readiness 輸入項;watchOS 27 於 9 月 14 日推出;9 月 18 日開賣;「將能夠預約並購買」119 美元的檢驗套組。 ↩↩↩↩↩↩

  4. Apple 支援,Monitor your heart rate with Apple Watch,2026 年 9 月 9 日擷取。引用:背景量測「在您靜止時整天量測,在您走路時定期量測」;運動期間及結束後三分鐘內的持續量測。 ↩

  5. Apple Developer Documentation,HKAnchoredObjectQuery。 ↩↩↩↩

  6. Apple Developer Documentation,HKStatisticsCollectionQuery。 ↩↩↩↩

  7. Apple Developer Documentation,enableBackgroundDelivery(for:frequency:withCompletion:) 與 HKUpdateFrequency。 ↩↩

  8. 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 識別碼。 ↩↩↩↩↩↩↩

  9. Apple Developer Documentation,HKSampleQuery。 ↩

  10. Apple Developer Documentation,HKHeartbeatSeriesSample 與 HKHeartbeatSeriesBuilder。 ↩

  11. 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 分鐘一次。」 ↩↩↩↩↩↩↩↩↩

  12. Apple Developer Documentation,HKQuantitySample:「一筆數量樣本包含一個或多個 HKQuantity 物件」;count 屬性;以及 HKQuantitySeriesSampleQuery,「一種存取與數量樣本相關聯之序列資料的查詢」,其 handler 會收到每個數量及其日期區間,而 includeSample 屬性決定「該查詢是否應回傳序列樣本」。 ↩↩↩↩

相關文章

可調整大小的 iPhone 時代:在 9 月之前讓 App 做好準備

iOS 27 把可調整大小的界線畫在您所使用的 SDK 上。檢查清單:盤點固定尺寸的假設、採用自適應佈局、在 Xcode 27 中測試。

7 分鐘閱讀

開發者眼中的 iPhone Duo:1.42 的難題與 SDK 空窗

開發者視角的 iPhone Duo:從 App Store Connect 截圖推得的螢幕點數、兩種螢幕形狀、Split View、Touch ID、SDK 時程,以及六場 Tech Talks。

24 分鐘閱讀

Mac App Store 不讓視窗管理器存在,我還是把它上架了

App Sandbox 禁用了每一款視窗排列工具都需要的 API,Apple 要我在商店之外發行。941 Tiles 卻在商店裡上架了:搬動視窗的是 Apple 自己的 Shortcuts 引擎。

8 分鐘閱讀