ExpoのPermissions周りを調べてみた
はじめに
iOS アプリでは、一部のプライバシーに関わる機能を利用する際にその目的を説明する文言を設定する必要があります。 設定された文言は、ユーザーに権限を確認するためのダイアログに表示されます。
自分が Apple に申請した際に、リジェクトされた際に 少し迷ったのでこちらにまとめておこうと思います。
結論
Expo において、iOS や Android 固有の設定などは app.json
に記載するようです。
今回、位置情報を利用したアプリだと仮定すると、以下のように設定します。
"ios": {
・・・
"infoPlist": {
"NSLocationAlwaysAndWhenInUseUsageDescription": "〇〇のために利用します",
"NSLocationAlwaysUsageDescription": "〇〇のために利用します",
"NSLocationWhenInUseUsageDescription": "〇〇のために利用します"
},
},
ios という Key に対して、infoPlist 以下に記述します。
上記のうちどれを使うかは、アプリによって違いますが それぞれの違いは以下の通りです。
- NSLocationWhenInUseUsageDescription
- アプリ起動時のみ利用する場合
- NSLocationAlwaysAndWhenInUseUsageDescription
- バックグラウンドでも実行する場合
- NSLocationAlwaysUsageDescription
- バックグラウンドでも実行する場合
- iOS11 以下の端末に許可を求めるときに利用するようです
- 非推奨となっているので、いずれなくなる
確認方法が少々難有りで、Expo Client 上では反映されないようなので一度、スタンドアロンアプリとしてビルドしてみないと検証ができないようです。(自分はここで 2 時間ほど詰まりました・・・。)
そのため、確認する場合は一度ビルドをしてして xcode 経由でアプリをインストールするか、 TestFlight 経由で確認する他ないようです。
その他app.json
についての設定はいかにまとまっているので、興味があればぜひ。
https://docs.expo.io/versions/latest/config/app/