我已经开始使用计步器,它工作得很好。我做了一个计时器,它会告诉我锻炼时间,它可以完美地跟踪活动类型。计步器会在后台自动更新,但是计时器不会。我知道我必须为 applicationDidEnterBackground 使用通知。我可以找出从应用程序进入后台到现在已经过去了多少时间,这样我就可以及时做出改变。
我的问题是:我怎么知道有多少时间是步行和跑步?因为它将为所有事件留出时间。有人知道实现这一目标的解决方案吗?
我已经开始使用计步器,它工作得很好。我做了一个计时器,它会告诉我锻炼时间,它可以完美地跟踪活动类型。计步器会在后台自动更新,但是计时器不会。我知道我必须为 applicationDidEnterBackground 使用通知。我可以找出从应用程序进入后台到现在已经过去了多少时间,这样我就可以及时做出改变。
我的问题是:我怎么知道有多少时间是步行和跑步?因为它将为所有事件留出时间。有人知道实现这一目标的解决方案吗?
设法解决了问题。每次触发此功能时,都意味着用户有活动:
//START GETTING UPDATES
private func startUpdating() {
if CMMotionActivityManager.isActivityAvailable() {
startTrackingActivityType()
}
if CMPedometer.isStepCountingAvailable() {
startCountingSteps()
}
}
在此函数 startCountingSteps() 中,我放置了一个数组,如果步数大于 1,则每次触发它时,该数组将附加一个项目,每秒。这意味着它要么是步行,要么是跑步。
当用户进入后台时,我以秒为单位保存了时间,并在用户再次打开应用程序时获取了当前时间。当前秒数 + array.count = 当前经过的锻炼时间。