Xamarin.iOS HealthKit と連携するときの権限チェックは書き込み用


「ヘルスケア」アプリと連携したい

iPhone アプリ「ヘルスケア」は HealthKit store というDBへデータを読み書きしています。

参考:[iOS 8] ヘルスケア アプリとHealthKit Framworkの濃密な関係、 Appleドキュメント「HealthKit」

自分で開発中のアプリと iPhone アプリ「ヘルスケア」を連携する際には、このDBへのアクセス権限付与が必要です。

保存および読み取るための自動化の要求 と 書き込み権限

結論から言うと、読み込むだけなら

  • HKHealthStore.RequestAuthorizationToShare()
    または
  • HKHealthStore.RequestAuthorizationToShareAsync()
のユーザーデータを保存および読み取るための自動化の許可要求のみがあればよく、
  • HKHealthStore.GetAuthorizationStatus()
で取得できる Health データを読み書きするためのアプリケーションのアクセス許可ステータスは確認する必要がないようです。

上記結論に至るまでにハマったのですが、

Xamarin.iOSのドキュメントには

To validate access to a particular data type, developers must use the HKHealthStore.GetAuthorizationStatus method:

Google翻訳より

「特定のデータ型へのアクセスを検証するには、開発者はHKHealthStore.GetAuthorizationStatusメソッドを使用する必要があります。」

とあるので、読み込みしかしない時にも権限が必要なものと誤解してしまいました。

参考サイト https://stackoverflow.com/questions/39233297/healthkit-requestauthorizationtosharereadcompletion-always-succeeds によると、このメソッドで取得できる権限状態は、HealthKit store DB への書き込みの権限専用だそうで、実際に試してみると、読み込み時は権限がなければ空が返却されるようです。

実装例の一部

※歩数の読み込みのみです

画面での状態の確認方法

本題と若干それますが、 HealthKit store への書き込み時の許可の有無は「ヘルスケア」アプリの「データソースとアクセス」画面で確認・操作します。

※画面の表示の仕方 → Appleドキュメント「データソースとアクセス」の「データソースを表示する」

ヘルスケアの「データソースとアクセス」画面

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • キュア子の紹介

人気記事ランキング