アプリが個人情報などにアクセスする場合はユーザーに許可を求める必要がある。 写真、位置情報、アドレス帳、通知などだ。 これをやらないとアプリストアの審査で許可されないからだ。
ただ実装しなくても動作はできるように見える。裏を返せばアプリストアで公開しなければ勝手に利用できるできるということなのだろうか?
2種類のAPI
ExpoにはaskAsyncとgetAsyncの2種類がある。 askAsyncは許可を求めるダイアログを出せる。ただ一回選ぶと次回からは出ない仕様。 getAsyncは許可の状態をチェックするだけ。選択ダイアログは出さない。 ただaskAsyncでも状態チェックはできるようなので、getAsyncは使わなくてもいいような気もする。
getPermissionAsync = async () => { if (Constants.platform.ios) { const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL); // const { status } = await Permissions.getAsync(Permissions.CAMERA_ROLL); if (status !== 'granted') { alert('写真にアクセスする権限がありません。'); throw 'permission denied'; } } };