My Swift iOSアプリはHealthKitと接続して、これまでに行ったステップの数をユーザーに表示します。ほとんどの場合、これは成功です。ステップの唯一のソースがiPhoneの内蔵歩数計機能で記録されたステップであれば、すべて正常に動作し、アプリで表示される歩数は健康アプリのステップ数と一致します。しかし、私の個人的なiPhoneに複数のデータソースがある場合、私のPebble TimeスマートウォッチとiPhoneの歩数計はどちらもHealthへのステップをフィードしてくれます。 iOS Healthアプリは、iPhoneとPebbleの両方が60秒ごとにHealthにステップしているので、重複した手順を実行しますが、正確な1日の歩数を表示しますが、私のアプリがHealthKitから取得するデータには、ソースが大幅に不正確になります。HealthがHealthKit-swiftとは異なる複数のステップソースを処理する
ステップカウントが正確なHealthアプリケーションの最終結果を、HealthKitの過膨張データのストリームに取り込むのではなく、どのようにすればよいですか?
UPDATE:ここで私は毎日の健康データを取得するために使用したコードです:
func recentSteps2(completion: (Double, NSError?) ->())
{
checkAuthorization() // checkAuthorization just makes sure user is allowing us to access their health data.
let type = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount) // The type of data we are requesting
let date = NSDate()
let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let newDate = cal.startOfDayForDate(date)
let predicate = HKQuery.predicateForSamplesWithStartDate(newDate, endDate: NSDate(), options: .None) // Our search predicate which will fetch all steps taken today
// The actual HealthKit Query which will fetch all of the steps and add them up for us.
let query = HKSampleQuery(sampleType: type!, predicate: predicate, limit: 0, sortDescriptors: nil) { query, results, error in
var steps: Double = 0
if results?.count > 0
{
for result in results as! [HKQuantitySample]
{
steps += result.quantity.doubleValueForUnit(HKUnit.countUnit())
}
}
completion(steps, error)
}
storage.executeQuery(query)
}
ユーザーが使用しているステップ数の計算方法を示すコードスニペットを含めてください。どのような種類のクエリを使用していますか? – Allan
@Allan私はユーザーのステップを計算するために使用するコードを含めるように質問を更新しました。 – owlswipe