AppleWatchのアプリを作る(第三回)正確な値(心拍数)を表示するようにする

AppleWatchのアプリを作る(第三回)正確な値(心拍数)を表示するようにする

目次

前回の振り返り
一旦ビルドする
仕組みを見直す
もう一度動作確認する
結論:バグじゃなかった
次回予告

前回の振り返り

前回はなんとか心拍数を取得するところまで行きましたが、ん??これ値正しい??というような状態だったので、今回は正しい値を出せるようになるまで行ってみたいと思います。

一旦ビルドする

どこから値が反映されているか分からないので、ボタンを押して値が返ってくるまで文字列を出すようにしてみる。
普通にデバッグしたら?っていう突っ込みが来そうですが、デバッグした時に表示される心拍数が実数ではないので分からない、、、というのが理由です。

@IBAction func btnTapped() {
    if self.workoutSession == nil {
      let config = HKWorkoutConfiguration()
      self.bpmlabel.setText(“測定します!!“)
      do {
        self.workoutSession = try HKWorkoutSession(healthStore: healthStore, configuration: config)
        self.workoutSession?.delegate = self
        self.workoutSession?.startActivity(with: nil)
      } catch let e {
        self.bpmlabel.setText(“error”)
        print(e)
      }    }
    else {
      self.workoutSession?.stopActivity(with: nil)
    }
  }
こうなって
やっぱりこうなった

でも、処理自体にはやっぱりちゃんと入っている。なんでだ。

仕組みを見直す

それから、同じようなことをしている人のブログなど見ていても全然原因が分からない。。。
ということで原点に返ってみて、そもそもの仕組みを考えてみました。

【Apple Watchで表示している心拍数は、Apple純正の「ヘルスケア」経由で取得しているもの。】
ということで純正アプリはどんな感じか見てみます。iPhone側のヘルスケアを見てもやはり分からない。ということでApple Watch側の純正アプリを確認しました。

ん??まさか

計測中で結構時間がかかっている。

ちょっと経ってから表示されました。

もう一度動作確認してみる

だいたい、このあたりで予想はついていると思いますが、、、、

こうなって
こうなって
表示された

結論:バグじゃなかった

バグじゃありませんでした。表示されている値も純正アプリの値とぴったり同じでした。

実案件ではおいおい、なにやってるんだってことになりかねないですが、技術ブログで良かったです。

でも、落ち着いて一つ一つ確認していくのは大事だなと改めて感じた次第です。

次回予告

心拍数を取ってくる、というところまではこのぐらいにして、次回はApple Watchで他にできることをやってみたいと思います。

予定ではiPhoneとの連携、のようなことをやってみる予定です。それではまた!!