I am trying to open up the user's camera, but whenever I try to open the camera I get this error, "The app has crashed because it attempted 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." I have already added Privacy - Camera Usage Description along with a value such as "I need to use your camera" to the info.plist file, but I am still getting this error.
Here is my source code for info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Needed to receive your current location.</string>
<key>NSCameraUsageDescription</key>
<string>Need to use camera for AR</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
***I have found the solution. I had to go into "info" and add the privacy key in custom IOS Target Properties
Weirdly after iOS 10 you have to define access to all hardware. Most likely, you will be missing the "Privacy-Microphone Usage Description". switch to the "Organizer" and look at the crash reports on the device and add all the privacy errors listed there.
Related
I have specified the text I needed in the info.plist file in the NSCameraUsageDescription and NSPhotoLibraryUsageDescription fields, but nothing has changed.
Always the same system text "this app requires access to the camera" and "this app requires access to the photo library". I have already tried to find it in code. Did not find. I specified in the files info.plist add my NSCameraUsageDescription and NSPhotoLibraryUsageDescription keys , in the all libraries what I use. All the same nothing changes.
info.plist file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Mona</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>NSCameraUsageDescription</key>
<string>The program wants to access the camera so you can use your photos and camera in this photo editor.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>The program wants to access the photo gallery so you can use your photos and camera in this photo editor.</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
Alert image
Please help me. Tell me how to change the description of these queries.
The string exists in the example project of the Gallery lib you are using.
grep -r requires .
returns:
./Gallery-2.2.0/Example/GalleryDemo/GalleryDemo/Info.plist: <string>This app requires access to camera</string>
./Gallery-2.2.0/Example/GalleryDemo/GalleryDemo/Info.plist: <string>This app requires access to photo library</string>
That might have several reasons:
wrong plist
You do not use the .plist you posted but the one above
Xcode caching
You are using the same bundle id as you already used for running the Gallery sample code. To make sure no cache is used:
close Xcode
Delete the app from device / simulator
clean derived data
open Xcode, build & run
I submitted app to App Store but it was rejected twice because they were unable to install the app on iPhone and iPad. They said the UIRequiredDeviceCapabilities key in the Info.plist is set in such a way that the app will not install on an iPhone and iPad.
They wrote that the next steps are:
To resolve this issue, please check the UIRequiredDeviceCapabilities
key to verify that it contains only the attributes required for your
app features or the attributes that must not be present on the device.
Attributes specified by a dictionary should be set to true if they are
required and false if they must not be present on the device.
After first submit I removed completely UIRequiredDeviceCapabilities key, but they still weren't able to install it.
I don't have iPhone or iPad, I tested app on simulators and it worked normally.
Here is my info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>3</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiresFullScreen</key>
<false/>
<key>UIStatusBarHidden</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
Does anyone know how to modify it so that it can be installed on iPhones and iPads?
UIRequiredDeviceCapabilities must be present in your Info.plist, as per the documentation.
In all apps that I have on the App Store, this is what I have:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
so I'd suggest you try that.
I got an error,
The data couldn’t be read because it isn’t in the correct format.
Now I am making iPhone app by swift.
I added several codes to Info.plist of my app, I deleted these codes.
But when I wanna open Info.plist of my app, this error happen.I do not know why because I deleted all codes which I added.And I think format is really fixed.
My Info.plist is like
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UILaunchStoryboardName</key>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
How can I fix this?
You've duplicated key in the info.plist file, remove the following key in the beginning
<key>UILaunchStoryboardName</key>
and it will resolve the issue.
Try something below:
Right click on Info.plist -> Source Code -> Discard Change
I was Building flutter project , and the problem was missing <string> for key io.flutter.embedded_views_preview adding <string></string> fixed my issue , i didn't update the info.plist though it was as created by flutter , hope this will help someone using flutter
I have a problem with the publication app in the App Store. Support for iTunes immediately rejects the application, and "Code-Level Support" have not answered from two months.
iTunes Support reply below message to brief the rejection:
Performance - 2.3
We were unable to install the app on iPhone 6s and iPad Air. The UIRequiredDeviceCapabilities key in the Info.plist is set in such a way that the app will not install on an iPhone 6s and iPad Air.
Next Steps
Please check the UIRequiredDeviceCapabilities key to verify that it contains only the attributes required for your app features or the attributes that must not be present on the device. Attributes specified by a dictionary should be set to true if they are required and false if they must not be present on the device.
App works fine on iPhone 6s and iPad Air using Xcode "Build Configuration" => "Release"
info.plist file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>wHere is 24 - POI Search</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>2</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Zezwól, aby móc zrobić zdjęcie.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Aplikacja wymaga dostępu do GPS, inaczej nie będzie poprawnie działać.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Aplikacja wymaga dostępu do GPS, inaczej nie będzie poprawnie działać.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Zezwól, aby móc wybrać zdjęcie z galerii zdjęć.</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>MainApp</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>AppleLanguages</key>
<array>
<string>en</string>
</array>
</dict>
</plist>
UIRequiredDeviceCapabilities key is essentially saying to install ONLY on devices with armv7 processors. Try removing the armv7 key from the info.plist
I'm trying to upload an iOS application to iTunes Connect, however every time I attempt to upload the application I get the following message:
Performance - 2.3
We were unable to install the app. The UIRequiredDeviceCapabilities
key in the Info.plist is set in such a way that the app will not
install.
Next Steps
Please check the UIRequiredDeviceCapabilities key to verify that it
contains only the attributes required for your app features or the
attributes that must not be present on the device. Attributes
specified by a dictionary should be set to true if they are required
and false if they must not be present on the device.
I don't understand what I'm doing wrong with the UIRequiredDeviceCapabilities.
My application requires the device to have a camera as it involves reading a QR code.
The following is my info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>still-camera</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>pw.whatsyourwifi.ios</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>5</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
I have looked at a number of resources provided by Apple such as:
Expected App Behaviours
List of Possible Values
Any help is appreciated, just don't know what I'm doing wrong at this point.
FYI, this was resolved for me when I simply replied to the app rejection stating that my plist file was correct per the docs (assuming yours is correct to your app and the docs). They accepted me.
The contents of UIRequiredDeviceCapabilities must be a dictionary, not an array; the capability is used as a key in the dictionary, and the value must be set to a boolean true or false to indicate whether the device must have the capability, or must not have the capability.
(The utility of prohibiting capabilities in an app is a little questionable. I'm not sure why it'd make sense to have an app that would refuse to install on a device with a camera, for instance. But that's what Apple put in there, so…)
In your case, this would look like:
<key>UIRequiredDeviceCapabilities</key>
<dict>
<key>still-camera</key>
<true/>
</dict>