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

时间:2018-08-26 23:39:12

标签: ios swift3 swift4 core-motion pedometer

我已经开始使用计步器,它的运行情况还不错。我做了一个微调,可以告诉我锻炼时间,并且可以完美地跟踪“活动类型”。计步器将在后台自动更新,但是微调器不会。我知道我必须为applicationDidEnterBackground使用通知。我可以找到从应用程序进入后台到现在为止已经花费了多少时间,所以我可以改变时间。

我的问题是:我怎么知道那时候有多少时间是在走动和跑步? 因为这将为所有活动腾出时间。有人知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

设法解决问题。每次触发此功能都意味着用户有活动:

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

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

在此函数startCountingSteps()中,我放置了一个数组,如果步数大于1,则该数组每次触发时都会追加一个项目,每秒。意思是走路还是跑步。

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