30

After adding GPUImage to my Xcode project, my app is getting denied for Missing an Info.plist key for NSCameraUsageDescription.

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.

I have added the key and description to my plist in several different ways and over 10 builds have all gotten the same denial error.

Here is my info.plist with the Camera Usage key at the bottom.

Snap of my info.plist

Any ideas on why I still get denied when I clearly have this defined in my plist?

rmaddy
  • 314,917
  • 42
  • 532
  • 579
Chris
  • 331
  • 1
  • 3
  • 10
  • 1
    According to https://stackoverflow.com/questions/39465687/ it is because your value is too short and/or vague. – MarkHu Oct 02 '18 at 21:01
  • 1
    Did you eventually solve this? I am stuck with the same problem - for a macOS app though. – tcurdt Aug 21 '19 at 13:17

13 Answers13

19

You need to put a particular and proper description to use Camera in your application. One my application is denied due to improper description. So try with a proper description, maybe it will help you.

<key>Privacy - Camera Usage Description</key>
<string>APPNAME requires access to your phone’s camera.</string>
Nirmalsinh Rathod
  • 5,079
  • 4
  • 26
  • 56
  • 1
    Thanks for the response, I made my description more specific and it is still denied.. – Chris Jun 22 '17 at 04:41
  • Are you using Gallery as well? – Nirmalsinh Rathod Jun 22 '17 at 04:45
  • I'm not even using camera, but I need GPUImage for some other internal image processing things and I think GPUImage has frameworks that may require camera. I only get the Camera usage error in the denial email though. – Chris Jun 22 '17 at 04:49
  • Yes sir. Maybe theres a way to remove the parts that require camera capability so I can just skip this problem completely? – Chris Jun 22 '17 at 05:00
  • In case someone doesn't know the `````` will be shown to your users while asking for permission, so you should be clear now what description should go there. – Mahesh Jamdade Feb 19 '21 at 12:40
  • The key is xcode key. If you are editing the plist file manually, use `NSCameraUsageDescription` – Capaj May 24 '22 at 10:22
18

Ok it is an old one but i'd share my experience... nothing was working for me. What i add to to was :

  • using Xcode to edit the plist.info. NOT in an external editor !!!!

  • DO NOT edit the text CREATE a new key using the + sign.

  • it will ask you to replace the previous (unless the previous one has been entered wrong... my case i think)

enter image description here

enter image description here

user10078
  • 681
  • 7
  • 7
14

Try the both Camera and Library permission in Plist.

<key>NSCameraUsageDescription</key>
<string>Access camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Library</string>
Bala
  • 1,224
  • 1
  • 13
  • 25
11

I know this is an older post, but for me, it took an hour to discover that I was not editing the correct Info.plist file, but the one for UI Tests. Double-check which one you are editing, it can be the cause.

DaniFoldi
  • 451
  • 4
  • 14
8

You should enter the purpose of using camera as the description. If it does not give the purpose app will get rejected.

you should add something like Appname requires to access camera for taking profile picture or Appname requires to access camera for uploading product images

From the apple: Check this link.

To protect user privacy, an iOS app linked on or after iOS 10.0, and that accesses the device’s camera, must statically declare the intent to do so. Include the NSCameraUsageDescription key in your app’s Info.plist file and provide a purpose string for this key. If your app attempts to access the device’s camera without a corresponding purpose string, your app exits.

Amal T S
  • 3,327
  • 2
  • 24
  • 57
  • Thanks for the response, I made my description more specific and it is still denied.. – Chris Jun 22 '17 at 04:41
  • What was the description that you gave? – Amal T S Jun 22 '17 at 04:43
  • Appname requires to access your camera to capture a picture and record a video. – Chris Jun 22 '17 at 04:45
  • It doesn't specify why you need to capture the photo or video. You should add something like "Appname requires to access camera for taking profile picture" or "Appname requires to access camera for uploading product images" – Amal T S Jun 22 '17 at 04:47
  • I am not sure why it gets rejected. In the case of Brad Larsons GPUImage, this post may help you. https://stackoverflow.com/a/26533864/7456236 . Its written by Brad Larson himself. – Amal T S Jun 22 '17 at 05:23
  • This addresses the OP's question directly. – RobMac Aug 05 '23 at 18:59
8

I have the same problem even I add the privacy-Camera Usage Description in the info.plist. I try to clean and rebuild the project. Reopen the Xcode. Everything doesn't work until I add the privacy-Camera Usage Description in the Custom ios Target Properties. Hope it solve your problem. enter image description here

Josepharaoh
  • 137
  • 2
  • 3
  • This is almost the same thing that fixed it for me. So, what you need to do is go to Project -> Packaging -> Info.plist File -> Debug and then add the path to your info plist file there. In my case the path was empty and XCode was simply not picking up my Info.plist file – random_coder_101 May 01 '22 at 17:37
  • You save my day! It works now. – Marcin Żmigrodzki Apr 01 '23 at 08:42
5

I got the same error as OP. I don't know why though because I wasn't using anything related to the camera in my app. So I included this as the description and worked.

"AppName does not use the camera to capture to take a profile picture or upload profile photos."

JBurton
  • 51
  • 1
  • 1
3

GPUImage is for capturing image and video, i guess adding Microphone permission might solve the issue

<key>NSCameraUsageDescription</key>
    <string>Need to access your camera to capture a picture and record a video.</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>Need to access your microphone to record a video.</string>
Developer
  • 822
  • 9
  • 23
3

try!

<key>NSCameraUsageDescription</key>
<string>Need to access your camera to capture a photo add and update profile picture.</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>Need to access your photo library to select a photo add and update profile picture</string>
Anand Khanpara
  • 846
  • 8
  • 8
  • 4
    This doesn't explain how or why the user should use this. Although more experienced developers might understand the raw format of a plist, the asker might not. Please add an explanation to support your response – D. Greg Mar 10 '20 at 18:25
1

For app store submission, The Usage description should briefly explain why we really needs that feature.

Description:

Camera Use

is too short and doesn't explains why we actually need camera.

It should be something like:

App Needs to use camera to take Profile picture

Lal Krishna
  • 15,485
  • 6
  • 64
  • 84
1

If you write Privacy - Camera Usage Description,

change to NSCameraUsageDescription

0

you have to put accurate condition in front of any policy, "camera use" is wrong here, and for this specific problem you have to put "AVCaptureDeviceInput" in front of privacy. Hope it will work for you.

For more you can go to this link and check other privacy policy as well. https://developer.apple.com/library/content/qa/qa1937/_index.html

let me know about the result.

Wiki
  • 1
  • 2
0

Try the following things:

  • Delete deriveddata
  • Make sure you are not editing the ones in test folders.
  • Increase development ios version to 11.0
grape100
  • 341
  • 4
  • 11