Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova Info.plist NSCameraUsageDescription key is missing

After recent changes Apple requires specific keys if your app attempts to access privacy-sensitive data. So I added NSCameraUsageDescription key in my config.xml like this:

<platform name="ios">     <config-file parent="NSCameraUsageDescription" target="*-Info.plist">         <string>We are using a camera to </string>     </config-file> </platform> 

Then

cordova build ios --release --device 

produces the ipa which apparently doesn't have the right info in info.plist. It feels like I'm missing something.

Question 1: What do I need to put into config.xml to solve NSCameraUsageDescription issue? Question 2: Is it possible to use localization for this string?

Thank you!

like image 431
Pavel Kovalev Avatar asked Sep 19 '16 06:09

Pavel Kovalev


2 Answers

NEW ANSWER:

Since Cordova CLI 6.5.0 you can write in the info.plist directly by using the edit-config tag in the config.xml like this:

    <string>your usage message</string> </edit-config> 

But make sure you are using latest version of the plugins or values might be overwritten by the plugin variables.

For localizations you can use the resource-file tag and InfoPlist.strings files like in this plugin (but you don't need the plugin, resource-file tag is supported from the config.xml)

https://github.com/MBuchalik/cordova-plugin-ios-permissions


OLD ANSWER:

You can't write on the info.plist from the config.xml using the config-file tag yet (it's being worked on)

Latest version of the camera plugin allows you to add the NSCameraUsageDescription when you install the plugin

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

Right now it's not possible to localize this string

like image 58
jcesarmobile Avatar answered Oct 20 '22 00:10

jcesarmobile


Here are results of my own research:

    • Yes, you can modify info.plist from the config.xml file using the config-file tag, but you have to use a plugin for that (cordova custom config) and follow the instructions religiously.
    • However, probably a better option is to use plugin.xml to do the same thing. More about it you can read here (modifying info plist from plugin.xml)
    • Another option as @jcesarmobile mentioned - current camera plugin may support it like cordova plugin camera (this solution is specific to the plugin)
    • Yes, it is possible to localize a string inside the info.plist file but it requires to use xcode for that. I'm not sure how to localize a string inside the info.plist file using Cordova config.xml or plugin.xml

Please, correct me if I wrong. More info on the localization directly from config.xml is appreciated.

Personally, I don't like the idea to use a custom plugin to modify an info.plist file. It feels like with every new plugin I use make my app more and more fragile. :)

like image 41
Pavel Kovalev Avatar answered Oct 20 '22 01:10

Pavel Kovalev