iOS WatchOS5 - 如何以编程方式检测 Apple Watch 是不是在特定时间间隔戴在手腕上(佩戴)?

Posted

技术标签:

【中文标题】iOS WatchOS5 - 如何以编程方式检测 Apple Watch 是不是在特定时间间隔戴在手腕上(佩戴)?【英文标题】:iOS WatchOS5 - how to detect programmatically if Apple Watch was on the wrist (worn) at specific time interval?iOS WatchOS5 - 如何以编程方式检测 Apple Watch 是否在特定时间间隔戴在手腕上(佩戴)? 【发布时间】:2019-03-09 13:14:53 【问题描述】:

如果有一些 HealthKit 或其他数据源我可以查询以了解 Apple Watch 是否在给定时间间隔内佩戴/与手腕接触,我很感兴趣。目前我依靠 HealthKit 查询 HeartRate,如果我在某个窗口内没有得到心率读数,那么手表很可能是脱离手腕或正在充电。

有没有更好的方法来检测 Apple Watch 是否戴在手腕上?

这种方法的问题在于它的描述性不强 - 如果用户在最后一分钟戴上手表并进行了测量,则此逻辑会将整个时段视为手表处于“开启”状态。有更好的吗?

// obtain heartRateSamples from HealthKit and filter them
let hrFilterStart = startDate.addingTimeInterval(startSecondsOffset)
let hrFilterEnd = hrFilterStart.addingTimeInterval(Double(30 * 60) )

let heartRateDuringTimeSlice =  heartRateSamples.filter sample -> Bool in
    let fallsBetween = (hrFilterStart ... hrFilterEnd).contains(sample.startDate)
    return fallsBetween


if heartRateDuringTimeSlice.count == 0 
    //watch is not on the wrist - probably charging, ignore this interval

【问题讨论】:

【参考方案1】:

HealthKit 不会公开任何可用于可靠确定 Apple Watch 是否戴在手腕上的信息。使用心率或其他自动采集的样本对大多数用户来说效果很好,但请记住,即使手表戴在手腕上,心率样本也可能无法以一致的频率采集。

【讨论】:

以上是关于iOS WatchOS5 - 如何以编程方式检测 Apple Watch 是不是在特定时间间隔戴在手腕上(佩戴)?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何以编程方式检测运行设备的iOS版本? [重复]

如何在 iOS 应用程序中以编程方式检测 SwiftUI 的使用情况

iOS如何在弹出顶视图控制器时以编程方式检测?

iOS - Apple TV - 以编程方式检测 Apple TV 上的节目

如何以编程方式检测音符和和弦(在 iPhone SDK 中)?

如何以编程方式检测游戏中心?