2017-08-01 2 views
2
Einfügen

Wenn ich Routendaten in HKWorkoutRouteBuilder einfügen bekomme ich folgende Fehlermeldung:Rätselhafte Fehlerdaten in HKWorkoutRouteBuilder in watchOS 4 Beta 4

Die Verbindung mit dem Namen com.apple.healthd.server Service wurde unterbrochen, aber die Botschaft war über einen zusätzlichen Proxy gesendet und daher dieser Proxy wurde ungültig

Hier ist ein Code-Snippet.

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

Ich gemustert von Impelleration aus dem Speed ​​Sloth Beispiel.

Alle Einblicke würden geschätzt!

UPDATE: Hier sind einige weitere Informationen aus den Watch-Logs. Sieht aus wie eine Art Erlaubnis Problem, aber ich habe nicht in der Lage gewesen, es aufzuspüren noch:

fault 13:21:14.664262 -0400 healthd connection from pid 1705: Warning: Exception caught during invocation of received message, dropping incoming message and invalidating the connection. Exception: Invalid parameter not satisfying: [authorizationStatuses count] == [typesIncludingParentTypes count] Invalid parameter not satisfying: [authorizationStatuses count] == [typesIncludingParentTypes 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<…>

Antwort

2

Ich hatte das gleiche Problem. Sie müssen sicherstellen, dass Sie die Berechtigung von dem Benutzer anfordern für:

// Objective C 
[HKSeriesType workoutRouteType] 

// Swift 
HKSeriesType.workoutRoute() 
+0

Danke! Das hat den Trick gemacht! Ich kann nicht glauben, dass ich das vermisst habe. Natürlich wäre eine aussagekräftigere Fehlermeldung sinnvoll. – jeffbailey

+0

Einverstandener Fehler sollte verbessert werden. Außerdem scheint es, als würde die Berechtigungsüberlastung dies als eine Erlaubnis verlangen, wenn der Benutzer einen Standortzugriff gewähren muss, damit dies trotzdem nützlich ist. PS fühle mich frei, dies als die akzeptierte Antwort zu machen;) – Lewis42

1

The connection to service named com.apple.healthd.server was interrupted, but the message was sent over an additional proxy and therefore this proxy has become invalid

Diese Nachricht sehen gibt an, dass das System Prozess die Anforderung bearbeitet wird abgestürzt oder verlassen. Sie sollten einen Fehler bei Apple einreichen. Suchen Sie nach Healthd Crash-Logs und fügen Sie sie ein.

+0

Ist es möglich, CrashLogs für 'healthd' aus dem Simulator zu bekommen? Ich kann in der Konsole keinen Hinweis auf 'Healthd' finden. – Lewis42

0

nicht Anfrage von WorkoutRoute für HKHealthStore bei AppDelegate

Workout Strecke mit Simulator funktioniert nicht hinzuzufügen, Vergessen, und funktioniert nur mit einigen HKWorkoutActivityType wie .walking, .running auf 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 ?? "") 
     } 
    } 
}