クラウド導入・監視運用からシステム開発まで、WestWindに全ておまかせください

ブログ

ホーム > ブログ

2018年05月09日

【ionic】iosでcordova-plugin-cameraがクラッシュする・・・

執筆者:椿宏太郎

久しくぶりにiPhoneでカメラ周りを触って見たら、cordova-plugin-cameraでアプリがクラッシュしてしまっていました。。。

利用しているiOSは11.3.1で、他のアプリの設定画面を見るとカメラに対する許諾項目が有るのに、作成したアプリにはその項目が存在していません。

そこで調べてみると、どうやらiOSのNSCameraUsageDescriptionキーに、利用文言を設定する必要があるらしいです


実装を調べたところ、cordova pluginを追加する際に設定すること出来るとの記述を発見!

ionic cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="your usage message"

config.xmlに下記の様に追加されるます。
<pluginname="cordova-plugin-camera"spec="^4.0.3">
         <variablename="CAMERA_USAGE_DESCRIPTION"value="your usage message"/>
         <variablename="PHOTOLIBRARY_USAGE_DESCRIPTION"value="your usage message"/>
</plugin>

しかし、prepareを実行してiOSの設定ファイルである、下記のファイルを見てみるとNSCameraUsageDescriptionの記述が見つからない・・・
  >platforms/ios/プロジェクト名/プロジェクト名-Info.plist


そこで、もう少し調べてみると、どうもCordova CLI 6.5.0から設定方法が違うよで、config.xmlに以下の記述をiOS platformタグの中に記述します。
<platform name="ios">
  <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
     <string>your usage message※パーミッション確認画面に表示されます</string>
  </edit-config>

再度、prepareを実行してファイルを確認すると無事に設定がされているのが確認出来ました!
<key>NSCameraUsageDescription</key>
<string>プロフィール画像の設定にカメラを利用します。</string>

実機でも無事に確認動作を確認出来ました。
色々見ていると、NSPhotoLibraryUsageDescriptionとフォトライブラリにもパーミッションを与えるとの記述が有りましたが、今回は特に問題がありませんでしたのでこのキーに対する設定は行いませんでした。将来的には必要となるのかもしれませんが・・・


カテゴリ