

私はSwiftUIとHealthKitを使用して、ユーザーの心拍数をリアルタイムで取得するアプリを開発しています。具体的には、HKSampleQueryを使用して最新の心拍数のサンプルを取得しようとしています。しかし、アプリがフォアグラウンドにある間、新しいデータを取得することができません。しかし、アプリを一度バックグラウンドに移動してから再びフォアグラウンドに戻すと、新しいデータが正常に取得できます。

以下は私が使用しているコードの一部です：

[code]

    let heartRateType = HKObjectType.quantityType(forIdentifier: .heartRate)!
    let currentDate = Date()
    let tenSecondsAgo = currentDate.addingTimeInterval(-10)
    let predicate = HKQuery.predicateForSamples(withStart: tenSecondsAgo, end: currentDate, options: .strictStartDate)
    let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)
    
    let query = HKSampleQuery(sampleType: heartRateType, predicate: predicate, limit: 3, sortDescriptors: [sortDescriptor]) { _, samples, _ in
        // データの処理
    }
    healthStore.execute(query)
    
[/code]

私が試したこと：

HKHealthStoreのインスタンスを毎回新しく初期化してデータを取得する。  
データの取得範囲を過去10秒に設定して、最新のデータを取得する。  
この問題に関する知識や経験がある方、アドバイスやヒントをいただけると幸いです。よろしくお願いいたします。


CC BY-SA 4.0
2023-10-01T02:53:01.717
96393
2023-10-01T02:53:01.717
59960
question
swift ios xcode swiftui health-kit
SwiftUIとHealthKitのHKSampleQueryを使用して心拍数をリアルタイムで取得する際の問題