iOS 10 GM release error when submitting apps "app attempts to access privacy-sensitive data without a usage description" due to GoogleSignIn, AdMob

41,608

Solution 1

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

More info at that link, but TL;DR version is you have to add three items 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>

Solution 2

in iOS 10 you need to add the key mentioned in below image if you are using camera or photo gallery in your appenter image description here

Solution 3

In iOS 10 Apple have made it a requirement to define the usage description in the Info.plist for any feature that requires a popup. See http://useyourloaf.com/blog/privacy-settings-in-ios-10/

During the beta program, apps would crash at the time they would show the prompt if the usage description was not set.

It looks like the iTunes Connect validation tools have been changed to look for references in the app to classes that are associated with permission-related objects. If there isn't an Info.plist entry, they reject the binary.

I saw this in one of my own apps where I had an old helper method in a library that detected whether the camera existed or not. Even though the app never called that method, it was being linked into my binary because I did use another method in the same file. That app didn't use the camera and so didn't define the Info.plist entry. And it was rejected. I simply removed my helper method and moved the checks into the other apps that did use it.

However, AdMob seems to have references to the Calendar so an app I have which uses ads, and does not use the Calendar itself, can't be submitted. Thanks Google!

Solution 4

You have to permission of Camera in Info.Plist. goto Info.plist and add below code.

Key       :  Privacy - Camera Usage Description   
Value     :  $(PRODUCT_NAME) camera use

See this ref : enter image description here

Solution 5

Here is the all Privacy Keys, We need to manually add them into the Info.plist with short description.

•       Bluetooth Sharing – NSBluetoothPeripheralUsageDescription
•       Calendar – NSCalendarsUsageDescription
•       CallKit – NSVoIPUsageDescription
•       Camera – NSCameraUsageDescription
•       Contacts – NSContactsUsageDescription
•       Health – NSHealthShareUsageDescription & NSHealthUpdateUsageDescription
•       HomeKit – NSHomeKitUsageDescription
•       Location – NSLocationUsageDescription, NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription
•       Media Library – NSAppleMusicUsageDescription
•       Microphone – NSMicrophoneUsageDescription
•       Motion – NSMotionUsageDescription
•       Photos – NSPhotoLibraryUsageDescription
•       Reminders – NSRemindersUsageDescription
•       Speech Recognition – NSSpeechRecognitionUsageDescription
•       SiriKit – NSSiriUsageDescription
•       TV Provider – NSVideoSubscriberAccountUsageDescription
Share:
41,608

Related videos on Youtube

sudoExclaimationExclaimation
Author by

sudoExclaimationExclaimation

Updated on July 05, 2022

Comments

  • sudoExclaimationExclaimation
    sudoExclaimationExclaimation almost 2 years

    I just started facing this issue with the iOS 10 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 am using google GoogleSignIn. I am not using Firebase, but when installing GoogleSignIn with cocoa pods, I saw in the logs it automatically installed Firebase.

    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.

    I notice someone else has also faced this issue: https://forums.developer.apple.com/thread/62229

  • sudoExclaimationExclaimation
    sudoExclaimationExclaimation almost 8 years
    You are correct. Google's frameworks for AdMob and GoogleSignIn installs firebase automatically which uses such permissions even though the app never does. After I defined NSCameraUsageDescription, it let me submit without problem hoping that the app won't prompt the user ever so they won't see the text either. But google really should fix this, this sounds like some super shady thing of spying via camera or something.
  • sudoExclaimationExclaimation
    sudoExclaimationExclaimation almost 8 years
    You are correct. Google's frameworks for AdMob and GoogleSignIn installs firebase automatically which uses such permissions even though the app never uses the camera. After I defined NSCameraUsageDescription, it let me submit without problem hoping that the app won't prompt the user ever so they won't see the text either. But google really should fix this, this sounds like some super shady thing of spying via camera or something.
  • sudoExclaimationExclaimation
    sudoExclaimationExclaimation almost 8 years
    this seems to be missing the "NSCameraUsageDescription" though which mine was complaining about
  • Admin
    Admin almost 8 years
    With Version 7.11.0 of their SDK, this is no longer required, just updated and it works.
  • user1568901
    user1568901 over 7 years
    How do you do this? Info.plist appears to be a binary file. I can read the key names, but they're surrounded by bunches of nonsense characters.
  • Naman Vaishnav
    Naman Vaishnav over 7 years
    i added this thing into plist file but still facing same issue . . . still getting same mail after the build process. .
  • user102008
    user102008 over 7 years
    CallKit doesn't need authorization or usage description