I´m using visual studio for developing cordova applications.
If I upload my App to the Store with Xcode8, I get the following error mail.
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.
Based on an other stackoverflow-question I´ve added the plugin https://github.com/leecrossley/cordova-plugin-transport-security and modified the plugin.xml:
<platform name="ios">
<config-file target="*-Info.plist" parent="NSAppTransportSecurity">
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app does not require access to the microphone.</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>
</dict>
</config-file>
</platform>
In my config.xml:
<plugin name="cordova-plugin-transport-security" version="0.1.2" src="C:\Users\xxx\cordova-plugin-transport-security-master\cordova-plugin-transport-security-master" />
After that i build the app for iOS and uploaded it via xcode.
But the error is still there.
With that change you are writing the NSPhotoLibraryUsageDescription and the other UsageDescriptions inside NSAppTransportSecurity, it should be on the root.
If you use latest version of cordova-plugin-media-capture, it already have the needed values
<preference name="CAMERA_USAGE_DESCRIPTION" default=" " />
<config-file target="*-Info.plist" parent="NSCameraUsageDescription">
<string>$CAMERA_USAGE_DESCRIPTION</string>
</config-file>
<preference name="MICROPHONE_USAGE_DESCRIPTION" default=" " />
<config-file target="*-Info.plist" parent="NSMicrophoneUsageDescription">
<string>$MICROPHONE_USAGE_DESCRIPTION</string>
</config-file>
<preference name="PHOTOLIBRARY_USAGE_DESCRIPTION" default=" " />
<config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
<string>$PHOTOLIBRARY_USAGE_DESCRIPTION</string>
</config-file>
The value is $CAMERA_USAGE_DESCRIPTION because it's picked from a variable whey you install the plugin from the CLI. As you use Visual Studio, I think you can set the value using a variable tag in the config.xml.
The variable tags should be inside the plugin that will use them:
<plugin name="cordova-plugin-media-capture" spec="~1.4.1">
<variable name="CAMERA_USAGE_DESCRIPTION" value="your camera usage message" />
<variable name="MICROPHONE_USAGE_DESCRIPTION" value="your microphone usage message" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="your photolibrary usage message" />
</plugin>
If that doesn't work, you can continue using your modified plugin, but add each UsageDescription as a separate config-file tag as in the previous code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With