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 provided info.plist
with proper keys description your application will crash if build using XCode - 8 beta.
Access to photos can also be controlled via Settings. To adjust access for your camera go to Settings → Privacy → Photos, choose Camera+ from the list. Change permissions to the new Selected Photos option to manually pick Photos items Camera+ will see. To change those selections, tap Edit Selected Photos.
Step 1: Go to Settings > Privacy. Step 2: Tap on Camera to see which apps have access to it. You can allow or block apps using Camera from here.
[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:
https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html
(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
Alternatively, you can open Info.plist
as source code:
Source
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
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.
Please find below codes for ios 10 request permission sample for info.plist
.
You can modify for your custom message.
<key>NSCameraUsageDescription</key> <string>${PRODUCT_NAME} Camera Usage</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>${PRODUCT_NAME} BluetoothPeripheral</string> <key>NSCalendarsUsageDescription</key> <string>${PRODUCT_NAME} Calendar Usage</string> <key>NSContactsUsageDescription</key> <string>${PRODUCT_NAME} Contact fetch</string> <key>NSHealthShareUsageDescription</key> <string>${PRODUCT_NAME} Health Description</string> <key>NSHealthUpdateUsageDescription</key> <string>${PRODUCT_NAME} Health Updates</string> <key>NSHomeKitUsageDescription</key> <string>${PRODUCT_NAME} HomeKit Usage</string> <key>NSLocationAlwaysUsageDescription</key> <string>${PRODUCT_NAME} Use location always</string> <key>NSLocationUsageDescription</key> <string>${PRODUCT_NAME} Location Updates</string> <key>NSLocationWhenInUseUsageDescription</key> <string>${PRODUCT_NAME} WhenInUse Location</string> <key>NSAppleMusicUsageDescription</key> <string>${PRODUCT_NAME} Music Usage</string> <key>NSMicrophoneUsageDescription</key> <string>${PRODUCT_NAME} Microphone Usage</string> <key>NSMotionUsageDescription</key> <string>${PRODUCT_NAME} Motion Usage</string> <key>kTCCServiceMediaLibrary</key> <string>${PRODUCT_NAME} MediaLibrary Usage</string> <key>NSPhotoLibraryUsageDescription</key> <string>${PRODUCT_NAME} PhotoLibrary Usage</string> <key>NSRemindersUsageDescription</key> <string>${PRODUCT_NAME} Reminder Usage</string> <key>NSSiriUsageDescription</key> <string>${PRODUCT_NAME} Siri Usage</string> <key>NSSpeechRecognitionUsageDescription</key> <string>${PRODUCT_NAME} Speech Recognition Usage</string> <key>NSVideoSubscriberAccountUsageDescription</key> <string>${PRODUCT_NAME} Video Subscribe Usage</string>
iOS 11 and plus, If you want to add photo/image to your library then you must add this key
<key>NSPhotoLibraryAddUsageDescription</key> <string>${PRODUCT_NAME} library Usage</string>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With