Ich versuche Schritte von Health Kit
zu bekommen, es funktioniert gut für mobile, aber wenn ich verbinde Apple Watch
meine App bekommen mehr Schritte dann Health kit
. Ich trace es und finde, dass es Detailsatz von Schritten sammelt, aber Gesamtschritte sind weniger als Detail im Gesundheitspaket.Wie bekomme ich HealthKit Schritte für alle vorherigen Daten
Meine App die Summe dieser Schritte erhalten:
Aber ich diese erhalten möchten:
Hier ist mein Code:
func MultipleDaysStepsAndActivitiesTest(_ startDate:Date, completion: @escaping (NSDictionary, [HealthKitManuallActivity], NSError?) ->()) {
let type = HKSampleType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount) // The type of data we are requesting
let now = Date()
let newDate = startDate
let predicate = HKQuery.predicateForSamples(withStart: newDate, end: now, options: HKQueryOptions())
var dates = now.datesBetweenGivenDates(startDate,endDate:now)
dates = dates.reversed()
let query = HKSampleQuery(sampleType: type!, predicate: predicate, limit: 0, sortDescriptors: nil) { query, results, error in
var dict:[String:Double] = [:]
if results?.count > 0 {
for result in results as! [HKQuantitySample] {
print(result)
if result.sourceRevision.source.name != kHealthKitSource {
if dict[self.fmt.string(from: result.startDate)] != nil {
dict[self.fmt.string(from: result.startDate)] = dict[self.fmt.string(from: result.startDate)]! + result.quantity.doubleValue(for: HKUnit.count())
} else {
dict[self.fmt.string(from: result.startDate)] = result.quantity.doubleValue(for: HKUnit.count())
}
}
}
}
var sDate = startDate // first date
let cal = Calendar.current
print(dict)
if dict.isEmpty {
while sDate <= Date() {
dict[self.fmt.string(from: sDate)] = 0
sDate = cal.date(byAdding: .day, value: 1, to: sDate)!
}
} else {
while sDate <= Date() {
if dict[self.fmt.string(from: sDate)] == nil {
dict[self.fmt.string(from: sDate)] = 0
}
sDate = cal.date(byAdding: .day, value: 1, to: sDate)!
}
}
// reading activities
self.MultipleDaysWorkouts(startDate, endDate: now, completion: { (activities, error) in
if results?.count == 0 {
for activity in activities {
dict[activity.startDate] = 0.0
}
}
// reading mindfulness activities
self.MultipleDayMindFullnessActivity(startDate, completion: { (mindfulnessActivities, mindError) in
if mindError == nil {
let allActivities = mindfulnessActivities + activities
completion(dict as NSDictionary, allActivities, mindError as NSError?)
}
})
})
}
execute(query)
}
Mögliche Duplikate von [Aggregierte CMPedometerData (iPhone + Watch Gesamtanzahl)] (https://stackoverflow.com/questions/44580730/aggregated-cmpedometerdata-iphone-watch-total-count) –