When I upload to iTunes Connect, my app gets the error that the NSCalendarsUsageDescription
privacy is not provided. I am aware that this information is now mandatory, however I am not aware what and where my app uses something that would require this privacy usage description.
What is my app doing/using that it requires a NSCalendarsUsageDescription
?
Dear developer,
We have discovered one or more issues with your recent delivery for "MyApp". To process your delivery, the following issues must be corrected:
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
Edit: Not a duplicate because of the fact that the solution didn't work as I already commented on the first answer AND the fact that the possible duplicate doesn't actually answer the question what (generally) makes this usage description required.
According to apples documentation:
it then goes on to explain how to implement it:
Basically just insert this into you
info.plist
fileyou can read more about cocoa keys here
Update you Info.plist file by adding permission base on your rejection mail or error log.
NSCameraUsageDescription
NSContactsUsageDescription
NSPhotoLibraryUsageDescription
NSBluetoothPeripheralUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSVideoSubscriberAccountUsageDescription
NSSpeechRecognitionUsageDescription
NSCalendarsUsageDescription
OR
Resolving the Privacy-Sensitive Data App Rejection
https://developer.apple.com/library/content/qa/qa1937/_index.html
For anyone wondering why all of a sudden your app now has all these permission settings in the first place it could be because of CocoaPods or Carthage - they put in hooks to all of these permissions. I just upgraded my app to use
cordova-plugin-firebasex
which has an extensive Cocoapods (and dependencies) installation. You can turn these permissions off BEFORE you install cocoapods into your project by putting aPermissionsConfiguration.xcconfig
in the root of your project - you can read more about this here: https://cocoapods.org/pods/Permission#installationThis all surprised me when the new version of my app was rejected with 7 permissions
key/string
missing from Info.plist file. I then had to dig into my project to find what was causing this since my app doesn't need or use any of these permissions (never has).It may exist but at the moment I can't find a way to remove permissions after pods integration...going to have to dig around on how to do this without starting my project over.
You could try using
nm
tool to look for EventKit specific symbols in your frameworks binaries, something like:Or one-liner (look for files without extension, also ignore CodeResources to reduce irrelevant output):
If there is such you will see something like:
Update to new version of AdMob SDK solved my issue.