iOS10 以降で動画撮影時の許可が上手く得られなかった時の対処法
プラグインを利用して動画撮影機能を設けた Cordova アプリを、iOS10 以降の端末で動かそうとした。しかし、動画撮影開始時に上手くユーザに許可が得られず、強制終了してしまった。
iOS では、アプリからカメラや写真などにアクセスする際にユーザに許可を求める。この許可を得るためのキーとして、NS***UsageDescription
(***
部分は Camera
とか) というモノを Info.plist に指定する必要がある。
- 参考 : iOS 10 各種ユーザーデータへアクセスする目的を記述することが必須になるようです | Developers.IO
- 参考 : iOS10ではカメラアクセスなどの目的を明示しないと強制終了する - Qiita
Cordova アプリの場合、XCode 上でこの設定をしなくて済むように、対象のプラグインが許可を求めるための設定を予め持っていて、config.xml
に variable
要素を追記してくれる。
ここまでのことは知っていて、以前まではちゃんと動いていたのだが、iOS をバージョンアップしたら動かなくなった。
色々調べてみると、動画撮影時は以下の3つの許可を求めないといけないようだった。
- NSCameraUsageDescription …
CAMERA_USAGE_DESCRIPTION
- NSMicrophoneUsageDescription …
MICROPHONE_USAGE_DESCRIPTION
- NSPhotoLibraryUsageDescription …
PHOTOLIBRARY_USAGE_DESCRIPTION
手前に書いたものが Info.plist に記載されるキーで、後ろに書いたものが config.xml
で指定する文言。
プラグインによってはこの3つの許可を得る指定になっていないものがあり、Info.plist に正しく許可設定が記せていない場合があるようだった。
そんな時は XCode 上で上述のキーを追加し、適当な説明文を付与してあげれば OK。Cordova プラグインが該当する機能にアクセスしようとした時に正しく許可が得られるようになる。