Загадочная ошибка при вставке данных в HKWorkoutRouteBuilder в watchOS 4 Beta 4

Когда я вставляю данные маршрута в HKWorkoutRouteBuilder, я получаю следующую ошибку:

Соединение со службой с именем com.apple.healthd.server было прервано, но сообщение было отправлено через дополнительный прокси, и поэтому этот прокси стал недействительным

Вот фрагмент кода.

    workoutRouteBuilder.insertRouteData(filteredLocations) { (success, error) in
        if !success {
            print("inserting route data failed with error: \(String(describing: error))")
        }
    }

Я сделал паттерн с имплементацией из примера Speed ​​Sloth.

Любые идеи будут оценены!

ОБНОВЛЕНИЕ: Вот еще немного информации из журналов часов. Похоже, что-то вроде разрешения, но я пока не смог его отследить:

ошибка 13:21:14.664262 -0400 исправное соединение из pid 1705: Предупреждение: возникла исключительная ситуация во время вызова полученного сообщения, отбрасывания входящего сообщения и аннулирования соединения. Исключение: недопустимый параметр не удовлетворяет: [authorizationStatuses count] == ​​[typesInclusiveParentTypes count] Недопустимый параметр не удовлетворяет: [authorizationStatuses count] == ​​[typesInclusiveParentTypes count] (0 CoreFoundation
0x1dc04d25 + 153 1 libobjc.A.dylib
0x1d227181 objc_exception_throw + 39 2 CoreFoundation
0x1dc04be5 + 1 3 Foundation
0x1e43c1cd + 93 4 HealthDaemon
0x2edf678f + 2015 5 HealthDaemon
0x2ee6eed1 + 143 6 HealthDaemon
0x2ee6ec77 + 143 7 HealthDaemon
0x2ee7b99b + 485 8 HealthDaemon
0x2f0e1e1f + 143 9 Foundation
0x1e589393 + 19 10 Foundation
0x1e587<...>

3 ответа

Решение

У меня такая же проблема. Вы должны убедиться, что запрашиваете авторизацию у пользователя для:

// Objective C
[HKSeriesType workoutRouteType]

// Swift
HKSeriesType.workoutRoute()

Соединение со службой с именем com.apple.healthd.server было прервано, но сообщение было отправлено через дополнительный прокси, и поэтому этот прокси стал недействительным

Просмотр этого сообщения указывает на то, что системный процесс, обрабатывающий запрос, потерпел крах или завершился. Вы должны сообщить об ошибке в Apple. Ищите здоровые журналы сбоев и включайте их.

Не забудьте добавить запрос WorkoutRoute для HKHealthStore в AppDelegate

Workout Route не работает с симулятором, а работает только с некоторыми HKWorkoutActivityType, такими как.walking, .running на OS4

private func requestAccessToHealthKit() {

    let healthStore = HKHealthStore()

    let allTypes = Set([HKObjectType.workoutType(),
                        HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,
                        HKObjectType.quantityType(forIdentifier: .distanceWalkingRunning)!])
    if #available(watchOS 4.0, *) {
        allTypes.insert(HKSeriesType.workoutRoute())
    }
    healthStore.requestAuthorization(toShare: allTypes, read: allTypes) { (success, error) in
        if !success {
            print(error?.localizedDescription ?? "")
        }
    }
}
Другие вопросы по тегам