Question
iOS 10, Now Requires User Permission to Access Media Library, Photos, Camera
and other Hardware like these. The solution for this is to add their keys into
info.plist
with a description for user that how we are using their data,
I could only find a few keys
NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
I want to know if there are more keys also for other hardware as in iOS 10
if you haven't providedinfo.plist
with proper keys description your
application will crash if build using XCode - 8 beta.
Answer
[UPDATED privacy keys list to iOS 13 - see below]
There is a list of all Cocoa Keys
that you can specify in your Info.plist
file:
(Xcode: Target -> Info -> Custom iOS Target Properties)
iOS already required permissions to access microphone, camera, and media library earlier (iOS 6, iOS 7), but since iOS 10 app will crash if you don't provide the description why you are asking for the permission (it can't be empty).
Privacy keys with example description:
[Source](https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy- settings-in-ios-10.html)
Alternatively, you can openInfo.plist
as source code: [![source
code](https://tisunov.github.io/assets/map-address-picker/info-plist-as-
source-code.png)](https://tisunov.github.io/assets/map-address-picker/info-
plist-as-source-code.png)
[Source](https://tisunov.github.io/2017/03/26/mapaddresspicker-custom-ios- control-user-guide.html)
And add privacy keys like this:
<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>
List of all privacy keys: [UPDATED to iOS 13]
NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
Update 2019:
In the last months, two of my apps were rejected during the review because the camera usage description wasn't specifying what I do with taken photos.
I had to change the description from ${PRODUCT_NAME} need access to the camera to take a photo
to ${PRODUCT_NAME} need access to the camera to update your avatar
even though the app context was obvious (user tapped on
the avatar).
It seems that Apple is now paying even more attention to the privacy usage descriptions, and we should explain in details why we are asking for permission.