0

I have made my first app for apple watch and faced with impossible to send data every 10 seconds to my backend .

Application is frozen when display turns off and running again from scratch when display is on.

I tryed to run workout session like in this example.

But it doesn't help, app is frozen after 10 seconds of inactivity.

I try to send accelerometer data to my backend every 10 seconds in InterfaceController.swift:

//...
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) {

    }
}

It works only when display is active.

Ilya Egorov
  • 43
  • 1
  • 1
  • 5

0 Answers0