健康記録アプリへHealthKitを組み込むとき、権限取得を成功させることより、許可しない人が不利益なく使えることを先に設計しました。ここではメノブリッジで採った境界をまとめます。

権限ダイアログの前に、アプリ内で説明する

Appleの権限シートを出す前に、用途と拒否後の挙動を説明します。

  • 読み込む対象は睡眠分析だけ
  • 読み取り専用である
  • 本人がボタンを押したときだけ許可を求める
  • 許可しなくても基本機能が使える
  • 読み込んだデータをアプリ側から削除できる

未選択、拒否、許可をUIで同一視しない

権限状態が不明なときに「許可されていません」と表示すると、まだ選んでいない人まで拒否したように見えます。HealthKitの読み取り権限についてアプリが常に断定的な状態を得られるとは限りません。

初回説明、権限要求、データなし、読み込み完了、エラーを別状態として扱い、「拒否した」と推測で断定しない文言にします。

HealthKitがなくても成立するコアフローを残す

睡眠の自動読み込みは補助機能です。許可しない、対象データがない、利用できない場合でも、体調の手入力、期間の振り返り、受診前の質問整理、仕事相談メモ、データの書き出しと削除は利用できます。

任意と書くだけでなく、拒否後の製品価値を残すことが重要です。

インポート済みデータだけを削除できるようにする

HealthKitから読み込んだデータだけを削除する経路を用意し、手入力記録と区別します。許可設定そのものはApple側で管理されるため、アプリ内の削除とシステム権限の変更も同一視しません。

確認する8つの状態

最終的には実機のApple権限シートと実データでも確認します。

  1. 初回・未選択
  2. 説明画面から権限要求へ進む
  3. 許可しない
  4. 許可済みだが対象データなし
  5. 読み込み成功
  6. インポート済みデータだけを削除
  7. システム側で権限を変更した後に戻る
  8. HealthKitを利用できない環境