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/