Загадочная ошибка при вставке данных в 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 ?? "")
}
}
}