Question

I have never changed my build settings and I submitted my app to the app store a couple weeks ago with no problem.

I tried submitting an update today and I got the error

This bundle is invalid. An unknown device capability value is supplied in the UIRequiredDeviceCapabilities key of the Info.plist. Make certain that the value for UIRequiredDeviceCapabilities is an array or a dictoinary, containing valid values as described in the Information Property List Key Reference.

Here is a snippet of my build settings. If I comment out the microphone line, then everything works fine.

iphone = {
    plist = {
        CFBundleVersion = "20130423",
        CFBundleShortVersionString = "3.1.1",
        CFBundleDisplayName = "App Name",
        CFBundleIdentifier = "com.example.mypackagename",
        UIRequiredDeviceCapabilities = "microphone",   -- <<---- this line is the problem
        UIStatusBarHidden = true,
        UIPrerenderedIcon = false, -- set to false for "shine" overlay
        --UIApplicationExitsOnSuspend = true, -- uncomment to quit app on suspend
        CFBundleIconFile = "Icon.png",
        CFBundleIconFiles = {
           "Icon.png",
           "Icon@2x.png",
           "Icon-72.png"
         }
    }
},
Was it helpful?

Solution

Just change:

UIRequiredDeviceCapabilities = "microphone"

to:

UIRequiredDeviceCapabilities = {"microphone"}

Note:

UIRequiredDeviceCapabilities expects it's value as an array or dictionary. You are passing it as a string, that's why the issue is happening.


Reference:

UIRequiredDeviceCapabilities

UIRequiredDeviceCapabilities (Array or Dictionary - iOS) lets iTunes and the App Store know which device-related features an app requires in order to run. iTunes and the mobile App Store use this list to prevent customers from installing apps on a device that does not support the listed capabilities.

If you use an array, the presence of a given key indicates the corresponding feature is required. If you use a dictionary, you must specify a Boolean value for each key. If the value of this key is true, the feature is required. If the value of the key is false, the feature must not be present on the device. In both cases, omitting a key indicates that the feature is not required but that the app is able to run if the feature is present.

Check InfoPlistKeyReference for more details.

OTHER TIPS

use this format

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>microphone</string>
</array>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top