🩺

【iOS】HealthKitを用いたデータ保存・取得前のセットアップ手順

2024/05/24に公開

はじめに

HealthKitを用いてヘルスケアデータを保存・取得の実装をする前に、セットアップが必要になります。今回はセットアップに関しての記事を作成します。

HealthKitとは

HealthKitとは、Appleが開発したiOSデバイス向けのフレームワークで、ヘルスケアとフィットネスのデータを統合して管理するためのプラットフォームです。HealthKitを使用することで、ユーザーは様々な健康データを複数のデバイスで一元管理できます。例えば、身長・体重・歩幅・睡眠etcの身体にまつわるデータを管理できます。

HeathKit概要

HealthKitは、ユーザのヘルスデータを1つのリポジトリにまとめる枠組みです。ヘルスデータの読み書きができ、データはすべて安全に格納され、デバイス間で同期されます。

HealthKitのセットアップ

HealthKitを用いるためには必要な工程が3ステップあります。

  1. プロジェクト内でHealthKit機能を有効にする
  2. プラットフォームがHealthKitに対応しているか確認をする
  3. HKHealthStoreを作成する
  4. アクセス権限をリクエストする

1. プロジェクト内でHealthKit機能を有効にする

まず最初にプロジェクトを立ち上げ、プロジェクト内にHealthkitを導入するために以下の手順を行います。

  1. Targetのプロジェクト名を選択
  2. Capabilityを選択

capabilityを選択

  1. HealthKitを追加

HealthKitを選択

2. プラットフォームがHealthKitに対応しているか確認をする

1つのアプリを複数のデバイスで起動させることがあります。ですが、その際にアプリを起動したデバイスがHealthKitに対応していない場合があるため、対応しているか確認をする必要があります。

https://github.com/muranakar/HealthKitSample/blob/main/HealthKitSample/Utilities/HealthData.swift#L53-L55

3. HKHealthStoreを作成する

HKHealthStoreがヘルスケアデータに接続する入口となる部分です。HKHealthStoreを用いることによって、以下の項目を可能にします。

  • ユーザーのヘルスデータへのアクセス許可を求める
  • クエリを使ってデータの読み書きができる
  • 一度インスタンス生成すれば、アプリ内でHKHealthStoreを使用できる

HealthKitを用いる上で、HealthKitで用いられているデータ型・関係性を理解する必要があります。このあたりを理解されていない方は、以下リンクを一読いただきたいです。

https://zenn.dev/muranaka/articles/4dd3fbda1fecb2

4.アクセス権限をリクエストする

ヘルスデータにアクセスするにはユーザー認証が必要になります。ユーザー認証には必要なヘルスケアデータの種類を指定して、アクセス権限を要求します。アクセス権限は、「読み込み」と「書き込み」に分かれており、権限の許可が必要になります。アプリを使用する上で、権限の許可が必要であることを説明しなければなりません。アクセス許可を求めると、HealthKitの権限の設定するViewが表示されます。

info.plistでKeyを2つ定義する必要があります。

  • Privacy - Health Update Usage Description
    NSHealthUpdateUsageDescription

  • Privacy - Health Share Usage Description
    NSHealthShareUsageDescription

下画像の上赤枠が書き込み権限について、下赤枠が読み込み権限について記載が反映されます。

権限シート画像

権限情報の管理はHealthKit内に保存されており、ユーザ-はアプリケーション外で権限情報を変更できます。

取得したいデータタイプを指定して、HealthKitStoreにアクセス権限を要求します。アクセス権限を要求するには、requestAuthorization(toShare:read:)を呼び出します。

https://github.com/muranakar/HealthKitSample/blob/main/HealthKitSample/Utilities/HealthData.swift#L46

SwiftUIの場合は、healthDataAccessRequest(store:shareTypes:readTypes:trigger:completion:)を用いることができます。

https://github.com/muranakar/HealthKitSample/blob/main/HealthKitSample/View/StepCountSaveView.swift#L50-L64

以上により、データ保存・取得を実施するためのセットアップは完了です。

最後に

上記の手続きなしではHealthKitを用いたデータの保存・取得を実施できないため、今回別記事として書き記しました。

間違い・気になる部分がありましたら、コメントいただけると大変うれしいです。
良かったと思ったら、記事へのいいね・Xのフォローよろしくお願いいたします。

https://sites.google.com/view/muranakar

個人でアプリを作成しています。良かったら覗いてみてください。

Discussion