50 Replies
      Latest reply: Feb 15, 2017 10:07 AM by edford RSS
      robhedin Level 1 Level 1 (0 points)

        Just tried to upload our app and got the following errors:

         

        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.

         

        This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

         

        This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.

         

         

        Just started getting this with the GM Seed and no prior versions. Note that we're not accessing the Calendar, Photo Library, or Bluetooth, so am very confused.

         

        I've also verified we're not linking to the EventKit, EventKitU, Photos, PhotosUI, or to the CoreBluetooth frameworks.

         

        Anyone else seeing this?

         

        rob.

        • Re: iOS 10 Error on Submit
          roostrr Level 1 Level 1 (0 points)

          Yes, I'm seeing that too. Do you use Firebase or AdMob? I'm wondering if that's why...

            • Re: iOS 10 Error on Submit
              roostrr Level 1 Level 1 (0 points)

              I can see in AdMob's module.modulemap file that it references the libraries associated with these permissions:

               

              framework module GoogleMobileAds {
                umbrella header "GoogleMobileAds.h"
              
                export *
                module * { export * }
              
                link framework "AdSupport"
                link framework "AudioToolbox"
                link framework "AVFoundation"
                link framework "CoreBluetooth"
                link framework "CoreGraphics"
                link framework "CoreMedia"
                link framework "CoreMotion"
                link framework "CoreTelephony"
                link framework "CoreVideo"
                link framework "EventKit"
                link framework "EventKitUI"
                link framework "Foundation"
                link framework "GLKit"
                link framework "MediaPlayer"
                link framework "MessageUI"
                link framework "OpenGLES"
                link framework "SafariServices"
                link framework "StoreKit"
                link framework "SystemConfiguration"
                link framework "UIKit"
              
              • Re: iOS 10 Error on Submit
                pranoy1c Level 1 Level 1 (0 points)

                I don't use admob, but do use GoogleSignIn via cocoapods which did install Firebase with it

                • Re: iOS 10 Error on Submit
                  kenmaz Level 1 Level 1 (0 points)

                  In my case, maybe GoogleMobileAds SDK and FBAudienceNetwork are trigger.

                   

                  nm Pods/Google-Mobile-Ads-SDK/GoogleMobileAdsSdkiOS-7.5.0/GoogleMobileAds.framework/GoogleMobileAds  | grep OBJC_CLASS | grep EKEvent
                                   U _OBJC_CLASS_$_EKEvent
                                   U _OBJC_CLASS_$_EKEventEditViewController
                                   U _OBJC_CLASS_$_EKEventStore
                                   U _OBJC_CLASS_$_EKEventStore
                  
                  nm Pods/FBAudienceNetwork/FBAudienceNetwork.framework/FBAudienceNetwork | grep UIImagePickerController
                                   U _OBJC_CLASS_$_UIImagePickerController
                  
                  
                  
                    • Re: iOS 10 Error on Submit
                      roostrr Level 1 Level 1 (0 points)

                      For the NSPhotoLibraryUsageDescription one, try scouring your own code. I'm now successfully submitting with AdMob without needing that description, and I had to eliminate some deprecated code that used UIImagePickerController to get to that point.

                    • Re: iOS 10 Error on Submit
                      hacknicity Level 2 Level 2 (70 points)

                      I use AdMob and get an issue referring to NSCalendarsUsageDescription. D a m n you Google!

                      • Re: iOS 10 Error on Submit
                        roostrr Level 1 Level 1 (0 points)

                        FWIW, I was able to resolve the NSPhotoLibraryUsageDescription need by eliminating some old code that used to pop up a UIImagePickerController.  I never called this code anymore, as my app no longer supports having user avatars, but it seems that some of the calls triggered a static analyzer.

                         

                        The bluetooth and calendar ones seem to be caused by AdMob, and it's unclear what we can do about that at this point. I hope Google releases an update that lifts these dependencies, and I plan to hold off on updates until that happens or I see what other developers do.

                        • Re: iOS 10 Error on Submit
                          roostrr Level 1 Level 1 (0 points)

                          Confirmed that NSCalendarsUsageDescription and NSBluetoothPeripheralUsageDescription are directly related to AdMob. When I remove just AdMob and resubmit, I no longer get a warning about either requirement.

                        • Re: iOS 10 Error on Submit
                          dave-3 Level 1 Level 1 (10 points)

                          I'm seeing the error about NSPhotoLibraryUsageDescription, but not the others. We access the camera, and have that usage description, but don't access the photo library.

                           

                          Some 3rd party code we use: Crittercism, Adobe Target, Mitek MiSnap, Contentful, Realm.

                           

                          We did not see this error when uploading to TestFlight with Xc8 beta 6.

                          • Re: iOS 10 Error on Submit
                            pranoy1c Level 1 Level 1 (0 points)

                            i just started facing this issue too with the GM release. I received an email saying:

                             

                            "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 NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

                             

                            Once the required corrections have been made, you can then redeliver the corrected binary.

                            Regards,

                            The App Store team"

                             

                            I don't use admob, but do use GoogleSignIn via cocoapods which did install Firebase with it.

                            Is there something we can do other than having to define these keys as my app has nothing to do with camera / photos etc and hence I don't want users to think we are using them.

                            • Re: iOS 10 Error on Submit
                              d--buzz Level 1 Level 1 (0 points)

                              Received the same message and I have admob.

                              • Re: iOS 10 Error on Submit
                                Mevisek Level 1 Level 1 (0 points)

                                Received the exact same message after uploading to itunes connect using the GM Seed. Not accessing any camera / photos features.

                                • Re: iOS 10 Error on Submit
                                  christophfromkonstanz Level 1 Level 1 (0 points)

                                  I am too receiving that for NSCalendarsUsageDescription, NSBluetoothPeripheralUsageDescription and NSMicrophoneUsageDescription. My app uses neither of those features, so I guess it has to do with some third party lib.

                                  • Re: iOS 10 Error on Submit
                                    renderpaz Level 1 Level 1 (0 points)

                                    I'm seeing the NSCalendarsUsageDescription rejection as well with Xcode 8 GM.

                                     

                                    Third party code I'm using: AdColony, UnityAds, Vungle, Chartboost, OneSignal.

                                    • Re: iOS 10 Error on Submit
                                      yoni Level 1 Level 1 (0 points)

                                      For us the NSPhotoLibraryUsageDescription was solved by not using the BlocksKit/UIKit subpod, which contains an extension to UIImagePickerController that we didn't need

                                      • Re: iOS 10 Error on Submit
                                        dave-3 Level 1 Level 1 (10 points)

                                        I noticed that we are using UIImagePickerController to detect if a camera and video are available. I've nm'd all of the third party libs and scoured our code and that's the only thing I can see that might be triggering the NSPhotoLibraryUsageDescription message. I can't validate that that is the cause at the moment, but I'm suspicious.

                                         

                                        We never access the photo library; all we do is:

                                           let hasCamera = UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera)
                                           let mediaTypes = UIImagePickerController.availableMediaTypes(for: UIImagePickerControllerSourceType.camera)
                                        
                                        
                                        

                                        but maybe Apple's scanner is flagging the entire UIImagePickerController class as requiring the photo library usage string.

                                         

                                        Some 3rd party code we use: Crittercism, Adobe Target, Mitek MiSnap, Contentful, Realm.

                                        Not using AdMob or anything like that. We only get the NSPhotoLibraryUsageDescription error on submission, and that just started with Xc8GM.

                                          • Re: iOS 10 Error on Submit
                                            roostrr Level 1 Level 1 (0 points)

                                            I suspect that referencing the class may be enough to trigger it. I also had just a few references to UIImagePickerController (impossible to reach code), and removing them fixed it for me.

                                          • Re: iOS 10 Error on Submit
                                            edford Apple Staff Apple Staff (375 points)

                                            Starting with iOS 10, purpose strings are required for access to any protected class of data from within your app, including usage of those protected data classes by any 3rd party library your app uses. If you are receiving a message about a missing purpose string for a data class you don't recognize, consult with your 3rd party library vendors about their usage of that protected data class.

                                             

                                            For more detailed information, consult the following resources:

                                              • Re: iOS 10 Error on Submit
                                                PocketCampus.Org Level 1 Level 1 (0 points)

                                                Thank you for the precision.

                                                 

                                                I have the same problem, for NSCalendarsUsageDescription, NSPhotoLibraryUsageDescription, and NSCameraUsageDescription.

                                                 

                                                I've tried providing localized strings for these keys in InfoPlist.strings of my main app target, but the build is still rejected. I'm using CocoaPods.

                                                 

                                                Any idea ?

                                                 

                                                Thanks,

                                                 

                                                Loïc

                                                • Re: iOS 10 Error on Submit
                                                  KingWulfgar Level 1 Level 1 (0 points)

                                                  This answer is a joke. We are getting the rejection for NSBluetoothPeripheralUsageDescription and our app does NOTHING with BT. It doesn't open any BT connections, use any peripherals, nothing. It also doesn't seem to have the crashing problem (which you get if you don't request the access properly with iOS 10 SDK) exhibited by others. We use a few 3rd party libraries (the only one I can think that even does communication-level stuff is AFNetworking, but I don't know why it would just trigger this message automatically). We don't use Admob that was mentioned earlier.

                                                   

                                                  We even opened a code-level DTS case (which you have to pay for) on this issue and all they did was direct us here to this non-answer. I suspect Apple has a problem with their Xcode 8/iOS10 SDK submittal tools on their backend, but I can't prove it and if the past is any indication, they'll just quietly fix it and never admit to a problem. We ended up including the plist key and a generic string for it and were able to submit it that way. Not a great solution, but it worked for us.

                                                    • Re: iOS 10 Error on Submit
                                                      hacknicity Level 2 Level 2 (70 points)

                                                      Your app will have a refence somewhere to bluetooth in order to trigger the validation error. If it's not in your code, then it'll be in one of the 3rd party libraries. A crash would only occur if that code was executed (without an Info.plist entry), but iTunes Connect can't tell if the code will actually be executed, it is just checking the binary to see if there are references to these objects which *could* be executed.

                                                       

                                                      It is frustrating that this validation check has only just been enabled because this issue would have been discovered many weeks ago during TestFlight testing.

                                                    • Re: iOS 10 Error on Submit
                                                      pkirvan Level 1 Level 1 (20 points)

                                                      Can't get this to go away even after adding the string and cleaning the build folder. Very annoying.

                                                      • Re: iOS 10 Error on Submit
                                                        kmagier Level 1 Level 1 (0 points)

                                                        Usage of which classes raises requirement for specifying NSPhotoLibraryUsageDescription key in Info.plist?

                                                        I'm not accessing photos library in my app, so I don't want to ask user for permission. Instead I'd like to edit certain unused part of code that causes trouble, most likely in one of 3rd party libraries I'm using.

                                                      • Re: iOS 10 Error on Submit
                                                        kevcolLabs Level 1 Level 1 (0 points)

                                                        Here's a link to a workaround from Google: https://groups.google.com/d/msg/google-admob-ads-sdk/UmeVUDrcDaw/HIXR0kjUAgAJ

                                                         

                                                        TL;DR version: Add the following to your plist

                                                         

                                                        <key>NSCalendarsUsageDescription</key> <string>Advertisement would like to create a calendar event.</string> <key>NSPhotoLibraryUsageDescription</key> <string>Advertisement would like to store a photo.</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>Advertisement would like to use bluetooth.</string>

                                                        • Re: iOS 10 Error on Submit
                                                          darkschneiderds Level 1 Level 1 (0 points)

                                                          Working with Unity and having the same annoying problem but with the camera. Is Unity requesting using the camera in some way?

                                                           

                                                          • "The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data."

                                                           

                                                           

                                                            • Re: iOS 10 Error on Submit
                                                              Revoemag Level 1 Level 1 (0 points)

                                                              I'm also having this problem with an existing unity app that we're updating today.

                                                               

                                                              Can anyone post what would be acceptable language to add to the string to get this approved?  We aren't rebuilding the app (this was a screen shot update only) so removing the offending framework isn't an option.

                                                            • Re: iOS 10 Error on Submit
                                                              IvyKun Level 1 Level 1 (0 points)

                                                              I was having the same problem with NSCalendarsUsageDescription, NSPhotoLibraryUsageDescription and NSCameraUsageDescription.

                                                               

                                                              I'm working with Unity 5.4 and Heyzap, Chartboost and Unity Ads. I updated the heyzap sdk to the 9.6.8 version that it's supposed to fix this.

                                                              The calendar and photolibrary errors are gone, but the NSCameraUsageDescription problem is still there. I'm wondering now if is a Heyzap problem or maybe Chartboost or Unity but I can't find anything


                                                              Any way of validating this before submitting the build?

                                                                • Re: iOS 10 Error on Submit
                                                                  MaxGabriel Level 1 Level 1 (0 points)

                                                                  The latest Heyzap SDK should be clear of any of those warnings. I would update all your third party SDKs to the latest version to try to fix this problem. Even if the Heyzap website doesn't offer those versions as a download, new versions are almost always compatible.

                                                                   

                                                                  Sorry about the hassle,

                                                                  Max, iOS engineer at Heyzap

                                                                • Re: iOS 10 Error on Submit
                                                                  rlbIII Level 1 Level 1 (0 points)

                                                                  Yep. We're seeing this with the Photo Library. We don't reference it in the native code, so likely it's in the Vasco libraries we're using.

                                                                  • Re: iOS 10 Error on Submit
                                                                    JonasTG Level 1 Level 1 (0 points)

                                                                    I have the same problem, is there a fix known now ?

                                                                      • Re: iOS 10 Error on Submit
                                                                        saad_khan1875 Level 1 Level 1 (0 points)

                                                                        add following code in plist then no issue,add more resons regarding bluetooth like this my,delivery is succefull with xcode 8 with this,open plist with texteditor and paste it

                                                                         

                                                                        <key>NSCalendarsUsageDescription</key>

                                                                        <string>Some ad content may access calendar</string>

                                                                        <key>NSCalendarsUsageDescription</key>

                                                                        <string>Some ad content may access calendar</string>

                                                                      • Re: iOS 10 Error on Submit
                                                                        marellis Level 1 Level 1 (0 points)

                                                                        After adding the folling details into the plist also still its crashes for me, i am using Xcode 8.2.1

                                                                         

                                                                        <key>NSCalendarsUsageDescription</key>

                                                                        <string>Some ad content may access calendar</string>

                                                                        <key>NSRemindersUsageDescription</key>

                                                                        <string>Some ad content may access reminder</string>

                                                                         

                                                                        Any help ????