Как запустить фоновый процесс в watchOS? - PullRequest
0 голосов
/ 08 июня 2018

Я сделал свое первое приложение для Apple Watch и столкнулся с невозможностью отправлять данные каждые 10 секунд на мой сервер.

Приложение зависает, когда дисплей выключается, и снова запускается с нуля, когда дисплей включен.

Я попытался запустить сеанс тренировки, как в в этом примере .

Но это не помогает, приложение зависает после 10 секунд бездействия.

Я пытаюсь отправлять данные акселерометра на свой сервер каждые 10 секунд в 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) {

    }
}

Он работает только при активном отображении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...