I'm running my project which was working fine previously but after updating my xcode my app crashes and giving this 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
Privacy Settings in iOS 10
A significant change in iOS 10 is that you must declare ahead of time any access to private data or your App will crash.
Once you link with iOS 10 you must declare access to any user private data types. You do this by adding a usage key to your app’s Info.plist together with a purpose string. The list of frameworks that count as private data is a long one
Contacts, Calendar, Reminders, Photos, Bluetooth Sharing, Microphone, Camera, Location, Health, HomeKit, Media Library, Motion, CallKit, Speech Recognition, SiriKit, TV Provider.
You need to put the NSCameraUsageDescription in your plist.
Like
<key> NSCameraUsageDescription </key>
<string>$(PRODUCT_NAME) uses Cameras</string>
for e.g
Check all the usage descriptions here.
I solved this problem on my simulator by adding the following entry in the info.plist
I havent tried above on real device using camera, I think for that you have to enter the following value as well,
I am using iOS 10.2
@Anbu's answer has an extra space which throws an exception. The Info.plist entry should look as follows
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) uses camera</string>
My won't even prompt me. I inserted the SKAdNetworkItems key, and NSUserTrackingUsageDescription key. I also have multiple info.plist for localization which all of them I updated with the keys.
I ran ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
function and it's crashing. Crash log says: "This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data."
But I never received a prompt asking for tracking permission
extension ViewController: GADFullScreenContentDelegate {
func loadVideoAd() {
func load(){
let request = GADRequest()
GADInterstitialAd.load(withAdUnitID: GoogleAdKeys.Interstitial, request: request, completionHandler: { ad, error in
if let error = error {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
return
}
self.interstitial = ad!
self.interstitial.fullScreenContentDelegate = self
})
}
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
switch status{
case .notDetermined:
break
case .restricted:
break
case .denied:
break
case .authorized:
load()
@unknown default:
break
}
})
} else {
// Fallback on earlier versions
load()
}
}
func playVideoAd() {
interstitial.present(fromRootViewController: self)
}
}
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