PhoneGap missing plist.key

When I try and load upload my iTunes app installer to iTunes I relieve this error:

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

What can I add to my config file below to let this work:

<preference name="permissions" value="none" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="false" />
    <preference name="webviewbounce" value="false" />
    <preference name="disallowOverscroll" value="true" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="true" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="10" />
    <preference name="android-targetSdkVersion" value="19" />
    <preference name="android-installLocation" value="auto" />
    <gap:plugin name="org.apache.cordova.battery-status" source="npm" />
    <gap:plugin name="org.apache.cordova.camera" source="npm"/>    
    <gap:plugin name="org.apache.cordova.media-capture" source="npm"/>
    <gap:plugin name="org.apache.cordova.console" source="npm" />
    <gap:plugin name="org.apache.cordova.contacts" source="npm"/>

    <gap:plugin name="org.apache.cordova.device-motion" source="npm"/>
    <gap:plugin name="org.apache.cordova.device-orientation" source="npm"/>
    <gap:plugin name="org.apache.cordova.dialogs" source="npm"/>
    <gap:plugin name="org.apache.cordova.file" source="npm"/>
    <gap:plugin name="org.apache.cordova.file-transfer" source="npm"/>

    <gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>
    <gap:plugin name="org.apache.cordova.media" source="npm"/>
    <gap:plugin name="org.apache.cordova.network-information" source="npm"/>
    <gap:plugin name="org.apache.cordova.splashscreen" source="npm"/>
    <gap:plugin name="org.apache.cordova.vibration" source="npm"/>
    <icon src="icon.png" />

    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-ldpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-mdpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-hdpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-xhdpi" />
    <gap:splash src="splash.png" gap:platform="blackberry" />
    <gap:splash src="splash.png" gap:platform="ios" width="320" height="480" />
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="960" />
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="1136" />
    <gap:splash src="splash.png" gap:platform="ios" width="768" height="1024" />
    <gap:splash src="splash.png" gap:platform="ios" width="1024" height="768" />
    <gap:splash src="splash.png" gap:platform="winphone" />
    <access origin="*" />

    <gap:plugin name=" phonegap-plugin-barcodescanner" source="npm" />
    <gap:plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" source="npm" />
    <gap:plugin name="cordova-plugin-directions" source="npm" />


    <!-- iPhone / iPod Touch  - lower 4s -->
    <icon src="icon-57.png" gap:platform="ios" width="57" height="57" />
    <icon src="icon.png" gap:platform="ios" width="114" height="114" />
    <icon src="icon-72.png" gap:platform="ios" width="72" height="72" />
    <icon src="152.png" gap:platform="ios" width="152" height="152" />
    <icon src="icon-120.png" gap:platform="ios" width="120" height="120" />
    <icon src="76.png" gap:platform="ios" width="76" height="76" />
    <icon src="icon-40.png" gap:platform="ios" width="40" height="40" />

    <!-- iPhone / iPod Touch - 5-5s -->
    <icon src="icon.png" gap:platform="ios" width="60" height="60" />
    <icon src="icon.png" gap:platform="ios" width="120" height="120" />
    <!-- iPhone6-6+ -->
    <icon src="icon.png" gap:platform="ios" width="180" height="180" />

    <!-- Settings Icon -->
    <icon src="icon-29.png" gap:platform="ios" width="29" height="29" />
    <icon src="icon.png" gap:platform="ios" width="58" height="58" />

    <!-- Spotlight Icon -->
    <icon src="icon.png" gap:platform="ios" width="40" height="40" />
    <icon src="icon.png" gap:platform="ios" width="80" height="80" />

    <plugin name="cordova-plugin-whitelist" version="1" source="npm"/>

    <gap:plugin name="cordova-plugin-geolocation" source="npm"/>

    <feature name="http://api.phonegap.com/1.0/battery" />
    <feature name="http://api.phonegap.com/1.0/camera" />
    <feature name="http://api.phonegap.com/1.0/network" />
    <feature name="http://api.phonegap.com/1.0/notification" />

    <gap:plugin name="cordova-plugin-x-socialsharing" source="npm" />

Another edit: Most plugins removed the variables for usage description, so now the way of setting them is using edit-config tag in the config.xml like this.

<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="overwrite">
    <string>We are using the Camera for something...</string>
</edit-config>

But not all plugins have been updated yet, so better read the plugin's README.md before. On the core plugins it's in a section called iOS Quirks.

It also needs the cli 7.0.1 or newer, set it in the config.xml like this:

<preference name="phonegap-version" value="cli-8.0.0" />

EDIT:

