2017-06-15 39 views
0

私は以下のコードで一定期間(運動時間)HealthKitから平均心拍数データを読み取ることができます。Swift HealthKitトリガー心拍数サンプル

しかし、Apple Healthアプリを見ると、Apple Watchの心拍数サンプルが非常に少ない頻度で(15-30分ごとに)表示されます。これは、私の平均的な人事問題がかなり不正確であることを意味します。

私はどのようにしてHealthKitをトリガーして、心拍数のデータをサンプリングしてHealthKitに書き込むことができますか?

let endDate = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.minute, value: duration, to: startDate, options: NSCalendar.Options()) 
    let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions()) 

    let squery = HKStatisticsQuery(quantityType: heartRateType, quantitySamplePredicate: predicate, options: HKStatisticsOptions.discreteAverage, completionHandler: { (qurt, result, errval) -> Void in 

     guard errval == nil else { print("error"); completion(0.0, errval); return } 

     var averageHeartRate : Double = 0.0 
     if (result != nil && result!.averageQuantity() != nil) { 
      let quantity : HKQuantity = result!.averageQuantity()! 
      averageHeartRate = quantity.doubleValue(for: HKUnit.count().unitDivided(by: HKUnit.minute())) 
     } 
    }) 
+0

測定前に 'HKWorkoutSession'を起動しましたか? –

+0

@DávidPásztor私はしなかった、一度始めたそれは良かった、ありがとう! – achen1217

+0

@DávidPásztor私はトレーニングを開始しましたが、私は終了セッションを呼び出すと停止しないようです。 hrモニタは引き続きオンで、時計アプリはフォアグラウンドにとどまります。どのように私はこれを止めることができる任意のアイデア? – achen1217

答えて

1

ユーザーがHKWorkoutSessionを追跡している自分の時計でアプリを実行している必要があり、アップルウォッチから、より頻繁な心拍数データを取得します。あなたのアプリにワークアウトを追跡するペアのwatchOSアプリケーションがある場合は、startWatchApp(with workoutConfiguration:completion:)を使用してiPhoneからトレーニングを開始できます。

+0

ありがとう、私は追加し、これは私の問題を修正! 注WKBackgroundModesとUIBackgroundModesを追加する必要がありました – achen1217

+0

@ achen1217これで問題が解決した場合は、回答に合格とマークしてください。ありがとうございました! – Allan

+0

私は運動を始めましたが、私は終わりのセッションを呼び出すときに停止していないようです。 hrモニタは引き続きオンで、時計アプリはフォアグラウンドにとどまります。どのように私はこれを止めることができる任意のアイデア? – achen1217

関連する問題