Core Motion 计步器在后台保存计时器数据

Core Motion Pedometer Save Timer Data when in Background

我已经开始玩计步器了,它工作得很好。我制作了一个计时器,可以显示锻炼时间,并且可以完美地跟踪 Activity 类型。计步器会在后台自动更新,但是计时器不会。我知道我必须为 applicationDidEnterBackground 使用通知。我可以找出从应用程序进入后台到现在已经过去了多少时间,这样我就可以及时做出差异。

我的问题是:我怎么知道步行和 运行 有多少时间? 因为它将给出所有事件的时间。有人知道实现这一目标的解决方案吗?

成功解决问题。每次触发此功能意味着用户有 activity:

//START GETTING UPDATES
private func startUpdating() {
    if CMMotionActivityManager.isActivityAvailable() {
        startTrackingActivityType()
    }

    if CMPedometer.isStepCountingAvailable() {
        startCountingSteps()
    }
}

在此函数 startCountingSteps() 中,我放置了一个数组,如果步数大于 1,则每次触发它时都会附加一个项目,每秒。意思是步行或 运行.

我保存了用户进入后台的时间(以秒为单位),并在用户再次打开应用程序时获取当前时间。当前秒数+array.count=当前锻炼时间