Corredor

ウェブ、プログラミングの勉強メモ。

iOS10 以降で動画撮影時の許可が上手く得られなかった時の対処法

絶対に挫折しないiPhoneアプリ開発「超」入門 増補第6版【Swift 4 & iOS 11】完全対応 (Informatics&IDEA)

絶対に挫折しないiPhoneアプリ開発「超」入門 増補第6版【Swift 4 & iOS 11】完全対応 (Informatics&IDEA)

プラグインを利用して動画撮影機能を設けた Cordova アプリを、iOS10 以降の端末で動かそうとした。しかし、動画撮影開始時に上手くユーザに許可が得られず、強制終了してしまった。

iOS では、アプリからカメラや写真などにアクセスする際にユーザに許可を求める。この許可を得るためのキーとして、NS***UsageDescription (*** 部分は Camera とか) というモノを Info.plist に指定する必要がある。

Cordova アプリの場合、XCode 上でこの設定をしなくて済むように、対象のプラグインが許可を求めるための設定を予め持っていて、config.xmlvariable 要素を追記してくれる。


ここまでのことは知っていて、以前まではちゃんと動いていたのだが、iOS をバージョンアップしたら動かなくなった。

色々調べてみると、動画撮影時は以下の3つの許可を求めないといけないようだった。

  • NSCameraUsageDescription … CAMERA_USAGE_DESCRIPTION
  • NSMicrophoneUsageDescription … MICROPHONE_USAGE_DESCRIPTION
  • NSPhotoLibraryUsageDescription … PHOTOLIBRARY_USAGE_DESCRIPTION

手前に書いたものが Info.plist に記載されるキーで、後ろに書いたものが config.xml で指定する文言。

プラグインによってはこの3つの許可を得る指定になっていないものがあり、Info.plist に正しく許可設定が記せていない場合があるようだった。

そんな時は XCode 上で上述のキーを追加し、適当な説明文を付与してあげれば OK。Cordova プラグインが該当する機能にアクセスしようとした時に正しく許可が得られるようになる。