You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS HealthKit能否实时获取当前睡眠状态?技术问询

HealthKit 实时睡眠状态获取问题解答
  • HealthKit不支持直接获取"当前实时睡眠状态",所有睡眠相关数据都以带时间区间的样本形式存储和读取。
  • 原因在于苹果的睡眠监测依赖算法分析一段时间的传感器数据(如运动、心率变化等),并非瞬时判断。睡眠分析类型(HKCategoryType(.sleepAnalysis))的核心就是记录某段时间内的睡眠阶段(深度睡眠、浅睡、清醒等),每个样本必须包含明确的起始和结束时间。

你提供的代码也能佐证这一点:创建睡眠样本时必须传入startDate和endDate,不存在无时间范围的"当前状态"样本:

let sleepSampleType = HKCategoryType(.sleepAnalysis)
let sleepCategory = HKCategoryValueSleepAnalysis.asleepDeep.rawValue
let deepSleepSample  = HKCategorySample(type: sleepSampleType,
                                        value:sleepCategory,
                                        start: startDate,
                                        end: endDate)

如果需要判断当前是否处于睡眠状态,可以通过以下方式实现:

  • 查询**最近一段时间(比如过去15分钟)**的睡眠样本
  • 检查当前时间是否落在某个睡眠样本的时间区间内,且样本对应的状态为睡眠类(如asleepDeep、asleepCore、asleepREM)

内容的提问来源于stack exchange,提问作者asdronin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:25:19