iOS App Rejected from the App Store for Missing Info.plist Key

Environment

Service Code (AppBuilder)
Mobile development type Hybrid (Apache Cordova app)
Mobile OS iOS
Apache Cordova framework version 6.4.0

Description

You have set the target Apache Cordova version of your app to 6.4.0. After publishing the app is rejected and/or is crashing due to missing Info.plist key, for example, NSPhotoLibraryUsageDescription.

Your app is using Apache Cordova plugins that require usage description text for iOS API access (eg. Camera, Capture, QR Scanner, Contacts, etc.)

Error Message

The app may be rejected with the message - 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.

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

In the error messages above you may receive the name of another key like NSContactsUsageDescription, NSCameraUsageDescription, NSCalendarsUsageDescription, NSBluetoothPeripheralUsageDescription and other, depending of the resources your app needs to use.

Cause

The required usage description text is not added to the Info.plist file (even though you may have added it manually by editing the file).

Solution

You have to add the usage description text by setting a plugin variable for each plugin that requires access to the given device API. See the Notes section if a plugin doesn't have a dedicated variable.

  1. Locate the plugins your app is using and that may require access to the camera, photo library, contacts, etc.
  2. Set the dedicated plugin variable as explained here
  3. Remove any manually added description strings for the same purpose (if any) from the Info.plist file
  4. Re-build the app
  5. Publish again the app

Notes

In case a plugin which you are using in your app does not have a dedicated variable (and you are receiving the error), consider adding the key value pair to the info.plist manually as explained here.

Example:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <!-- Other keys omitted for brevity -->

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>My awesome app is using Bluetooth technology to ...</string>

    <!-- Other keys omitted for brevity -->
  </dict>
</plist>

See Also

Start a free trial Request a demo
Contact us: +1-888-365-2779
sales@telerik.com
Copyright © 2016-2017, Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.