0

When trying to submit the app, I get the following error:

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.

I know I could just add a description to make the new validator happy, but my app doesn't use the user calendar, so I'd rather eliminate the dependency that uses it, if possible. I wasn't able to figure out how do I find out which dependency actually uses the calendar, how do check this?

My project has the following dependencies:

pod 'SnapKit', '0.22.0'
pod 'FBSDKCoreKit'
pod 'Alamofire', '~> 3.5'
pod "AFNetworking", '~> 3.1'
pod 'SDWebImage'      
pod 'TTTAttributedLabel'
pod 'Masonry'
pod 'CocoaLumberjack/Swift', '2.3'
pod 'SZTextView'
pod 'HockeySDK', :subspecs => ['CrashOnlyLib']
pod 'GoogleMaps'
pod 'BugfenderSDK'
pod 'AppsFlyerFramework', '4.5.0'
pod 'CHTCollectionViewWaterfallLayout'
pod 'Firebase'
pod 'Firebase/Messaging'
pod 'CRToast', '~> 0.0.7'
pod 'Google-Mobile-Ads-SDK'
pod 'UIColor_Hex_Swift', :git => 'https://github.com/yeahdongcn/UIColor-Hex-Swift.git', :tag => '2.3'

And the linked frameworks:

List of linked frameworks

lawicko
  • 7,246
  • 3
  • 37
  • 49
  • check this link http://stackoverflow.com/questions/39440016/itunes-connect-upload-rejected-with-invalid-binary-because-of-missing-nscalendar . See one of comment given by rmaddy for finding which method is accessing private information by searching within your code – Amod Gokhale Nov 07 '16 at 13:43
  • @AmodGokhale thanks, but I have tried that already, I don't have such calls in my workspace. – lawicko Nov 08 '16 at 09:55
  • it's better to open a technical ticket with apple and let them point out which method is requesting for permission instead of just guessing it's admob. – Amod Gokhale Nov 08 '16 at 12:22
  • @AmodGokhale Fair point, but I thought there might already be a way to figure this out without asking Apple, which I hoped would be quicker. – lawicko Nov 08 '16 at 15:44

2 Answers2

1

So I have contacted Apple, and they actually have a nice list of all the APIs and the permissions that they require. You can find it here (Technical Q&A QA1937).

lawicko
  • 7,246
  • 3
  • 37
  • 49
0

i think it's helpful for information for you.

I can see in Google-Mobile-Ads-SDK file that it references the libraries associated with these permissions. and also Google's frameworks for AdMob and GoogleSignIn installs firebase automatically which uses such permissions even though the app never does. After I defined NSCameraUsageDescription in the info.plist, it let me submit without problem hoping that the app won't prompt the user ever so they won't see the text either.

Many Advertising SDKs, such as AdMob, have EventKit as a required framework. Until then you can workaround by adding NSCalendarsUsageDescription to your info.plist. I also had to do the same with NSBluetoothPeripheralUsageDescription

Edit: Very important to also add the NSPhotoLibraryUsageDescription one as well see: https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/UmeVUDrcDaw

Ravi Dhorajiya
  • 1,531
  • 3
  • 21
  • 26