My old answer no longer works if you have <preference name='phonegap-version' value='cli-7.0.1' /> (or if you don't have any phonegap-version as it will use it as default)

To set the usage descriptions use the params on the plugin

<plugin name="cordova-plugin-camera">
   <param name="CAMERA_USAGE_DESCRIPTION" value="We are using the Camera for something..." />
   <param name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="We are using the Photo Library for something..." />
</plugin>

Beware that if you have some plugins with the same usage descriptions and you don't fill them with param tags they might be replaced with the default empty string

You can force to use the old builder with this tag, but it's not recommended, the new builder is better <preference name='pgb-builder-version' value='1' />

OLD ANSWER:

You can write in the info.plist like this:

<gap:config-file platform="ios" parent="NSCameraUsageDescription" overwrite="true">
   <string>We are using the Camera for something...</string>
</gap:config-file>

The overwrite="true" is important because latest version of the camera plugin is already writing empty values.

I have tested it on a sample app and it's working https://github.com/jcesarmobile/phonegap-template-hello-world/blob/454e852955e66470890cba636450abd422f50598/config.xml#L153-L155

Error with Phonegap Build CLI-7.0.1 Missing Info.plist key , Below the errors are my config-file parameters ERROR ITMS-90683 - "Missing Info.plist key. This app attempts to access privacy-sensitive data  Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.


Please open your project in xcode and go to your .plist file in resources folder,

Then at end of in you .plist file click on "+" and add search for "Privacy - Photo Library Usage Description" and add it's value in beside column.

same please do for "NSCameraUsageDescription" again click on "+" and search for "Privacy - Camera Usage Description" and again give some usage description in beside column.

it will solve you issue.

For more info please visit following:

1) Stackoverflow question related to your question 2) Official apple doc for all required keys to be added

Missing info.plist + phonegap build, Hello, I am updating my app to itunes but I receive this error message: Missing Info.plist key - This app attempts to access privacy-sensitive data  Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.


Before you access privacy-sensitive data like Camera, Contacts, and so on, you must ask for the authorization, your app will crash when you access them.Then Xcode will log like:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

How to deal with this? As apple say:

You must statically declare your app’s intended use of protected data classes by including the appropriate purpose string keys in your Info.plist file.

In your case you may have to add the following in your info.plist,

<!-- 🖼 Photo Library --> <key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) photo use</string>

Also suggest you to look at this link for more detailed info on this. Hope it helps.

You can also check out this plugin which helps in manipulating *-info.plist

Missing Info.plist key - Adobe Support Community, When I upload my built app to iTunes, I receive this error: Missing Info.plist key - This app attempts to access privacy-sensitive data without a  Been running into an issue, and have seen other users running into the same issue for the last month, of going to upload a .ipa file to itunes connect via the application loader and getting this er


In ios you need to install camera-plugin with barcodescanner-plugin after you have to put below line in config.xml for overwriting plist file.

<gap:plugin name="phonegap-plugin-barcodescanner" source="npm" />

<preference name="android-build-tool" value="gradle" />

<config-file platform="ios" target="*-Info.plist" parent="NSCameraUsageDescription">
    <string>It is used for scaning QR code.</string>
</config-file>

<edit-config platform="ios" target="*-Info.plist" parent="NSCameraUsageDescription" mode="merge">
    <string>It is used for scaning QR code.</string>
</edit-config>

<config-file platform="ios" target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
    <string>It is used for scanning QR code</string>
</config-file>

<edit-config platform="ios" target="*-Info.plist" parent="NSPhotoLibraryUsageDescription" mode="merge">
    <string>It is used for scanning QR code</string>
</edit-config>

Missing Info.plist key, Learn how to solve missing info.plist key when publishing your cordova app in Apple connect. I have successfully implemented the native ad code for Android using phonegap build. But for ios I am getting my binary rejected due to this missing plist key. Help please, on how to declare it on


None of the answers here worked for me exactly so I figure I should add my two cents as to how I got this working.

First, I tried the accepted answer (the one written by jcesarmobile). When i tried this and ran: phonegap build ios everytime the configuration was deleted from my config.xml file. So next I tried the solution indicated here:

http://geeklearning.io/how-to-add-specific-configuration-parameters-to-ios-p-list-and-android-manifest/

This did not work at first, There were a number of changes that had to be made, all of which I got from the github repo comments on the file. I suggest you run the build, copy the error message and search in the comments and do what they say. Once I got it to build again, It still did not work upon uploading the itunes connect.

In the end I had to open up the Info.plist file and manually put in the following

<key>NSCameraUsageDescription</key>
<string>We are using the Camera to (blah blah blah, your explanation)</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We are using the Photo Library to (your reason)</string>
<key>NSMainNibFile</key>

Even though the hook did not do exactly as it claimed I still think it was important because before I did this everything was getting deleted, and now it stays put.

I hope this helps someone out.

Using config.xml to set iOS 10 Privacy Settings in PhoneGap Build , Missing Info.plist key – This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an  Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data. Once these issues have been corrected, you can then redeliver the corrected binary.


Missing Purpose String in Info.plist, I am using PhoneGap build in order to get ipas. Missing Purpose String in Info.​plist - Your app's code references one or more APIs that a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining  PhoneGap Build aims to take away the pains of configuring SDKs and compiling native applications so you can focus on writing great code. As part of this, we obfuscate management of the platform configuration files – namely your Android Manifest and your iOS Property List.


Cloud build app being rejected at Apple because of Missing Info , rejected because of Missing Info.plist key NSBluetoothPeripheralUsageDescription. I am using https://github.com/evothings​/cordova-eddy… Другое редактирование: Большинство плагинов удалили переменные для описания использования, поэтому теперь способ их установки - использовать тэг edit-config в файле config.xml, как это.


Missing info.plist key - build rejected - ionic-v3, Missing Info.plist key - This app attempts to access privacy-sensitive data without a cordova plugin add cordova-plugin-camera --variable  Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.