Как правильно добавить HKRoute в HKWorkout - PullRequest
0 голосов
/ 30 мая 2020

Как правильно добавить маршрут к тренировке в HealthKit. Я всегда получаю результаты, когда маршрут не является непрерывным, см. маршрут в HK

Сначала я создаю массив CLLocations

// DISTANCE - ROUTE
        for location in workout.samples {
            if location.latitude.value == nil {
                continue
            }
            let coordinates = CLLocationCoordinate2DMake(location.latitude.value ?? 0.0, location.longitude.value ?? 0.0)
            let altitude = location.altitude.value ?? 0.0
            let speed = location.speed.value ?? 0.0
            let course = location.course.value ?? 0.0
            let timestamp = location.timestamp
            let accuracy = kCLLocationAccuracyBestForNavigation
            let coreLocation = CLLocation(coordinate: coordinates, altitude: altitude, horizontalAccuracy: accuracy, verticalAccuracy: accuracy, course: course, speed: speed, timestamp: timestamp)

            locations.append(coreLocation)
        }

А затем однажды вставляю массив в RouteBuilder и FinishRoute, см.

if workout.existDistance() {
        routeBuilder.insertRouteData(locations) { (state, error) in
            print (error ?? "no error inserting data to route")
            routeBuilder.finishRoute(with: workoutHK, metadata: nil) { (completion, error) in
                print(error ?? "no error finishing route")
            }
        }
    }

    healthStore.save(workoutHK) { (finished, error) in
        if finished {
            self.healthStore.add(samples, to: workoutHK) { (completion, error) in
                print (error ?? "no error adding samples")
            }

            completion(true)
            print(error ?? "no error saving workout")
        } else {
            completion(false)
        }
    }

. Когда я экспортирую образцы своего местоположения в GPX и использую другое приложение для сохранения тренировки в HealthKit, он работает нормально, поэтому сами данные должны быть в порядке, я пробовал уже другой CLLocation inits, но ничего не помогает.

...