Sagen wir mal eine App Anfragen Genehmigung Fett und Kohlenhydrate zu HealthKit schreiben:HealthKit nicht in der Lage HKSample mit mehreren Einträgen zu schreiben, wenn einige der Eintragstypen durch Benutzer nicht erlaubt werden
func dataTypesToWrite() -> NSSet {
return NSSet(objects:
HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.dietaryCarbohydrates)!,
HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.dietaryFatTotal)!
)
}
healthStore.requestAuthorization(toShare: dataTypesToWrite() as? Set<HKSampleType>, read: nil, completion: { (success, error) -> Void in
if success {
print("completed")
}
})
Dies wird den Benutzer auffordern, die zu ermöglichen, App, um an HealthKit zu schreiben. Wenn der Benutzer Fett und Kohlenhydrate schreiben lässt, ist alles in Ordnung. Aber wenn sie nur eine gelassen werden, und ein HKSample mit Fett und Kohlenhydrate auf HealthKit geschrieben, wird dieser Eintrag nicht angezeigt,:
func foodCorrelationForFoodItem(foodNutrients: Dictionary<String, Double>, foodTitle: String) -> HKCorrelation {
let nowDate: Date = Date()
let consumedSamples: Set<HKSample> = [
HKQuantitySample(
type: HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.dietaryCarbohydrates)!,
quantity: HKQuantity(unit: HKUnit.gram(), doubleValue: 5.0),
start: nowDate,
end: nowDate),
HKQuantitySample(
type: HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.dietaryFatTotal)!,
quantity: HKQuantity(unit: HKUnit.gram(), doubleValue: 10.0),
start: nowDate,
end: nowDate)
]
let foodType: HKCorrelationType = HKCorrelationType.correlationType(forIdentifier: HKCorrelationTypeIdentifier.food)!
let foodCorrelationMetadata: [String: AnyObject] = [HKMetadataKeyFoodType: foodTitle as AnyObject]
let foodCorrelation: HKCorrelation = HKCorrelation(type: foodType, start: nowDate, end: nowDate, objects: consumedSamples, metadata: foodCorrelationMetadata)
return foodCorrelation
}
self.healthStore.save(foodCorrelationForFoodItem) { (success, error) in
if let error = error {
print(error)
}
}
Da Apple nicht erlaubt Anwendungen zu sehen, welche HealthKit Artikel beschreibbar sind Es ist unmöglich festzustellen, ob z nur Fett sollte geschrieben werden. Gibt es dafür eine Lösung? Vielen Dank.