web-dev-qa-db-ja.com

iOSはAppleほぼリアルタイムで視聴

心拍数データをほぼリアルタイムで記録するアプリを作成し、このデータをできるだけ早くサーバーに送信する必要があります。

最初に私はこのアプローチを取りました: OS 2.0ベータ版を見る:心拍数にアクセスする

実際、正常に動作しています。 HealthKitには5秒ごとに新しい心拍数データが​​あります。しかし今、私はそれをサーバーと同期できないという問題を抱えています。

私の最初のアプローチはWatchアプリでした。時計はサーバーにデータを送信していました。時計の画面が真っ暗になるとすぐに送信が停止するため、これは機能しません。

私の次のアプローチは、iPhoneのHealthKitに5秒ごとに新しいデータを照会することでした。これは、アプリがフォアグラウンドにある限り機能します。

次に、HealthKit自体を監視し、アプリをバックグラウンドから取り消して、何かを実行できる、ある種のバックグラウンド機能があることを確認しました。(enableBackgroundDeliveryForType)これは心拍数では機能しないようです(Appleドキュメントステップのようなものについてはこれはうまくいかないと言います、私は心拍数がそれらの1つであると思います)。

私は今立ち往生しています。あなたはそれをする方法を知っていますか? iPhoneで5〜10秒ごとに実行されるバックグラウンドタスクが必要になります。それは不可能のようです

11
user2529173

[〜#〜] update [〜#〜]

@BootMakerが気づいたように、AppleバックグラウンドモードをHKWorkoutアプリでWatchOSで使用できるようにしたので、現在は機能しています。 a HKWorkoutSessionこれにより、アプリがバックグラウンド(時計の暗い画面)にある場合でも、心拍数の配信がリアルタイムで維持されます。

最も近いあなたは時計アプリが開いている間です。

なぜ私はこれを述べているのですか?

  1. 2つのHealthKitのデータベースがあります(1つはiPhoneに、もう1つはApple Watch)にあります。同期するタイミングは任意です。 OSによってのみ決定されます.

  2. リアルタイムに最も近いのはないiPhoneまたはApple Watchで画面をパスワードでロックします。いずれにせよ、新しいメジャーが追加されるたびに同期が行われるという保証はありませんApple WatchのHealthKit

  3. 心拍数センサーをリアルタイムで動作させる唯一の方法は、ワークアウトまたはオブザーバーを使用することですApple Watchアプリ[〜#〜] foreground [〜#〜]にあります。

  4. バックグラウンド配信は[〜#〜] not [〜#〜]利用可能Appleウォッチアプリ。

  5. Watch OS 2センサーに自動的に測定するように要求します(バックグラウンドで)最低10分ごと。

他の回避策はありませんリアルタイムが必要な場合長期間、またはユーザーがアプリを使用していない間、専用のウェアラブルを使用する必要があります

20
Hugo Alonso

それでも心拍数やその他のデータをリアルタイムで取得する必要がある場合。このソリューションを使用してください:

  1. Appleウォッチアプリ/エクステンションを開発する
  2. 時計アプリで、HKHealthStore、HKWorkoutConfiguration、HKWorkoutSession、HKLiveWorkoutBuilderを使用してワークアウトを作成します。ワークアウトを作成した後、時計アプリはリアルタイムで心拍数を取得します。
  3. WCSessionとの時計キット接続を使用してiPhoneアプリにデータを送信します。
  4. Apple時計とiPhoneの両方でバックグラウンドモードを有効にします。

私はテストしましたが、アプリが終了しても、心拍数を取得できます(デバッグ用の心拍数データを投稿するためにローカル通知を使用しました)

4
nhathm