Swift在背景中检测运动活动



我想在应用程序暂停时检测运动活动(不停止(。我使用此代码,如果用户使用应用程序:

let isActivityAvailable = CMMotionActivityManager.isActivityAvailable()
if isActivityAvailable {
    CMMotionActivityManager().startActivityUpdates(to: OperationQueue.main) { (motionActivity) in
        if (motionActivity!.confidence.rawValue > 0) {
            if (motionActivity?.walking)! {
                print("User is walking")
            }
        }
    }
}

应用程序可以在几种状态:

  1. 在前景中跑步
  2. 在后台运行(积极执行背景任务(
  3. 暂停(仍在存储器中,但没有获得处理器时间。(
  4. 终止。可以随时终止暂停应用程序而不会警告。

只有前两个状态将收到运动更新。引用文档:

...暂停应用程序时未提供更新。

用户将其交换或锁定手机时,只有在状态2(在后台运行(持续几秒钟,除非您要求背景时间。背景时间仅限于短时(3分钟?(,除了一小部分应用程序类型(如音乐播放器和转弯导航应用程序(。

由于这些事情,简短的答案是否定的,您在应用程序"暂停"时无法收到运动更新,因为暂停了。

供您自己使用(或内部企业使用(,您可以将应用程序设置为音乐播放器,并让它连续接收运动更新,但是该应用程序将在App Store评论中被拒绝。

最新更新