Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在watchOS中运行后台进程?_Swift_Watchos_Watchos 3 - Fatal编程技术网

Swift 如何在watchOS中运行后台进程?

Swift 如何在watchOS中运行后台进程?,swift,watchos,watchos-3,Swift,Watchos,Watchos 3,我已经为apple watch制作了第一个应用程序,并且面临着无法每10秒向后端发送数据的问题 当显示器关闭时,应用程序被冻结,当显示器打开时,应用程序重新运行 我试着像往常一样进行锻炼 但这并没有帮助,应用程序在10秒不活动后被冻结 我尝试在InterfaceController.swift中每隔10秒向后端发送加速计数据: //... override func willActivate() { super.willActivate() startWorkout() //it

我已经为apple watch制作了第一个应用程序,并且面临着无法每10秒向后端发送数据的问题

当显示器关闭时,应用程序被冻结,当显示器打开时,应用程序重新运行

我试着像往常一样进行锻炼

但这并没有帮助,应用程序在10秒不活动后被冻结

我尝试在InterfaceController.swift中每隔10秒向后端发送加速计数据:

//...
override func willActivate() {
    super.willActivate()
    startWorkout() //it's copied from example
    startAnglesTracker()
}

func startAnglesTracker() {
    if motion.isAccelerometerAvailable && !motion.isAccelerometerActive {
        motion.accelerometerUpdateInterval = 10
        motion.startAccelerometerUpdates(to: OperationQueue.main) {
            //sending here
        }
    }
}

private func startWorkout() {
    let workoutConfiguration = HKWorkoutConfiguration()
    workoutConfiguration.activityType = .crossTraining
    workoutConfiguration.locationType = .indoor
    do {
        workoutSession = try HKWorkoutSession(configuration: workoutConfiguration)
        workoutSession?.delegate = self
        healthStore.start(workoutSession!)
        vibrate()
    } catch {
        serverData.setText("workoutSession error")
    }
}
//...

extension InterfaceController: HKWorkoutSessionDelegate {
    func workoutSession(_ workoutSession: HKWorkoutSession, didFailWithError error: Error) {

    }

    func workoutSession(_ workoutSession: HKWorkoutSession, didGenerate event: HKWorkoutEvent) {

    }

    func workoutSession(_ workoutSession: HKWorkoutSession, didChangeTo toState: HKWorkoutSessionState, from fromState: HKWorkoutSessionState, date: Date) {

    }
}

它仅在显示器处于活动状态时工作。

信息不足。给我们看看你的代码。你想做什么?什么时候会结冰?为了缩小问题范围,您进行了哪些调试?对不起,我添加了带有代码的信息。您的问题中没有与训练相关的代码。在watchOS中,收集加速计数据不是有效的后台模式。如果要将应用程序用作训练应用程序,则需要运行
HKWorkoutSession
。添加了与训练相关的代码