Reputation: 8995
Using iOS 10.0
last beta. I had tried to use Camera to scan barcode in my app, and it crashed with this runtime 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 NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
Put this key into the plist, but it still crashed?
Upvotes: 190
Views: 215696
Reputation: 6593
After iOS 10 you have to define and provide a usage description of all the system’s privacy-sensitive data accessed by your app in Info.plist as below:
Calendar
Key : Privacy - Calendars Usage Description
Value : $(PRODUCT_NAME) calendar events
Reminder :
Key : Privacy - Reminders Usage Description
Value : $(PRODUCT_NAME) reminder use
Contact :
Key : Privacy - Contacts Usage Description
Value : $(PRODUCT_NAME) contact use
Photo :
Key : Privacy - Photo Library Usage Description
Value : $(PRODUCT_NAME) photo use
Bluetooth Sharing :
Key : Privacy - Bluetooth Peripheral Usage Description
Value : $(PRODUCT_NAME) Bluetooth Peripheral use
Microphone (also used for video recording) :
Key : Privacy - Microphone Usage Description
Value : $(PRODUCT_NAME) microphone use
Camera (photo or video recording) :
Key : Privacy - Camera Usage Description
Value : $(PRODUCT_NAME) camera use
Location :
Key : Privacy - Location Always Usage Description
Value : $(PRODUCT_NAME) location use
Key : Privacy - Location When In Use Usage Description
Value : $(PRODUCT_NAME) location use
Heath :
Key : Privacy - Health Share Usage Description
Value : $(PRODUCT_NAME) heath share use
Key : Privacy - Health Update Usage Description
Value : $(PRODUCT_NAME) heath update use
HomeKit :
Key : Privacy - HomeKit Usage Description
Value : $(PRODUCT_NAME) home kit use
Media Library :
Key : Privacy - Media Library Usage Description
Value : $(PRODUCT_NAME) media library use
Motion :
Key : Privacy - Motion Usage Description
Value : $(PRODUCT_NAME) motion use
Speech Recognition :
Key : Privacy - Speech Recognition Usage Description
Value : $(PRODUCT_NAME) speech use
SiriKit :
Key : Privacy - Siri Usage Description
Value : $(PRODUCT_NAME) siri use
TV Provider :
Key : Privacy - TV Provider Usage Description
Value : $(PRODUCT_NAME) tvProvider use
You can get detailed information in this link.
Upvotes: 270
Reputation: 1
My problem was solved by the fact that I added a field in the application target, since this field did not exist.
Upvotes: 0
Reputation: 177
For those that like myself are testing an Ionic project and have to add privacy permission keys, make sure you add them in the right .plist
file. The best way to find it is to use Xcode search, the one with your app name is the one. I share a screenshot with a circle around the right Info.plist
you need to modify. I had lost time modifying the other one in the library folder and resulted in errors about privacy. Hope this screenshot helps. In my case at the bottom of the file I clicked on +
and scrolled until I found Privacy - Camera usage description
, I inserted the short description used for Qrcodes
and worked
Upvotes: 1
Reputation: 598
I had the same problem and could not find a solution. Mark90 is right there are a lot info.plist files and you should edit the correct. Go to Project, under TARGETS select the project (not the tests), in the tab bar select Info and add the permission under "Custom iOS Target Properties".
Upvotes: 2
Reputation: 71
I checked the plist and found it is not working, only in the "project" info, you need to add the "Privacy - Camera ....", then it should work. Hope to help you.
Upvotes: 2
Reputation: 91
If you're using Ionic, you can solve it directly from config.xml by adding inside platform ios tag:
<platform name="ios">
.
.
.
<config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
<string>photo library usage description</string>
</config-file>
<config-file target="*-Info.plist" parent="NSCameraUsageDescription">
<string>camera usage description</string>
</config-file>
.
.
.
</platform>
I'd like to thank @BHUPI answer too.
Upvotes: 8
Reputation: 1651
For those who are still getting the error even though you added proper keys into Info.plist:
Make sure you are adding the key into correct Info.plist. Newer version of xCode, apparently has 3 Info.plist.
One is under folder with your app's name which solved problem for me.
Second is under YourappnameTests and third one is under YourappnameUITests.
Hope it helps.
Upvotes: 6
Reputation: 83
You do this by adding a usage key to your app’s Info.plist together with a purpose string. NSCameraUsageDescription Specifies the reason for your app to access the device’s camera
Upvotes: 2
Reputation: 664
the xcode UI has changed a bit from one version to the next so here is where you update the plist for 9.0 beta 4 if it helps Project ->Target ->Info
Upvotes: 29
Reputation: 4244
Use these raw values and copy in info.plist
<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) calendar events</string>
<key>NSRemindersUsageDescription</key>
<string>$(PRODUCT_NAME) reminder use</string>
<key>NSCameraUsageDescription</key>
<string>This app requires to access your photo library to show image on profile and send via chat</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app requires to access your microphone to record video with your voice send via chat</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires to access your photo library to show image on profile and send via chat</string>
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contact use</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
Upvotes: 51
Reputation: 307
Another instance that I faced while trying to use the camera, was that it was still busy crashing giving same _CRASHING_DUE_TO_PRIVACY
even after adding the "Camera Usage Description". After failing to get anything tangible from the call stack, switched to the "Organizer" and looked into the crash reports on the device. I found that it was in fact complaining about the privacy due to the missing "Microphone Usage Description". I added that and got rid of such a cryptic break down.
Upvotes: 4
Reputation: 3488
You have to add this below key in info.plist.
NSCameraUsageDescription
Or
Privacy - Camera usage description
And add description of usage.
Detailed screenshots are available in this link
Upvotes: 68
Reputation: 3343
Alternatively open Info.plist as source code and add this:
<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
Upvotes: 63
Reputation: 7019
As Apple has changed how you can access any user private data types in iOS 10
.
You need to add the "Privacy - Camera usage description
" key to your app’s Info.plist
and their usage information which is apply for your application, as in below example I had provided that I have used to scan barcodes.
For more information please find the below screenshot.
Upvotes: 129