権限
利用者のデータや機器にアクセスするには、明示的な許可が要る。
対象#
| 対象 | 説明文のキー |
|---|---|
| 位置情報 | NSLocationWhenInUseUsageDescription |
| カメラ | NSCameraUsageDescription |
| マイク | NSMicrophoneUsageDescription |
| 写真 | NSPhotoLibraryUsageDescription |
| 連絡先、カレンダー | 各種 |
| トラッキング | NSUserTrackingUsageDescription |
| 通知 | 実行時に要求する |
Info.plist に説明文が無いまま使うと、
その場でクラッシュする。
これは意図的な設計で、
説明なしのアクセスを技術的に不可能にしている。
要求の作法#
悪い: 起動直後にすべての権限をまとめて要求する
良い: その機能を使おうとした瞬間に、文脈の中で要求する利用者は文脈が無いと拒否する。 一度拒否されると、アプリからは再要求できない (設定アプリへ誘導するしかない)。
必要なら、システムのダイアログの前に 自前の画面で理由を説明する(priming)。
段階的な許可#
近年は「全部か無か」ではなくなっている。
| 対象 | 段階 |
|---|---|
| 位置 | 使用中のみ / 常に、正確 / おおよそ |
| 写真 | 選択した写真のみ / 全体 |
| 連絡先 | 限定的 / 全体 |
最小限の権限で動く設計にしておくと、 拒否されても機能が壊れない。
拒否されたときの設計#
権限が無くてもアプリが使えなくならないようにする。 「位置情報を許可しないと何もできない」設計は、 審査でも問題になりうる。
参考文献#
- Apple. Requesting access to protected resources. https://developer.apple.com/documentation/uikit/protecting-the-user-s-privacy
- Apple. Human Interface Guidelines. https://developer.apple.com/design/human-interface-guidelines
- Apple. App Review Guidelines. https://developer.apple.com/app-store/review/guidelines/